我正在使用 rdflib 从字符串三元组构建一个小型知识图。一个典型的三元组看起来像:"Bob" "went" "home",我将它们添加到我的图表中,如下所示(我知道我应该使用标准对象和命名空间,但这是构建最“准系统”图,我可以):
for s, p, o in triples:
g.add((Literal(s), Literal(p), Literal(o)))
我正在尝试使用 SPARQL 查询这样的图表,而我从上述三元组中提取“Bob”的查询如下所示:
q = """
SELECT ?s
WHERE { (?s) %s Literal("home"). }
""" % (Literal('went'))
这给了我下面的错误,告诉我查询格式错误:
ParseException: Expected {SelectQuery | ConstructQuery | DescribeQuery | AskQuery}, found 'w' (at char 23), (line:1, col:24)
我已经尝试插入实际的字符串(例如“went”而不是 Literal(“went”)),但这也不起作用。像this answer和this answer这样的几篇文章解决了如何匹配文字,但这似乎没有帮助。
所以我的问题是,是否可以在 SPARQL 中使用文字或简单字符串作为谓词,如果可以,如何使用?任何帮助将非常感激。