Protege:对象属性限制 1
Posted
技术标签:
【中文标题】Protege:对象属性限制 1【英文标题】:Protege: Object property restrictions 1 【发布时间】:2015-07-27 23:48:13 【问题描述】:我正在使用 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
,但是当我激活它时推理器死了。
知道怎么解决吗?
谢谢。
【问题讨论】:
works-in
=> works-for
将解决你的第一个问题——Person
works-for
Shop
,其中is-part-of
Mall
。你在商场里的商店工作。我忽略了你的第二个问题,因为每个问题你应该只问一个问题。
我并没有真正理解你的建议,但我想补充一点,我尝试为works-for
定义一个属性链,但是当我激活它时推理器死了。你能解释一下吗?
...好吧,在重读这个问题时,我意识到这是一个特定的系统。我是说,一般来说,你可以暗示如果有人在商场的商店工作,他们就在那个商场工作。如果您说他们为位于购物中心的商店工作,则更清楚这种关系是间接的。
你能显示你从推理者那里收到的错误信息吗?单击 Protege 窗口右上角的红色三角形应该可以访问堆栈跟踪。
这是一条错误消息Fatal reasoner error : Reasoner died (see logs for more info)
【参考方案1】:
回答您的第一个问题:您正在寻找财产链。在 Protege 中,你可以说 works-in o is-part-of
是一个子属性(链)works-in
,这会给你预期的推论
编辑:我做了以下实验:
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 是通过works-in 关联的。附加公理如下:
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) 添加公理说 Person 在 Shop 中工作,并且 Shop 是 Mall 的一部分到 a) 的本体。在这种情况下, 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>
【讨论】:
我是这么想的,但是当我尝试每次激活时推理器都会死 你用的是什么推理器,你的本体是什么?可以分享一下吗? 我使用FaCT++
作为推理器,我应该使用本体创建关于商场及其与员工和购物者关系的描述逻辑知识库 (KB)
问题可能是属性is-part-of
具有域Department or Shop
和范围Shop or Mall
吗?有没有办法指定例如域Shop
仅在Mall
中取值?
我编辑了答案以显示我执行的实验。个人版本和类版本都表明属性链按预期工作。以上是关于Protege:对象属性限制 1的主要内容,如果未能解决你的问题,请参考以下文章