7 Stimmen

SPARQL-Abfrage liefert unerwartetes Ergebnis

Ich hoffe, jemand kann mir bei diesem wahrscheinlich ganz einfach zu lösenden Problem helfen:

Ich möchte eine SPARQL-Abfrage über die folgende RDF-Datei ausführen (in N3, der RDF/XMl-Site, vermerkt) aquí ). Dies ist die Beschreibung eines Zeitschriftenartikels und die Beschreibung der Zeitschrift, des Autors und des Herausgebers:

 @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 .

Zu Testzwecken wollte ich die foaf:homepage de ex:zlb - ist das SPARQL, das ich ausführen möchte:

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
}

(Nochmals: Dies wird nur zu Testzwecken sein, da es nur eine Entität eines Artikels gibt.)

Wenn ich es auf meinem lokalen Rechner mit Python und RDflib ausführe, erhalte ich kein Ergebnis. Ebenso wenig wie die Online Redland SPARQL Query Demo.

Gibt es jemanden, der eine Lösung sieht? Bin ich auf dem richtigen Weg oder völlig falsch?

7voto

Stephen C Punkte 665668

Ich glaube nicht, dass Sie einen QName in einem XML-Attributwert verwenden können; z. B. der Wert von rdf:about . Betrachten Sie also diese Zeile aus Ihrer RDF/XML-Datei:

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

Ich denke, dass dies bedeutet, dass der Betreff-URI "ex:bibdienst" lautet. Das ist ein syntaktisch gültiger URI, aber es ist nicht derselbe URI, der als Objekt des Tripels in dieser Zeile erscheint:

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

Versuchen Sie, die QNames in den XML-Attributwerten durch die entsprechenden URIs zu ersetzen, um zu sehen, ob Ihr Problem dadurch behoben wird.

6voto

RobV Punkte 26847

Ja, Stephen C. hat völlig Recht, dass man keine QNames in XML-Attributen verwenden kann. Stattdessen kann man XML-Entitäten verwenden, die man in einem DTD-Block am Anfang des Dokuments wie folgt definiert:

を使う。

<!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/'>
]>

Dann können Sie Attribute wie folgt definieren:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X