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