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
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. –
@JeenBroekstra Wie kann ich das tun? Was wird dann der Endpunkt sein? – Aravind
typischerweise so etwas wie 'http: ///openrdf-sesame/repositories/' –