Python:使用owlready加载“爱因斯坦斑马拼图”-本体

问题描述

我想借助A. Einstein借助python的语义网络工具(最好是 owlready 解决著名的zebra puzzle

起点是在https://github.com/RDFLib/OWL-RL/issues/3链接的两个猫头鹰文件。第一个(XML语法)按预期工作。第二个(不同作者,n3 turtle语法)无法加载,或者仅在owlready中“部分”加载。为了更轻松地理解我的步骤,我在笔记本中记录了这些步骤:https://github.com/cknoll/demo-material/blob/master/expertise_system/einstein-zebra-puzzle-owlready-solution-attempt.ipynb

为便于参考,我包括了笔记本的必要部分:

import os
import owlready2 as owl2

data_path = "ontology_data"
path2 = os.path.join(data_path,"zebra.n3.txt") # original turtle Syntax
path2 = os.path.join(data_path,"zebra.n3.txt.xml") # created with ontospy
onto = owl2.get_ontology(path2).load()

list(onto.classes()) # -> empty list -> loading seems to have Failed

# Now try xml Syntax
# create a new world
owl2.default_world = owl2.World()
onto = owl2.get_ontology(path2x).load()

list(onto.classes()) # -> expected result
list(onto.properties()) # -> expected result
onto.hasPet # -> expected result


# unexpected/wrong:

onto.individuals # -> empty list

list(onto.livesIn.get_relations())  # -> KeyError 

结论:我可以加载该本体的XML版本,但是我无法确认将这些概念定义为owl:oneOf-对象,也无法找到断言之类的地方


:norwegian :livesIn :House1 .


:norwegian :livesIn [ :isNextTo [ :hasColor :Blue ] ] .

结束了。

我很高兴得到一些提示

(我认为,一旦正确表示了本体,就可以通过sync_reasoner_pellet(infer_property_values=True,infer_data_property_values=True))之类的方法来获得解决方

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...