我不是 Python 程序员,但看起来您正在使用字符串格式(使用%
运算符)将值插入到 SPARQL 查询中。在这种情况下,p
("OSPF") 的值被插入到您的字符串中,替换%s
. 所以这个结果是:
FOAF:price :OSPF .
:
前面的表示OSPF
您在此处使用带前缀的名称,带有默认前缀。默认前缀在您的命名空间声明中定义为:
PREFIX : <http://something.com>
这导致插入到 SPARQL 查询中的最终 URI 为:
FOAF:price <http://something.comOSPF> .
如果你想要一个不同的 URL,你必须改变它的替换方式。一种解决方案是将完整的 URI 作为p
. 然后,您需要从中删除前导冒号%s
,而是用尖括号括起来(以表明它是一个完整的 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
另一种选择是在您的 SPARQL 查询中引入另一个命名空间声明,并在%s
. 例如:
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