2016-04-28 25 views
1

Ich versuche, eine URL als Parameter an die Sesame Workbench zu senden, mit Sparql. Wie kann ich das machen?Frage: URL als Parameter, mit Python und Sesame-Workbench verwenden

Genauer gesagt, Ein funktionierendes Beispiel aus meinem Code ist;

p="OSPF" 
queryString = (""" 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX FOAF: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX : <http://something.com> 

INSERT DATA { 
: rdf:type FOAF:productdetails ; 
FOAF:price :%s . 
}""")% p 

das Objekt für das Prädikat 'Preis' ist 'http://something.com/OSPF' In der Ausgabe. Ich möchte www.myurl.com als das Objekt.

+0

Als Nebenbemerkung: Sie sollten nicht programmgesteuert Abfragen an den Sesame _Workbench_ senden. Die Workbench ist nur eine Client-Benutzeroberfläche. Senden Sie stattdessen Ihre Anfragen an den eigentlichen Sesame Server. –

+0

@JeenBroekstra Wie kann ich das tun? Was wird dann der Endpunkt sein? – Aravind

+0

typischerweise so etwas wie 'http: // /openrdf-sesame/repositories/' –

Antwort

0

Ich bin kein Python-Programmierer, aber es sieht so aus, als ob Sie String-Formatierung verwenden (mit dem %-Operator), um einen Wert in Ihre SPARQL-Abfrage einzufügen. In diesem Fall wird der Wert ("OSPF") in Ihre Zeichenfolge eingefügt und ersetzt die %s. So das Ergebnis ist folgende:

FOAF:price :OSPF . 

Die : vor OSPF bedeutet, dass Sie einen Präfix Namen hier verwenden, mit dem Standard-Präfix. Der Standard-Präfix ist in Ihren Namensraum-Deklarationen wie folgt definiert:

PREFIX : <http://something.com> 

Dies führt dazu, eventuellen URI in Ihren SPARQL Query Wesen eingefügt:

FOAF:price <http://something.comOSPF> . 

Wenn Sie eine andere URL wollen, müssen Sie das ändern So wird das ersetzt. Eine Lösung besteht darin, den vollständigen URI als Wert von zu haben. Sie müssen dann den führenden Doppelpunkt von %s entfernen und stattdessen umgeben mit spitzen Klammern (um anzuzeigen, es ist eine vollständige URI):

p = "http://www.myurl.com/OSPF" 
    queryString = (""" 
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX FOAF: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX : <http://something.com> 

    INSERT DATA { 
    : rdf:type FOAF:productdetails ; 
     FOAF:price <%s> . 
    }""")% p 

Eine andere Möglichkeit ist, einen anderen Namespace-Deklaration in Ihrer SPARQL Query einzuführen, und zu verwenden, die in vor %s. Zum Beispiel:

p = "OSPF" 
    queryString = (""" 
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX FOAF: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX my: <http://www.myurl.com/> 
    PREFIX : <http://something.com> 

    INSERT DATA { 
    : rdf:type FOAF:productdetails ; 
     FOAF:price my:%s . 
    }""")% p 
+0

Ich habe keine Ahnung, was Sie mit Ihrer ersten Klarstellung meinen. Wenn Ihrer Frage etwas fehlt, können Sie sie so bearbeiten, dass sie die erforderlichen Informationen enthält? –

+0

Bearbeitet: Zwei Klarstellungen; 1. Wenn ich innerhalb der Abfrage <%s> verwende, enthält der Objektteil der Triplet-Ausgabe (beim Anzeigen der Ausgabe von 'SELECT * wo {? A? B? C}' mit der direkten Abfrage der Sesam-Workbench) auch den Winkel Klammern wie . Wie kann ich es loswerden? _Eine weitere Sache is_, wenn ich eine Variable übergeben möchte, die einige Sonderzeichen enthält (insbesondere Leerzeichen), wie geht das? Danke im Voraus. – Aravind

+0

Das klingt wirklich eher nach einer anderen Frage. Wenn Sie eine neue Frage haben, senden Sie sie als separate neue Frage *. Sie können einen Link zurück zu dieser Frage bereitstellen, wenn es hilft, Kontext bereitzustellen. –