使用属性链在OWL本体(Protege)中获取推断知识

时间:2014-04-01 17:05:29

标签: owl protege description-logic

我在我的Ontology中建模了以下内容:

俱乐部雇用一些玩家,玩家拥有国籍一些国籍,玩家拥有国家地位值National_Player,国家相当于国籍。

我希望Ontology推断:

如果玩家拥有一些国籍,而玩家拥有国家状态值National_Player则国家(与玩家所拥有的国籍相同)使用玩家。

举个例子:

{Steven_Gerrard}具有国家价值英格兰和{Steven_Gerrard}具有NationalStatus值National_Player因此,{England}雇用[Steven_Gerrard}。

有没有办法将这些知识添加到Protege?

感谢。

编辑:

错误讯息:

错误42登录于2014年4月1日星期二20:49:24

OWLReasonerRuntimeException:非简单对象属性“http://www.semanticweb.org/u1cjd/ontologies/2014/1/untitled-ontology-2#employs”用作简单对象

错误43登录于2014年4月1日星期二20:49:24 BST ReasonerInternalException:tRole.cpp:243:断言'Ancestor.empty()&& Descendant.empty()'失败

1 个答案:

答案 0 :(得分:9)

这是可能的,它实际上与我在上一个问题Adding statements of knowledge to an OWL Ontology in Protege)的答案中提到的技术非常相似,这个答案的结构几乎与我最近的答案相同。 answers.semanticweb.com问题,OWL property inference from blank node - modelling

你只需要使用一些rolification和一个属性链公理。需要注意的是,现有数据的格式为上箭头,所需信息位于下箭头。

diagrm

使用子属性 hasNationality -1 是不够的,因为你想确保玩家有一个特别的国家地位。这是您需要滚动的地方。您希望使用具有 hasNationality -1 •p 的子属性链,其中 p 是一个特殊属性,只关注具有国家地位的球员。你可以通过rol化来做到这一点。只需声明一个新的对象属性 R NationalPlayers 并断言公理

  
      
  1. hasNationalStatus National_Player EquivalentTo R_NationalPlayer some self
  2.   
  3. 反向(hasNationality) o R_NationalPlayer subPropertyOf 使用
  4.   

在描述逻辑语法中,这些类似于:

  
      
  1. =hasNationalStatus.National_Player≡∃R NationalPlayer Self
  2.   
  3. hasNationality -1 •R NationalPlayer ⊑雇用
  4.   

这将在一些推理者中起作用,但不幸的是,这确实将我们带出了OWL 2 DL并进入了OWL。在this answer的评论中对此进行了详细讨论。正如更新后的问题中的错误消息所示,使用现在是一个非简单属性,并且在只应使用简单属性的地方使用。有关使属性变得简单的更多信息,请参阅11.1 Property Hierarchy and Simple Object Property Expressions,有关属性的更多信息,请参见11.2 The Restrictions on the Axiom Closure

但是,听起来您正在使用支持SWRL规则的推理器,在这种情况下您只需添加规则:

  

hasNationality(?player,?country)∧hasNationalStatus(?player,National_Player)→雇用(?country,?player)