2011-08-26 27 views
5

Bunu yapmak için çoğunlukla Ruby kullanıyorum ama şimdiye kadarki saldırı planım aşağıdaki gibi: herhangi bir URI verilen verileri ayrıştırmak için rdf rdf, rdf-rdfa ve rdf-microdata veya mida olan gems'i kullanın.RDFa, Microdata, vb. Ayrıştırmanın en iyi yolu nedir? Tekdüze bir şema/kelime bilgisi (örneğin, schema.org) kullanarak geri depolamak ve görüntülemek için gereken en iyi yoldur.

# 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 

elimden: Ben schema.org'da gibi tek tip şemaya haritasına örneğin schema.org'u veri-kelime ve opengraph arasında dönüşüm açıklamaya çalışır bu yaml dosyasını almak için en iyi olacağını düşünüyorum Daha sonra bilgileri tek bir biçimde saklayın ve bunları schema.org sözdizimi ile yeniden görüntüleyin.

Diğer bölüm belirleme türüdür. Schema.org'dan sonra tablolarımı örneklendiririm ve 'Thing' türünü (Thing) bilmek istiyorum. Yani bir opengraph türü 'bar' ayrıştırırsam, 'BarOrPub' (BarOrPub) olduğunu saklarım.

Bunu yapmanın daha iyi bir yolu var mı? Otomatik bir şey mi? Orada zaten bir çözüm var mı? Herhangi bir girdi takdir edildi.

DÜZENLEME:

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 

cevap

4

:

Bu yüzden bu oldukça iyi ayrıştırır bulma yaşıyorum (all_tags i tuşları ve değer olarak schema.org eşdeğeri olarak ilgilendiğim etiketleri içerir yerde) Orijinal soru için doğru yoldasınız. Aslında, structured-data.org linter'da benzer şeyler yapıyoruz. GitHub repo'yu kontrol etmeniz yararlı olabilir. Temel fikir, algılamayı biçimlendirmek ve uygun okuyucuyu (RDFa, Microdata veya neyse) seçmektir. Bir kez okunduğunda bir grafiğiniz olacak. Grafikteki her bir deyimden geçmek ve tablonuza göre eşlenen türler ve eşlemeler ile yeni bir çıktı grafiği oluşturmak isteyeceksiniz. Yani, örneğin, dv: kaynak grafikte bir yüklem olarak isim olarak, şema çıktı alabilirsiniz: çıktı grafiğinde isim.

Belirleme türü, uygun çıktı türüyle gelmek için bir eşleme tablosu gerektirir. OGP'nin aslında rdf: tipini kullanmadığını unutmayın, böylece ogp ile bir deyim bulmanız gerekir: type ve çıktı rdf: type ile eşlenmiş sınıf.

bir baykuş ile kelime oluşturmak olacaktır şeyi bir başka yaklaşım yolu: equivalentProperty/equivalentClass iddialarda ve orijinal grafik uygun üçe ekleme OWL gerektirme gerçekleştirin. Bu noktada Ruby'nin araç takımı (henüz) oldukça fazla değil.

+1

Doğrulama için teşekkürler! Alternatif yaklaşım, en temiz ve en güvenilir gibi geliyor. – imorsi

4

Schema.org eşlemeleriyle ilgili olarak, http://www.w3.org/wiki/WebSchemas adresinde ilgili bağlantıları topluyoruz. Yeni bir tane oluşturursanız, lütfen bunları ekleyin.

Ayrıca bakınız:

noktada size' At kuşkusuz, basit olanın ötesine geçen eşlemelere koşarsınız "bu, aynıdır" veya "bu," üçlü kalıpları ima eder.Özellikle SPARQL sorgularını kullanarak, özellikle de SP1 destekli bir v1.1 desteğiniz varsa, biraz daha ileri gitmelisiniz. Ve sonuç olarak, haritalama görevleri bazen özel kod gerektirir.

+0

Bunlar harika kaynaklar, teşekkürler! – imorsi