Python ParseException:应为{SelectQuery | ConstructQuery | DescribeQuery | AskQuery}(在字符57处),(第3行,第21列)

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

我正在尝试使用RDFlib执行一个简单的SPARQL查询。 我已经使用Radlex本体创建了一个RDF图,并尝试在图中进行查询 '''

'''

我得到了这个错误

 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)