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

与世无争的帅哥 提交于 2019-11-26 16:56:15

问题


I have modelled the following in my Ontology:

Club employs some Player, Player hasNationality some Nationality, Player hasNationalStatus value National_Player, Country is equivalent to Nationality.

I want the Ontology to infer that:

If a Player hasNationality some Nationality and, Player hasNationalStatus value National_Player then, Country(Same as the nationality the player has) employs Player.

As an example:

{Steven_Gerrard} hasNationality value England and, {Steven_Gerrard} hasNationalStatus value National_Player therefore, {England} employs [Steven_Gerrard}.

Is there a possible way to add this knowledge to Protege?

Thanks.

Edit:

Error Messages:

Error 42 Logged at Tue Apr 01 20:49:24 BST 2014

OWLReasonerRuntimeException: Non-simple object property 'http://www.semanticweb.org/u1cjd/ontologies/2014/1/untitled-ontology-2#employs' is used as a simple one

and

Error 43 Logged at Tue Apr 01 20:49:24 BST 2014 ReasonerInternalException: tRole.cpp:243: assertion 'Ancestor.empty() && Descendant.empty()' fails


回答1:


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.

You just need to use some rolification and a property chain axiom. 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.

It's not enough to give employs the subproperty hasNationality-1, because you want to ensure that the player has a particular national status. 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. You can do that with rolification. Just declare a new object property RNationalPlayers and assert the axioms

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

In the description logic syntax, these would be something like:

  1. =hasNationalStatus.National_Player ≡ ∃RNationalPlayer.Self
  2. hasNationality-1 • RNationalPlayer ⊑ employs

This will work in some reasoners, but unfortunately, this does bring us out of OWL 2 DL and into OWL full. 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.

However, it sounds like you're using a reasoner that supports SWRL rules, in which case you could simply add the rule:

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



来源:https://stackoverflow.com/questions/22792359/using-property-chains-to-get-inferred-knowledge-in-an-owl-ontologyprotege

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!