如何解决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 举报,一经查实,本站将立刻删除。