sparql 查询:URL 作为参数,使用 with Python 和 Sesame-Workbench
sparql query: URL as a parameter, using with Python and Sesame-Workbench
我正在尝试使用 sparql 将 URL 作为参数发送给芝麻 workbench。我该怎么做?
更具体地说,我的代码中的一个工作示例是;
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
在输出中,谓词 'price' 的对象是 'http://something.com/OSPF'。我想要 www.myurl.com 作为对象。
我不是 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
我正在尝试使用 sparql 将 URL 作为参数发送给芝麻 workbench。我该怎么做?
更具体地说,我的代码中的一个工作示例是;
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
在输出中,谓词 'price' 的对象是 'http://something.com/OSPF'。我想要 www.myurl.com 作为对象。
我不是 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