Как лучше всего анализировать RDFa, микроданные и т. Д., Сохранять и отображать информацию с использованием единой схемы / словаря (например, schema.org)

Я в основном использую Ruby для этого, но мой план атаки на данный момент следующий:

Используйте gems 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 ) будет записью. Поэтому, если я разбираю тип 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

5
задан Dan Brickley 23 October 2011 в 19:13
поделиться