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

SPARQL - Unknown namespace prefix error

我有一个 python 文件,其中导入了 rdflib 并实现了一些 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

显然这是由于第 15 行的错误导致的,根据 pycharm,我用来实现它的编辑器。

我错过了什么导致了这个错误? 在我的 SPARQL 查询中调用 weather:region 是否还有更多内容? 如果是,如何解决这个问题?

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

PREFIX weather: <weatheruri>

或者您应该使用明确的天气 URI 而不是 weather:

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