首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >菜鸟python结果绑定问题

菜鸟python结果绑定问题
EN

Stack Overflow用户
提问于 2011-09-16 04:32:27
回答 2查看 118关注 0票数 0

我将python与SPARQLWrapper一起使用,到目前为止它一直有效--我不能将新的SPARQL对象添加到我的结果中。

下面是我的工作片段:

代码语言:javascript
复制
 else:

      for result in results["results"]["bindings"]:
          project = result["project"]["value"].encode('utf-8')
          filename = result["filename"]["value"].encode('utf-8')
          keywords = result["keywords"]["value"].encode('utf-8')
          url = result["url"]["value"].encode('utf-8')
          url = result["url"]["value"].encode('utf-8')

          print "<p class=\"results\"><span>Project</span>: %s</p><p class=\"indent\"><span>Filename</span>: %s</p><p class=\"indent\"><span>URL</span>:<a href=\"%s\">%s</a></p><p class=\"indent-bottom\"><span>Keywords</span>: %s</p> " % \
                (project,filename,url,url,keywords)

我正在尝试添加更多的结果。我测试了添加到脚本中的SPARQL查询,添加了查询的对象(“参数”)作为结果和绑定对,添加了要打印的%s,并将结果名称添加到print命令下面的括号中(不确定如何命名该区域)。因此,在我之前添加这些结果之后,我得到了死亡的白屏--只写出了页面的标题,apache错误日志给我一个项目,KeyError =“.encode”项目(‘utf-8’)。

下面是一个破坏脚本的添加元素的示例:

代码语言:javascript
复制
  else:
      print "<h1>ASDC RDF Search Results</h1>"
      print "<p class=\"newsearch\"><a href=\"/asdc.html\">new search | <a href=\"http://localhost/asdc.html\">About this project</a></p><div style=\"clear:both;\"</div>"
      for result in results["results"]["bindings"]:
          project = result["project"]["value"].encode('utf-8')
          filename = result["filename"]["value"].encode('utf-8')
          url = result["url"]["value"].encode('utf-8')
          url = result["url"]["value"].encode('utf-8')
          keywords = result["keywords"]["value"].encode('utf-8')
          parameter = result["parameter"]["value"].encode('utf-8')

          print "<p class=\"results\"><span>Project</span>: %s</p><p class=\"indent\"><span>Filename</span>: %s</p><p class=\"indent\"><span>URL</span>:<a href=\"%s\">%s</a></p><p class=\"indent\"><span>Keywords</span>: %s</p><p class=\"indent-bottom\"><span>Parameter</span>: %s</p> " % \
                (project,filename,url,url,keywords,parameter)

那么有两个问题:错误是显而易见的吗?当我添加新行的时候,我是不是搞乱了键的格式?另外,python会将错误写入日志吗?或者我可以启用它吗?谢谢..。

编辑:这是包含参数的查询(它可以工作,直接在Fuseki UI中测试)

代码语言:javascript
复制
PREFIX e1: <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/>

  SELECT ?url ?filename ?keywords ?project ?parameter

  WHERE {
    ?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/url> ?url. 
    ?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/filename> ?filename. 
OPTIONAL {
        ?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/keywords> ?keywords.
        ?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/project> ?project.
        ?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/parameter> ?parameter.
        }
         FILTER (regex(?keywords, "FILTER-STRING", "i") || regex(?url, "FILTER-STRING", "i") || regex(?filename, "FILTER-STRING", "i")) .

}

第一个查询类似,只是去掉了?参数。FILTER-STRING来自我的cgi表单。

EN

回答 2

Stack Overflow用户

发布于 2011-09-16 04:41:15

您的result dict没有key "project",或者result["project"] dict没有key "value"

所以插入

代码语言:javascript
复制
print result.keys()
print result["project"]
print result["project"].keys()
print result["project"]["value"]

立即在for result in ...之后,您就会看到哪里出了问题。

票数 0
EN

Stack Overflow用户

发布于 2011-10-03 23:13:00

我的问题原来是由查询中可选子句的结果中的空值引起的。SPARQLWrapper开发人员建议使用if-else,如下所示,示例查询使用OPTIONAL (& it for me):

代码语言:javascript
复制
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    SELECT ?person ?party
    WHERE { ?person <http://dbpedia.org/ontology/birthPlace> <http://dbpedia.org/resource/Asturias> 
            OPTIONAL { ?person <http://dbpedia.org/property/party> ?party }

for result in results["results"]["bindings"]:
    if result.has_key("party"):
        print "* " + result["person"]["value"] + " ** " + result["party"]["value"]
    else:
        print result["person"]["value"]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7437104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档