Python TypeError:在owlready库中应为类似字符串或字节的对象

Python TypeError:在owlready库中应为类似字符串或字节的对象,python,sparql,semantic-web,owlready,Python,Sparql,Semantic Web,Owlready,我试图用python查询我使用owlready库创建的owl文件中的数据。但是我得到了以下错误。原因是什么 代码结构和收到的错误如下 from owlready2 import * from urllib.request import urlopen from rdflib.graph import Graph onto = default_world.get_ontology("http://muratkilinc.com/ontologies/izmir.owl").load() gra

我试图用python查询我使用owlready库创建的owl文件中的数据。但是我得到了以下错误。原因是什么

代码结构和收到的错误如下

from owlready2 import *
from urllib.request import urlopen
from rdflib.graph import Graph

onto = default_world.get_ontology("http://muratkilinc.com/ontologies/izmir.owl").load()

graph = default_world.as_rdflib_graph()
r = list(graph.query_owlready("""
    PREFIX uni:<http://muratkilinc.com/ontologies/izmir.owl>
    SELECT ?adi ?soyadi ?yas
    WHERE
    {
        ?turistler uni:yas ?yas.
        ?turistler uni:adi ?adi.
        ?turistler uni:soyadi ?soyadi.
        FILTER(?yas > 35).

    }"""))

results = default_world.as_rdflib_graph().query_owlready(r)
results = list(results)
print(results)
从owlready2导入*
从urllib.request导入urlopen
从rdflib.graph导入图形
On=default\u world.get\u本体(“http://muratkilinc.com/ontologies/izmir.owl)加载()
graph=默认的世界。如图()
r=列表(graph.query\u)
前缀uni:
选择?adi?soyadi?yas
哪里
{
图里斯特勒大学:是的,是的。
?土耳其大学:阿迪?阿迪。
图里斯勒大学:索亚迪?索亚迪。
过滤器(?yas>35)。
}"""))
结果=默认值\u world.as\u rdflib\u graph().query\u owlready(r)
结果=列表(结果)
打印(结果)
错误:

* Owlready2 * Warning: optimized Cython parser module 'owlready2_optimized' is not available, 
defaulting to slower Python implementation
Traceback (most recent call last):
  File "c:/Users/BAUM-PC/Desktop/izmir/sparql.py", line 21, in <module>
    results = list(results)
  File "C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\owlready2\rdflib_store.py", line 261, in query_owlready
  File "C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\rdflib\graph.py", line 1089, in query
    query_object, initBindings, initNs, **kwargs))
  File "C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\rdflib\plugins\sparql\processor.py", line 74, in query
    parsetree = parseQuery(strOrQuery)
  File "C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\rdflib\plugins\sparql\parser.py", line 1057, in parseQuery
    q = expandUnicodeEscapes(q)
  File "C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\rdflib\plugins\sparql\parser.py", line 1048, in expandUnicodeEscapes
    return expandUnicodeEscapes_re.sub(expand, q)
TypeError: expected string or bytes-like object
*Owlready2*警告:优化的Cython解析器模块“Owlready2\u optimized”不可用,
默认使用较慢的Python实现
回溯(最近一次呼叫最后一次):
文件“c:/Users/BAUM-PC/Desktop/izmir/sparql.py”,第21行,在
结果=列表(结果)
文件“C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\owlready2\rdflib\u store.py”,第261行,在query\u owlready中
文件“C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\rdflib\graph.py”,查询中的第1089行
查询(对象、initBindings、initNs、**kwargs))
文件“C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\rdflib\plugins\sparql\processor.py”,查询中的第74行
parsetree=parseQuery(strOrQuery)
文件“C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site-
packages\rdflib\plugins\sparql\parser.py”,第1057行,在parseQuery中
q=可扩展的场景(q)
文件“C:\Users\BAUM-PC\AppData\Local\Programs\Python\Python37-32\lib\site-
expandUnicodeScapes中的packages\rdflib\plugins\sparql\parser.py”,第1048行
返回expandUnicodeScapes\u re.sub(expand,q)
TypeError:应为字符串或类似字节的对象

您必须跳过第二次查询,错误消息将跳过

from owlready2 import *
from rdflib.graph import Graph

onto = default_world.get_ontology("http://muratkilinc.com/ontologies/izmir.owl").load()

graph = default_world.as_rdflib_graph()

r = list(graph.query_owlready("""
    PREFIX uni:<http://muratkilinc.com/ontologies/izmir.owl>
    SELECT ?adi ?soyadi ?yas
    WHERE
    {
        ?turistler uni:yas ?yas.
        ?turistler uni:adi ?adi.
        ?turistler uni:soyadi ?soyadi.
        FILTER(?yas > 35).
    }"""))

print(list(r))
从owlready2导入*
从rdflib.graph导入图形
On=default\u world.get\u本体(“http://muratkilinc.com/ontologies/izmir.owl)加载()
graph=默认的世界。如图()
r=列表(graph.query\u)
前缀uni:
选择?adi?soyadi?yas
哪里
{
图里斯特勒大学:是的,是的。
?土耳其大学:阿迪?阿迪。
图里斯勒大学:索亚迪?索亚迪。
过滤器(?yas>35)。
}"""))
打印(列表(r))
它给出了一个空列表,所以它工作时没有错误消息


空列表是另一个问题-查询,而不是代码-所以你们应该问新问题

看起来你们做了两次同样的事情——第一次用字符串作为参数,但第二次把前一行的结果作为参数。也许你不应该第二次这样做,只做
print(r)
。你可能是对的。但是,即使sparql查询的结果已满,当我尝试使用
print(r)
时,我只得到一个空的结果“[]”。就好像它没有列出sparql查询的结果一样@Furasb但它解决了您的错误问题。现在你有了不同的问题,它需要创建新的问题。也许这个查询无法得到任何结果,您必须更改查询。我不知道OWL文件,但对于SQL数据库的查询,我会使用任何工具来处理数据库,并尝试在此工具中进行查询,以查看结果。或者可以从更简单的查询开始—不使用
,其中
—以查看您是否得到了任何结果。然后开始在
WHERE
中添加单个元素,以测试哪个元素会产生问题。我正在尝试运行一个相当简单的查询。我看到了同样的错误。我想是关于别的事情@谢谢你的关心。我将尝试解决查询的状态为空。至少代码部分现在没有出现任何错误。