Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

like image 808
ChrisDLFC Avatar asked Apr 01 '14 17:04

ChrisDLFC


1 Answers

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.

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. 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)

like image 170
Joshua Taylor Avatar answered Sep 28 '22 02:09

Joshua Taylor