我无法查看 OWL class 的实例
I'm not able to view the instances of OWL class
from owlready2 import *
onto = get_ontology("https://test.org/onto.owl")
with onto:
class Drug(Thing):
pass
my_drug1 = Drug("my_drug1")
my_drug2 = Drug("my_drug2")
my_drug3 = Drug("my_drug3")
my_drug4 = Drug("my_drug4")
for i in Drug.instances():
print(i)
但是在为 Drug 创建实例后,当我尝试使用上述代码段中的 for 循环打印 Drug 下的所有可用实例时,出现此错误。
sqlite3.OperationalError: circular reference: prelim1_objs
我无法重现您的问题。可以给我Python、Owlready 和SQLite3 的版本号吗?您可以在Python:
中按如下方式获取
import sys, owlready2, sqlite3
print("Python", sys.version)
print("Owlready2", owlready2.VERSION)
print("SQLite3", sqlite3.sqlite_version)
吉巴
终于找到问题的原因了。某些版本的 SQLite3 在支持递归查询方面存在错误。 3.33版本受影响,3.36版本不受影响。
我在 Owlready 的开发版本(在 BitBucket 上)中添加了一个解决方法。我会尽快发布新版本。
from owlready2 import *
onto = get_ontology("https://test.org/onto.owl")
with onto:
class Drug(Thing):
pass
my_drug1 = Drug("my_drug1")
my_drug2 = Drug("my_drug2")
my_drug3 = Drug("my_drug3")
my_drug4 = Drug("my_drug4")
for i in Drug.instances():
print(i)
但是在为 Drug 创建实例后,当我尝试使用上述代码段中的 for 循环打印 Drug 下的所有可用实例时,出现此错误。
sqlite3.OperationalError: circular reference: prelim1_objs
我无法重现您的问题。可以给我Python、Owlready 和SQLite3 的版本号吗?您可以在Python:
中按如下方式获取import sys, owlready2, sqlite3
print("Python", sys.version)
print("Owlready2", owlready2.VERSION)
print("SQLite3", sqlite3.sqlite_version)
吉巴
终于找到问题的原因了。某些版本的 SQLite3 在支持递归查询方面存在错误。 3.33版本受影响,3.36版本不受影响。
我在 Owlready 的开发版本(在 BitBucket 上)中添加了一个解决方法。我会尽快发布新版本。