我主要使用Ruby來做到這一點,但我迄今爲止的攻擊計劃是如下所示:什麼是解析RDFa,Microdata等,使用統一架構/詞彙表存儲和顯示信息的最佳方式(例如schema.org)
使用gems rdf,rdf-rdfa和rdf-microdata或mida來解析給定URI的數據。我覺得這是最好映射到一個統一模式類似schema.org,例如採取何種試圖描述數據的詞彙和opengraph之間的轉換將schema.org這個YAML文件:
# Schema X to schema.org conversion
#data-vocabulary
DV:
name:name
street-address:streetAddress
region:addressRegion
locality:addressLocality
photo:image
country-name:addressCountry
postal-code:postalCode
tel:telephone
latitude:latitude
longitude:longitude
type:type
#opengraph
OG:
title:name
type:type
image:image
site_name:site_name
description:description
latitude:latitude
longitude:longitude
street-address:streetAddress
locality:addressLocality
region:addressRegion
postal-code:postalCode
country-name:addressCountry
phone_number:telephone
email:email
我可以然後存儲以一種格式發現的信息並用schema.org語法重新顯示它們。
另一部分是確定類型。我會在schema.org之後爲我的表建模,並且我想知道記錄的'Thing'(Thing)類型。所以如果我解析一個opengraph類型的'bar',我會將它存儲爲'BarOrPub'(BarOrPub)。
有沒有更好的方法來做到這一點?自動化的東西?已經有解決方案了嗎?任何輸入讚賞。
編輯:
所以我覺得這一分析相當不錯(其中包括all_tags我感興趣的密鑰和schema.org等同價值的標籤):
RDF::RDFa::Reader.open(url) do |reader|
reader.each_statement do |statement|
tag = statement.predicate.to_s.split('/')[-1].split('#')[-1]
Rails.logger.debug "rdf tag: #{tag}"
Rails.logger.debug "rdf predicate: #{statement.predicate}"
if all_tags.keys.include? tag
Rails.logger.debug "Found mapping for #{statement.predicate} and #{all_tags[tag]}"
results[all_tags[tag]] = statement.object.to_s.strip
end
end
end
感謝您的驗證!另一種方法聽起來像最乾淨和最可靠的。 – imorsi