Python:使用owlready加载“爱因斯坦斑马之谜”本体

2024-10-02 04:16:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

<;Edit1>为了更好地参考,我提供了笔记本的基本部分:

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 

</Edit1>

结论:我可以加载这个本体的XML版本,但我无法确认这些概念是否定义为owl:oneOf-对象,也无法找到像这样的断言


:Norwegian :livesIn :House1 .


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

结果呢

我很乐意得到一些提示

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


Tags: pathdatagetosresultlistontologyexpected

热门问题