Sto usando principalmente Ruby per farlo, ma il mio piano di attacco finora è come segue:Qual è il modo migliore per analizzare RDFa, Microdata, ecc, archiviare e visualizzare le informazioni usando uno schema/vocabolario uniforme (schema.org per esempio)
Utilizzare le gemme rdf, rdf-rdfa e rdf-microdata o mida per analizzare i dati forniti da qualsiasi URI. Penso che sarebbe meglio per mappare a uno schema uniforme come schema.org, ad esempio, prendere questo file YAML, che cerca di descrivere la conversione tra i dati-vocabolario e Opengraph a 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
posso quindi memorizzare le informazioni trovate in un formato e visualizzarle nuovamente con la sintassi schema.org.
L'altra parte è di tipo determinante. Modellerei i miei tavoli dopo schema.org e mi piacerebbe sapere il tipo di "Cosa" (Thing) sarebbe un record. Quindi, se analizzo un tipo di "barra" di tipo "opengraph", lo memorizzo come "BarOrPub" (BarOrPub).
C'è un modo migliore per farlo? Qualcosa di automatizzato? Una soluzione già là fuori? Qualsiasi input apprezzato.
EDIT:
Così ho constatato che questo analizza abbastanza bene (dove all_tags comprende i tag mi interessa come chiavi e schema.org equivalenti come valore):
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
Grazie per la convalida! L'approccio alternativo sembra il più pulito e affidabile. – imorsi