В основном я использую Ruby для этого, но мой план атаки пока таков:
Используйте гемы rdf, rdf-rdfa и либо rdf-microdata, либо mida для разбора данных по любомуURI.Я думаю, что было бы лучше сопоставить с единой схемой, такой как schema.org, например, взять этот файл yaml, который пытается описать преобразование между словарем данных и opengraph в schema.org:
# 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