简体   繁体   English

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

[英]Using Property Chains to get inferred Knowledge in an OWL Ontology(Protege)

I have modelled the following in my Ontology: 我在我的Ontology中建模了以下内容:

Club employs some Player, Player hasNationality some Nationality, Player hasNationalStatus value National_Player, Country is equivalent to Nationality. 俱乐部雇用一些玩家,玩家拥有国籍一些国籍,玩家拥有国家地位值National_Player,国家相当于国籍。

I want the Ontology to infer that: 我希望Ontology推断:

If a Player hasNationality some Nationality and, Player hasNationalStatus value National_Player then, Country(Same as the nationality the player has) employs Player. 如果一个玩家拥有一些国籍,而玩家拥有国家状态值National_Player那么,国家(与玩家拥有的国籍相同)雇用玩家。

As an example: 举个例子:

{Steven_Gerrard} hasNationality value England and, {Steven_Gerrard} hasNationalStatus value National_Player therefore, {England} employs [Steven_Gerrard}. {Steven_Gerrard}具有国家价值英格兰和{Steven_Gerrard}具有NationalStatus值National_Player因此,{England}雇用[Steven_Gerrard}。

Is there a possible way to add this knowledge to Protege? 有没有可能的方法将这些知识添加到Protege?

Thanks. 谢谢。

Edit: 编辑:

Error Messages: 错误消息:

Error 42 Logged at Tue Apr 01 20:49:24 BST 2014 错误42登录于2014年4月1日星期二20:49:24 BST

OWLReasonerRuntimeException: Non-simple object property ' http://www.semanticweb.org/u1cjd/ontologies/2014/1/untitled-ontology-2#employs ' is used as a simple one OWLReasonerRuntimeException:非简单对象属性' http://www.semanticweb.org/u1cjd/ontologies/2014/1/untitled-ontology-2#employs '用作简单对象

and

Error 43 Logged at Tue Apr 01 20:49:24 BST 2014 ReasonerInternalException: tRole.cpp:243: assertion 'Ancestor.empty() && Descendant.empty()' fails 错误43登录于星期二四月01 20:49:24 BST 2014 ReasonerInternalException:tRole.cpp:243:断言'Ancestor.empty()&& Descendant.empty()'失败

This is possible, and it's actually very similar to the technique I mentioned in an answer to your previous question, Adding statements of knowledge to an OWL Ontology in Protege) , and the structure of this answer is almost identical to my answer to a recent answers.semanticweb.com question, OWL property inference from blank node - modelling . 这是可能的,它实际上非常类似于我在回答您之前的问题时提到的技术, 将知识语句添加到Protege中的OWL本体论 ,并且这个答案的结构几乎与我对最近答案的答案相同.semanticweb.com问题, 来自空白节点的OWL属性推断 - 建模

You just need to use some rolification and a property chain axiom. 你只需要使用一些rolification和一个属性链公理。 The point to note is that the existing data has the form of the upper arrows, and the desired information is in the lower arrows. 需要注意的是,现有数据具有上箭头的形式,所需信息位于下箭头中。

diagrm

It's not enough to give employs the subproperty hasNationality -1 , because you want to ensure that the player has a particular national status. 雇员提供子属性hasNationality -1是不够的,因为你想确保玩家具有特定的国家身份。 This is where you need rolification. 这是您需要滚动的地方。 You want employs to have a subproperty chain of hasNationality -1 • p , where p is a special property that only relates players with national status to themselves. 您希望雇员拥有hasNationality -1 •p的子属性链,其中p是一个特殊属性,仅将具有国家身份的玩家与自己联系起来。 You can do that with rolification. 你可以通过rol化来做到这一点。 Just declare a new object property R NationalPlayers and assert the axioms 只需声明一个新的对象属性R NationalPlayers并断言公理

  1. hasNationalStatus value National_Player EquivalentTo R_NationalPlayer some Self hasNationalStatus National_Player EquivalentTo R_NationalPlayer some self
  2. inverse (hasNationality) o R_NationalPlayer subPropertyOf employs (hasNationality) o R_NationalPlayer subPropertyOf使用

In the description logic syntax, these would be something like: 在描述逻辑语法中,这些类似于:

  1. =hasNationalStatus.National_Player ≡ ∃R NationalPlayer . = hasNationalStatus.National_Player≡∃RNationalPlayer。 Self
  2. hasNationality -1 • R NationalPlayer ⊑ employs hasNationality -1•R NationalPlayer⊑采用

This will work in some reasoners, but unfortunately, this does bring us out of OWL 2 DL and into OWL full. 这将在一些推理者中起作用,但不幸的是,这确实将我们从OWL 2 DL中带出并进入OWL。 This was discussed in some detail in the comments on this answer . 这个答案的评论中对此进行了详细讨论。 As the error message in the updated question indicates, employs is now a non-simple property, and used in a place where only simple properties should be used. 正如更新的问题中的错误消息所示, 使用现在是非简单属性,并且在仅应使用简单属性的地方使用。 See 11.1 Property Hierarchy and Simple Object Property Expressions for more about what makes a property simple or not, and 11.2 The Restrictions on the Axiom Closure for more about properties can appear where. 有关使属性简单与否的更多信息,请参见11.1属性层次结构和简单对象属性表达式 .11.2有关属性的更多信息可以出现在Axiom Closure上的限制

However, it sounds like you're using a reasoner that supports SWRL rules, in which case you could simply add the rule: 但是,听起来你正在使用支持SWRL规则的推理器,在这种情况下你可以简单地添加规则:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM