本体中不相交的类可以共享相同的数据属性吗?

问题描述 投票:0回答:1

我目前正在撰写关于学术图书馆基于本体的知识库的硕士论文。为此,我尝试将专业音乐库的领域知识建模为本体,随后可以将领域知识转移到本体中。 我使用 Protégé(版本 5.6.1)作为此工具。但我觉得我在某些方面还缺乏一定的基本认识。 问题是不相交的类是否可以具有共同的数据属性。

一个例子: 我有两个班级:图书馆和图书馆团队。 “图书馆”类具有数据属性“电话号码”,它指的是一般服务电话号码。除其他外,“图书馆团队”类具有数据属性“姓氏”和“名字”,这两个属性对于该类来说都是单独的。同时,还有数据属性“电话号码”,但这次指的是团队成员的个人电话号码。 这两个类是脱节的。这意味着团队成员类中的任何个体不能同时是库类中的个体。尽管如此,我的建模中的类目前共享电话号码属性。

现在的问题是:从本体论的角度来看,这个程序是否允许?或者我是否必须为两个类分别建模“电话号码”属性?

我使用了 HermiT(版本 1.4.3)和 Pellet 两个推理器作为测试,当我创建具有相应属性的“Library Team”类的个体时,这两个推理器都会发出错误。我认为这与类的不相交有关,快速的双重检查已经证实了这一点。尽管如此,在我看来,如果可能的话,在其他类中重用类的属性而不是重新定义它们似乎更有意义。如果这确实不可能,我将不得不重构我的整个本体,现在我希望这不是必要的。
长话短说:谁能解释我的推理错误?

提前致谢, 维拉

ontology protege
1个回答
0
投票

不相交的类可以共享对象和/或数据属性。

您似乎具有面向对象编程背景。在编程中,类具有属性(或属性)。然而,在OWL(本体语言)中,属性属于类,而是用于表达类之间的关系(对象属性)或表达类与数据类型之间的关系(数据属性)。我在这里详细讨论了 OO 和 OWL 之间的区别。

造成不一致的原因可能有很多,如果没有看到你的本体,就很难准确地知道其原因。猜测是您对导致问题的属性有域和/或范围限制。

假设您有类

Library
Team
,它们是不相交的,并且您有一个数据属性
telephone
,并且您已将它们定义如下:

DataProperty: telephone

Class: Library 
   SubClassOf:
       telephone some xsd:string

Class: Team 
   DisjointWith: Library
   SubClassOf:
       telephone some xsd:string  

  

这本身不会导致不一致。然而,当你如下定义

telephone
时,会导致不一致:

 DataProperty: telephone
   Domain: Library, Team

这会导致不一致。

Domain: Library, Team
公理告诉推理者,每当一个个体通过
telephone
连接到另一个个体时,它必须推断出第一个个体是
Library
类型,并且 Team
 类型。因此出现了不一致。

有2种可能的解决方案:

  1. 删除

    Domain: Library, Team

    公理。这是迄今为止最常见的处理原因。

  2. 在某些情况下,我发现创建一个定义为与

    TelephoneDomain

     等效的 
    Library or Team
     类很有用。那么
    telephone
    定义如下:

    DataProperty: telephone Domain: TelephoneDomain
    
    
使用 (a)

Domain: TelephoneDomain

 而不是 (b)
Domain: Library or Team
 的主要优点是 (a) 会给我推断,但 (b) 不会,因为 
Library or Team
 是一个匿名类。请参阅我的
StackOverflow 关于匿名类的答案

© www.soinside.com 2019 - 2024. All rights reserved.