2011-08-26 18 views
5

Tôi chủ yếu sử dụng Ruby để thực hiện điều này. như sau:Cách tốt nhất để phân tích cú pháp RDFa, Microdata, vv, lưu trữ và hiển thị thông tin bằng cách sử dụng lược đồ/từ vựng thống nhất (ví dụ schema.org)

Sử dụng đá quý rdf, rdf-rdfa và rdf-microdata hoặc mida để phân tích cú pháp dữ liệu được cung cấp cho bất kỳ URI nào. Tôi nghĩ rằng nó sẽ là tốt nhất để ánh xạ một giản đồ đồng phục như schema.org, ví dụ mất tập tin yaml này mà cố gắng để mô tả việc chuyển đổi giữa dữ liệu từ vựng và 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 

tôi có thể sau đó lưu trữ thông tin được tìm thấy ở một định dạng và hiển thị lại chúng với cú pháp schema.org.

Phần khác là xác định loại. Tôi muốn mô hình hóa các bảng của tôi sau schema.org và tôi muốn biết loại bản ghi 'Thing' (Thing). Vì vậy, nếu tôi phân tích một loại opengraph của 'bar', tôi muốn lưu trữ nó là 'BarOrPub' (BarOrPub).

Có cách nào tốt hơn để thực hiện việc này không? Một cái gì đó tự động? Một giải pháp đã ra khỏi đó? Bất kỳ đầu vào nào được đánh giá cao.

EDIT:

Vì vậy, tôi thấy rằng này phân tích khá tốt (nơi all_tags bao gồm các thẻ tôi quan tâm đến như chìa khóa và schema.org tương đương như giá trị):

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 

Trả lời

4

Đối với câu hỏi ban đầu, bạn đang đi đúng hướng. Trong thực tế, chúng tôi làm những việc tương tự trong số structured-data.org linter. Nó có thể hữu ích cho bạn để kiểm tra repo GitHub. Ý tưởng cơ bản là định dạng phát hiện và chọn trình đọc thích hợp (RDFa, Microdata hoặc bất kỳ thứ gì). Sau khi đọc, bạn sẽ có biểu đồ. Bạn sẽ muốn chạy qua từng câu lệnh trong biểu đồ và tạo một biểu đồ đầu ra mới với các biến vị ngữ và các kiểu được ánh xạ dựa trên bảng của bạn. Vì vậy, ví dụ, nếu bạn nói dv: tên như là một vị từ trong đồ thị nguồn, bạn có thể xuất lược đồ: tên trong biểu đồ đầu ra.

Xác định loại cũng sẽ yêu cầu bảng ánh xạ để tìm ra loại kết xuất phù hợp. Lưu ý rằng OGP không thực sự sử dụng rdf: type, vì vậy bạn sẽ cần phải tìm một câu lệnh với ogp: type và output một rdf: type cùng với lớp được ánh xạ.

Một cách khác để tiếp cận toàn bộ điều này là tạo một từ vựng có cú: xác nhận equivalentProperty/equivalentClass và thực hiện OWL entailment để thêm bộ ba thích hợp vào biểu đồ gốc. Bộ công cụ của Ruby vẫn chưa hoàn toàn đạt được điều này vào thời điểm này.

+1

Cảm ơn bạn đã xác thực! Cách tiếp cận thay thế có vẻ như sạch sẽ và đáng tin cậy nhất. – imorsi

4

Về ánh xạ Schema.org, chúng tôi đang thu thập các liên kết có liên quan tại http://www.w3.org/wiki/WebSchemas. Nếu bạn sản xuất bất kỳ cái mới nào, vui lòng thêm chúng.

Xem thêm:

Tại một số điểm bạn' chắc chắn sẽ chạy vào ánh xạ mà đi xa hơn đơn giản "này là giống như" hoặc "điều này ngụ ý rằng" ba mẫu.Bạn sẽ có thể đi xa hơn bằng cách sử dụng các truy vấn SPARQL, đặc biệt nếu bạn có một công cụ SPARQL hỗ trợ v1.1. Và cuối cùng, các tác vụ ánh xạ đôi khi yêu cầu mã tùy chỉnh.

+0

Đó là những tài nguyên tuyệt vời, cảm ơn! – imorsi

Các vấn đề liên quan