sparql查询:URL作为参数,与Python和Sesame Workbench一起使用

sparql查询:URL作为参数,与Python和Sesame Workbench一起使用,python,rdf,sesame,sparqlwrapper,Python,Rdf,Sesame,Sparqlwrapper,我试图使用sparql将URL作为参数发送到sesame工作台。我该怎么做 更具体地说,我的代码中的一个工作示例是 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> IN

我试图使用sparql将URL作为参数发送到sesame工作台。我该怎么做

更具体地说,我的代码中的一个工作示例是

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
p=“OSPF”
查询字符串=(“”“
前缀rdf:
前缀FOAF:
前缀:
插入数据{
:rdf:type FOAF:productdetails;
FOAF:价格:%s。
}“”“”%p

在输出中,谓词“price”的对象为“”。我想要www.myurl.com作为对象。

我不是Python程序员,但看起来您正在使用字符串格式(使用
%
运算符)将值插入SPARQL查询。在本例中,将
p
(“OSPF”)的值插入字符串中,替换
%s
。因此,结果是:

  FOAF:price :OSPF .
OSPF
前面的
表示您在这里使用的是带前缀的名称,带有默认前缀。默认前缀在命名空间声明中定义为:

  PREFIX : <http://something.com>
另一个选项是在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
p=“OSPF”
查询字符串=(“”“
前缀rdf:
前缀FOAF:
前缀“我的”:
前缀:
插入数据{
:rdf:type FOAF:productdetails;
FOAF:我的价格:%s。
}“”“”%p

我不是Python程序员,但看起来您正在使用字符串格式(使用
%
运算符)将值插入SPARQL查询。在本例中,将
p
(“OSPF”)的值插入字符串中,替换
%s
。因此,结果是:

  FOAF:price :OSPF .
OSPF
前面的
表示您在这里使用的是带前缀的名称,带有默认前缀。默认前缀在命名空间声明中定义为:

  PREFIX : <http://something.com>
另一个选项是在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
p=“OSPF”
查询字符串=(“”“
前缀rdf:
前缀FOAF:
前缀“我的”:
前缀:
插入数据{
:rdf:type FOAF:productdetails;
FOAF:我的价格:%s。
}“”“”%p

作为旁白:您不应该以编程方式将查询发送到Sesame工作台。工作台只是一个客户端UI。将您的查询发送到实际的Sesame服务器。@JeenBroekstra我怎么做?那么终点是什么?通常是
http:///openrdf-sesame/repositories/ 
作为旁白:您不应该以编程方式将查询发送到Sesame工作台。工作台只是一个客户端UI。将您的查询发送到实际的Sesame服务器。@JeenBroekstra我怎么做?那么终点是什么?通常是
http:///openrdf-sesame/repositories/ 
我不知道你第一次澄清的意思。如果您的问题中缺少某些内容,您能否对其进行编辑以包含必要的信息?编辑:两个澄清;1.如果我在查询内部使用,则三元组输出的对象部分(在使用sesame work bench的直接查询工具查看“SELECT*where{a?b?c}”的输出时)也包含尖括号,如。我怎样才能摆脱它?还有一件事,如果我想传递一个包含一些特殊字符(特别是空格)的变量,怎么做?提前谢谢。这听起来更像是一个不同的问题。如果你有一个新问题,将其作为一个单独的新问题发布。如果有助于提供上下文,您可以提供指向此问题的链接。确定。链接如下:我不知道你第一次澄清是什么意思。如果您的问题中缺少某些内容,您能否对其进行编辑以包含必要的信息?编辑:两个澄清;1.如果我在查询内部使用,则三元组输出的对象部分(在使用sesame work bench的直接查询工具查看“SELECT*where{a?b?c}”的输出时)也包含尖括号,如。我怎样才能摆脱它?还有一件事,如果我想传递一个包含一些特殊字符(特别是空格)的变量,怎么做?提前谢谢。这听起来更像是一个不同的问题。如果你有一个新问题,将其作为一个单独的新问题发布。如果有助于提供上下文,您可以提供指向此问题的链接。确定。链接如下: