我正在使用Protege 4.3创建我的第一个本体,所以遇到了一些问题
假设我们具有Shop
,Mall
和Person
类以及属性works-in
和is-part-of
。
所以第一个问题是我们想要的:如果Person
works-in
Shop
和Shop
is-part-of
Mall
,那么Person
works-in
Mall
。
我试图将属性链works-in o is-part-of
添加到属性is-part-of
,但是当我激活它时推理机就死了。
任何想法如何解决?
谢谢。
要回答第一个问题:您正在寻找房地产链。在Protege中,您可以说works-in o is-part-of
是subPropertyOf(Chain)works-in
,这将为您提供预期的推论
EDIT:我做了以下实验:
a)按照您的描述(使用曼彻斯特语法)创建一般本体:
Ontology: <http://www.semanticweb.org/o>
ObjectProperty: <http://www.semanticweb.org/o#works-in>
SubPropertyChain:
<http://www.semanticweb.org/o#works-in> o <http://www.semanticweb.org/o#is-part-of>
ObjectProperty: <http://www.semanticweb.org/o#is-part-of>
Domain:
<http://www.semanticweb.org/o#Department> or <http://www.semanticweb.org/o#Shop>
Range:
<http://www.semanticweb.org/o#Mall> or <http://www.semanticweb.org/o#Shop>
Class: <http://www.semanticweb.org/o#Shop>
Class: <http://www.semanticweb.org/o#Mall>
Class: <http://www.semanticweb.org/o#Department>
Class: <http://www.semanticweb.org/o#Person>
b)向该本体添加一些个人以检查推断。使用FaCT ++进行分类后,Protege显示person1通过试穿与mall1相关。其他公理如下:Individual: <http://www.semanticweb.org/o#shop1>
Types:
<http://www.semanticweb.org/o#Shop>
Facts:
<http://www.semanticweb.org/o#is-part-of> <http://www.semanticweb.org/o#mall1>
Individual: <http://www.semanticweb.org/o#mall1>
Types:
<http://www.semanticweb.org/o#Mall>
Individual: <http://www.semanticweb.org/o#person1>
Types:
<http://www.semanticweb.org/o#Person>
Facts:
<http://www.semanticweb.org/o#works-in> <http://www.semanticweb.org/o#shop1>
c)在a)中添加公理说Person在Shop中工作,而Shop是Mall的一部分。在这种情况下,Person仍然是WorksInMall类的一部分,这表明已考虑了属性链公理。其他公理是:Class: <http://www.semanticweb.org/o#WorksInMall>
EquivalentTo:
<http://www.semanticweb.org/o#works-in> some <http://www.semanticweb.org/o#Mall>
Class: <http://www.semanticweb.org/o#Person>
SubClassOf:
<http://www.semanticweb.org/o#works-in> some <http://www.semanticweb.org/o#Shop>
Class: <http://www.semanticweb.org/o#Shop>
SubClassOf:
<http://www.semanticweb.org/o#is-part-of> some <http://www.semanticweb.org/o#Mall>