Я в основном использую 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 и хотел бы знать тип «Вещи» (Вещь ) запись будет. Поэтому, если я проанализирую тип 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