我有一个带有导入的rdflib和一些SPARQL查询的python文件
from rdflib import Graph
import html5lib
if __name__ == '__main__':
g = Graph()
g.parse('http://localhost:8085/weather-2.html', format='rdfa')
res1 = g.parse('http://localhost:8085/weather-2.html', format='rdfa')
print(res1.serialize(format='pretty-xml').decode("utf-8"))
print()
res2 = g.query("""SELECT ?obj
WHERE { <http://localhost:8085/weather-2.html> weather:region ?obj . }
""")
for row in res2:
print(row)
res1打印出来没有问题,但是对于res2我收到错误说:
Exception: Unknown namespace prefix : weather
显然,这是由于第13行的错误,根据pycharm,我用来实现这个的编辑器。
我错过了什么导致此错误?
还有更多只是在我的SPARQL查询中调用weather:region
吗?
如果是这样,如何解决这个问题?
答案 0 :(得分:4)
正如错误消息所示,未定义名称空间weather:
- 因此在SPARQL中您需要PREFIX来定义天气,例如:
PREFIX weather: <weatheruri>
或者您应该使用显式天气URI而不是weather:
天气命名空间URI(或称为IRI?)将位于rdf文档的XML命名空间中 - 它将以/或#结束,如果URI为http://weather.com/
,则前缀定义为{{ 1}}