2009-10-20 43 views
7

Tôi hy vọng ai đó có thể giúp tôi về lẽ hoàn toàn dễ giải quyết vấn đề này:SPARQL Query cho kết quả bất ngờ

Tôi muốn chạy một truy vấn SPARQL so với RDF sau (lưu ý trong N3, các RDF/XML ngồi here). Đây là desription của một bài viết trên tạp chí và giới thiệu của tạp chí, tác giả và nhà xuất bản:

@prefix bibo: <http://purl.org/ontology/bibo/> . 
@prefix dc: <http://purl.org/dc/elements/1.1/> . 
@prefix ex: <http://example.org/thesis/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 

<ex:XY>  a bibo:Article; 
    dc:creator ex:umstaetter; 
    dc:date "2008-11-01"; 
    dc:isPartOf ex:bibdienst; 
    dc:title "DDC in Europa"@de; 
    bibo:endPage "1221"; 
    bibo:issue "11"; 
    bibo:language "de"; 
    bibo:pageStart "1194"; 
    bibo:uri <http://www.zlb.de/Erschliessung020309BD.pdf>; 
    bibo:volume "42" . 

<ex:bibdienst>  a bibo:Journal; 
    dc:publisher ex:zlb; 
    dc:title "Bibliotheksdienst"@de; 
    bibo:issn "00061972" . 

<ex:umstaetter>  a foaf:person; 
    foaf:birthday "1941-06-12"; 
    foaf:gender "Male"; 
    foaf:givenName "Walther"; 
    foaf:homepage <http://www.ib.hu-berlin.de/~wumsta/index.html>; 
    foaf:img "http://libreas.eu/ausgabe7/pictures/wumstaetter1.jpg"; 
    foaf:name "Walther Umst\u00E4tter"; 
    foaf:surname "Umst\u00E4tter"; 
    foaf:title "Prof. Dr. rer. nat." . 

<ex:zlb>  a foaf:Organization; 
    foaf:homepage <http://www.zlb.de>; 
    foaf:name "Zentral- und Landesbibliothek Berlin"@de . 

Đối với mục đích thử nghiệm tôi muốn đọc ra foaf: trang chủ của ví dụ: zlb - các SPARQL Tôi muốn để chạy là:

PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dc: <http://purl.org/dc/elements/1.1/> 
PREFIX bibo: <http://purl.org/ontology/bibo/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX ex: <http://example.org/thesis/> 

SELECT ?article ?publisher ?publisher_url 
WHERE 
{ 
    ?article dc:isPartOf ?journal . 
    ?journal dc:publisher ?publisher . 
    ?publisher foaf:homepage ?publisher_url 
} 

(một lần nữa:. Đây là gonna được để thử nghiệm chỉ vì chỉ có một thực thể của bài viết)

chạy nó trên máy tính địa phương của tôi với Pyt hon và RDflib không cho tôi kết quả. Không có bản demo truy vấn SPARQL trực tuyến Redland.

Bất kỳ ai ngoài đó xem giải pháp? Tôi đang đi đúng hướng hay hoàn toàn sai?

Trả lời

7

Tôi không nghĩ rằng bạn có thể sử dụng một QName trong một giá trị thuộc tính XML; ví dụ. giá trị của rdf:about. Vì vậy, hãy xem xét dòng này từ tệp RDF/XML của bạn:

<bibo:Journal rdf:about="ex:bibdienst"> 

Tôi nghĩ rằng điều này thực sự nói rằng URI chủ đề là "cũ: bibdienst". Đó là một URI cú pháp hợp lệ, nhưng nó không phải là cùng một URI như xuất hiện như là đối tượng của ba tương ứng với dòng này:

<dc:isPartOf rdf:resource="http://example.org/thesis/bibdienst" /> 

Hãy thử thay thế QNames trong XML giá trị thuộc tính với các URI tương ứng và thấy rằng nếu khắc phục sự cố của bạn.

+0

Perfect. Điều đó đã khắc phục được vấn đề của tôi. Bằng cách nào đó tôi đã nhầm lẫn về những gì được cho phép trong XML và N3 và những gì không :) THANKS LẠI! – fab

6

Yep Stephen C là hoàn toàn chính xác mà bạn không thể sử dụng QNames trong thuộc tính XML, bạn có thể sử dụng các đối tượng XML thay vì đó bạn xác định trong một khối DTD ở phía trên cùng của tài liệu của bạn như vậy:

ví dụ.

<!DOCTYPE rdf:RDF[ 
    <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> 
    <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'> 
    <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'> 
    <!ENTITY ex 'http://example.org/thesis/'> 
    <!ENTITY dc 'http://purl.org/dc/elements/1.1/'> 
    <!ENTITY foaf 'http://xmlns.com/foaf/0.1/'> 
    <!ENTITY bibo 'http://purl.org/ontology/bibo/'> 
]> 

Sau đó, bạn có thể định nghĩa các thuộc tính như vậy:

<bibo:Journal rdf:about="&ex;bibdienst"> 
+0

THANKS cho đề xuất. Tôi sẽ thử một điều đó (tôi thực sự luôn tự hỏi "& [tiền tố]" trong XML nghĩa là gì. Nhờ có nó bây giờ hoàn toàn rõ ràng đối với tôi). CẢM ƠN RẤT NHIỀU! – fab

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