Python ParseException:应为{SelectQuery | ConstructQuery | DescribeQuery | AskQuery}(在字符57处),(第3行,第21列)
我正在尝试使用RDFlib执行一个简单的SPARQL查询。 我已经使用Radlex本体创建了一个RDF图,并尝试在图中进行查询 ''' ''' 我得到了这个错误Python ParseException:应为{SelectQuery | ConstructQuery | DescribeQuery | AskQuery}(在字符57处),(第3行,第21列),python,sparql,rdflib,Python,Sparql,Rdflib,我正在尝试使用RDFlib执行一个简单的SPARQL查询。 我已经使用Radlex本体创建了一个RDF图,并尝试在图中进行查询 ''' ''' 我得到了这个错误 ParseException Traceback (most recent call last) <ipython-input-9-7aadbf996386> in <module> 24 WHERE { 25
ParseException Traceback (most recent call last)
<ipython-input-9-7aadbf996386> in <module>
24 WHERE {
25 ?Subject FOAF.RID13163 "F".
---> 26 }"""
27 )
28 # list( g.triples((None, FOAF.RID13160, None)) )
~\AppData\Local\Continuum\anaconda3\lib\site-packages\rdflib\graph.py in query(self, query_object, processor, result, initNs, initBindings, use_store_provided, **kwargs)
1087
1088 return result(processor.query(
-> 1089 query_object, initBindings, initNs, **kwargs))
1090
1091 def update(self, update_object, processor='sparql',
~\AppData\Local\Continuum\anaconda3\lib\site-packages\rdflib\plugins\sparql\processor.py in query(self, strOrQuery, initBindings, initNs, base, DEBUG)
72
73 if not isinstance(strOrQuery, Query):
---> 74 parsetree = parseQuery(strOrQuery)
75 query = translateQuery(parsetree, base, initNs)
76 else:
ParseException: Expected {SelectQuery | ConstructQuery | DescribeQuery | AskQuery} (at char 57), (line:3, col:21)
ParseException回溯(最近一次调用)
在里面
24在哪里{
25?受试者FOAF.RID13163“F”。
---> 26 }"""
27 )
28#列表(g.triples((None,FOAF.RID13160,None)))
查询中的~\AppData\Local\Continuum\anaconda3\lib\site packages\rdflib\graph.py(self、查询对象、处理器、结果、initn、initBindings、使用提供的存储、**kwargs)
1087
1088返回结果(processor.query(
->1089查询(对象、initBindings、initNs、**kwargs))
1090
1091 def更新(自我,更新对象,处理器='sparql',
查询中的~\AppData\Local\Continuum\anaconda3\lib\site packages\rdflib\plugins\sparql\processor.py(self、strOrQuery、initBindings、initNs、base、DEBUG)
72
73如果不存在(strOrQuery,Query):
--->74 parsetree=parseQuery(strOrQuery)
75 query=translateQuery(parsetree、base、initNs)
76.其他:
ParseException:应为{SelectQuery | ConstructQuery | DescribeQuery | AskQuery}(在字符57处),(第3行,第21列)
我不明白这个错误是什么意思错误是说它无法识别语法正确的查询表单 在您的例子中,您需要将rdflib使用Python对象属性访问来表示前缀名称(在您的示例中为
FOAF.RID13163
)映射到SPARQL使用冒号表示前缀名称的符号。这意味着Python中的FOAF.RID13163
将转换为SPARQL中的FOAF:RID13163
。否则,rdflib抱怨找不到有效的查询表单
除此之外,还有另一个原因导致您的查询不会运行,即使您将FOAF.RID13163
更改为FOAF:RID13163
:查询将无法识别FOAF
命名空间前缀。如果在运行查询之前添加行g.bind(“FOAF”,FOAF)
,那么您的查询将运行
一旦您的查询运行,我想指出另外两件事。首先,我想您的意思是查询三元组中的谓词为
FOAF:RID13164
——这将返回一个结果。其次,FOAF
是rdflib的内置名称空间(来自rdflib.namespace import FOAF
),并指朋友词汇表中的著名朋友。我建议您使用另一个名称(RID
在您的情况下?),以免混淆可能需要使用您的代码的其他人。错误是它无法识别语法正确的查询表单
在您的例子中,您需要将rdflib使用Python对象属性访问来表示前缀名称(在您的示例中为FOAF.RID13163
)映射到SPARQL使用冒号表示前缀名称的符号。这意味着Python中的FOAF.RID13163
将转换为SPARQL中的FOAF:RID13163
。否则,rdflib抱怨找不到有效的查询表单
除此之外,还有另一个原因导致您的查询不会运行,即使您将FOAF.RID13163
更改为FOAF:RID13163
:查询将无法识别FOAF
命名空间前缀。如果在运行查询之前添加行g.bind(“FOAF”,FOAF)
,那么您的查询将运行
一旦您的查询运行,我想指出另外两件事。首先,我想您的意思是查询三元组中的谓词为FOAF:RID13164
——这将返回一个结果。其次,FOAF
是rdflib的内置名称空间(来自rdflib.namespace import FOAF
),指的是朋友词汇表中的著名朋友。我建议您使用另一个名称(RID
在您的情况下?),以免混淆可能需要使用您的代码的其他人。1。)这是一个普通的Python字符串,你认为FOAF.RID13163会发生什么情况呢?2)你在里面有双引号,使用单引号1。)这是一个普通的Python字符串,你认为FOAF.RID13163会发生什么情况
ParseException Traceback (most recent call last)
<ipython-input-9-7aadbf996386> in <module>
24 WHERE {
25 ?Subject FOAF.RID13163 "F".
---> 26 }"""
27 )
28 # list( g.triples((None, FOAF.RID13160, None)) )
~\AppData\Local\Continuum\anaconda3\lib\site-packages\rdflib\graph.py in query(self, query_object, processor, result, initNs, initBindings, use_store_provided, **kwargs)
1087
1088 return result(processor.query(
-> 1089 query_object, initBindings, initNs, **kwargs))
1090
1091 def update(self, update_object, processor='sparql',
~\AppData\Local\Continuum\anaconda3\lib\site-packages\rdflib\plugins\sparql\processor.py in query(self, strOrQuery, initBindings, initNs, base, DEBUG)
72
73 if not isinstance(strOrQuery, Query):
---> 74 parsetree = parseQuery(strOrQuery)
75 query = translateQuery(parsetree, base, initNs)
76 else:
ParseException: Expected {SelectQuery | ConstructQuery | DescribeQuery | AskQuery} (at char 57), (line:3, col:21)