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

前端 未结 1 1915
逝去的感伤
逝去的感伤 2020-12-03 13:00

I have modelled the following in my Ontology:

Club employs some Player, Player hasNationality some Nationality, Player hasNationalStatus value National_Player, Count

相关标签:
1条回答
  • 2020-12-03 13:11

    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)

    0 讨论(0)
提交回复
热议问题