SPARQL - 未知的名称空间前缀错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPARQL - 未知的名称空间前缀错误相关的知识,希望对你有一定的参考价值。

我有一个带有导入的rdflib的python文件,并实现了一些SPARQL查询

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吗?如果是这样怎么办解决这个问题?

答案

正如错误消息所示,未定义命名空间weather: - 因此在SPARQL中您需要PREFIX来定义天气,例如:

PREFIX weather: <weatheruri>

或者你应该使用显式天气URI而不是weather:

天气命名空间URI(或称为IRI?)将位于rdf文档的XML命名空间中 - 它将以/或#结束,如果URI为http://weather.com/,则前缀定义为PREFIX weather: <http://weather.com/>

以上是关于SPARQL - 未知的名称空间前缀错误的主要内容,如果未能解决你的问题,请参考以下文章

XML 和 XSL 中的前缀命名空间处理由 XML 解析器返回错误

删除ns2作为默认名称空间前缀

PHP之namespace小记

如何在 XSLT 输出中控制名称空间前缀(特别是默认名称空间)?

Spark-Submit 错误:名称或服务未知

QML 错误“未知组件。(M300)”但代码有效