私はこれを行うために主に Ruby を使用していますが、これまでの私の攻撃計画は次のとおりです。
gem rdf、rdf-rdfa、および rdf-microdata または mida のいずれかを使用して、任意の URI を指定してデータを解析します。schema.org のような統一スキーマにマッピングするのが最善だと思います。たとえば、data-vocabulary と 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
次に、見つかった情報を 1 つの形式で保存し、schema.org 構文で再表示できます。
他の部分はタイプを決定しています。schema.org に従ってテーブルをモデル化し、レコードが「モノ」( Thing ) のタイプを知りたいと考えています。したがって、「バー」の opengraph タイプを解析すると、「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