问题描述
我想借助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 (将#修改为@)