Używam głównie Ruby, ale mój plan ataku do tej pory jest w następujący sposób:Jaki jest najlepszy sposób analizowania RDFa, mikrodanych, itp., Przechowywania i wyświetlania informacji z powrotem za pomocą jednolitego schematu/słownictwa (np. Schema.org)
Skorzystaj z klejnotów rdf, rdf-rdfa i rdf-microdata lub mida, aby analizować dane z dowolnym identyfikatorem URI. Myślę, że byłoby najlepiej, aby mapować do jednolitego schematu schema.org jak na przykład wziąć ten plik yaml który próbuje opisać konwersji pomiędzy danymi słownictwo i opengraph do 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
mogę następnie przechowuj informacje znalezione w jednym formacie i wyświetlaj je ponownie za pomocą składni schema.org.
Druga część to określenie typu. Modelowałem swoje tabele po schema.org i chciałbym wiedzieć, jaki jest typ "Thing" (Thing). Więc jeśli parsuję typ "paska" typu opengraph, zapisałbym go jako "BarOrPub" (BarOrPub).
Czy jest lepszy sposób to zrobić? Coś zautomatyzowanego? Rozwiązanie już tam jest? Wszelkie dane wejściowe zostały docenione.
EDIT:
Więc jestem stwierdzenia, że ten analizuje całkiem dobrze (gdzie all_tags zawiera tagów jestem zainteresowany jak klucze i schema.org jako ekwiwalent wartości):
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
Dziękujemy za sprawdzenie poprawności! Alternatywne podejście brzmi jak najczystsze i najbardziej niezawodne. – imorsi