2012-04-20 31 views
8

Sử dụng Wine ontology, tôi muốn tạo SPARQL truy vấn để tôi có thể lấy tất cả các loại rượu vangtài sản của họ như bảng dưới đây - cho rằng tôi không biết tên của thuộc tính a priori.SPARQL truy vấn để lấy tất cả các đối tượng và thuộc tính

vin     | rdf:type  | vin:hasMaker  | vin:hasSugar | ... 
========================================================================== ... 
GaryFarrellMerlot | vin:Merlot | vin:Elyse   | vin:Dry  | ... 
-------------------------------------------------------------------------- 
ElyseZinfandel  | vin:Elyse | vin:GaryFarrell | vin:Dry  | ... 
... 

Ai đó có thể gợi ý cho tôi không?

- EDIT

Nó không phải là có thể có kết quả truy vấn trong các định dạng tôi đã đề cập, nhưng tôi có thể có nó theo cách này:

vin    | property  | value 
================================================= 
GaryFarrellMerlot | rdf:type  | vin:Merlot 
------------------------------------------------- 
GaryFarrellMerlot | rdf:hasMaker | vin:Elyse 
------------------------------------------------- 
... 

Với điều này chọn (nhờ cygri) :

SELECT DISTINCT ?wine ?property ?value 
WHERE { 
     ?o1 a ?class . 
     ?wine a ?o1 . 
     ?wine ?property ?value . 
} 

Điều này sẽ lấy rượu thay vì loại rượu vang (Merlot -> GaryFarrellMerlot). Vấn đề duy nhất là nó có rượu nhưng cũng là rượu, khu vực, hương vị, vv và tôi chỉ muốn rượu vang và các đặc tính của nó. Ngoài ra, có không thuộc tính như vậy vin: Merlot rdfs: subClassOf vin: Wine. Bất kỳ gợi ý nào?

Trả lời

11

Bạn không thể. Bạn cần phải biết trước những cột nào bạn muốn trong kết quả truy vấn của mình.

Bảng liệt kê tất cả các thuộc tính của các loại rượu vang không phải là rất khó khăn dĩ nhiên:

SELECT DISTINCT ?property 
WHERE { 
    ?wine a vin:Wine . 
    ?wine ?property ?value . 
} 

Sau đó, bạn cần phải viết một số mã tạo các truy vấn SPARQL thức từ danh sách kết quả.

+0

Cảm ơn cygri! bạn có gợi ý gì cho chỉnh sửa của tôi ở trên không? – ksiomelo

+3

Vâng, bản thể học rượu không phải là một mô hình RDF đơn giản mà là một bản thể luận OWL phức tạp. Vì vậy, để làm những điều phức tạp hơn, như suy ra rằng Merlot là một phân lớp của rượu, bạn cần một người lập luận OWL (hoặc có thể là một cửa hàng ba hỗ trợ OWL). – cygri