Unsuccessful team-employs-player property chain
Asked Answered
F

1

1

I am intrigued by Using Property Chains to get inferred Knowledge in an OWL Ontology(Protege)

The accepted answer has two solutions: two OWL expressions, or a SWRL rule. I get the sense that the OP found the all-OWL (property chain) solution confusing but was satisfied with the SWRL answer.

I am trying to implement the all-OWL solution. So far, I don't see an inference that Steven_Gerrard is employed by England when reasoning with Pellet.

I do see the inference

Steven_Gerrard R_NationalPlayer Steven_Gerrard 

Is that an error?

  • Should I use a different reasoner? The OP got an error from FaCT++.

  • Is my substitution of some for values breaking the reasoning?

The answerer suggested a General Class Axiom of

hasNationalStatus value National_Player EquivalentTo R_NationalPlayer some Self

but Protege compalined about my use of vlaue. It does accept the following:

hasNationalStatus some ({National_Player}) EquivalentTo R_NationalPlayer some  Self 
  • Have I made some mistake in modelling Club, Country and Nationality?

My implementation:

@prefix : <http://example.com/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://example.com/playerEmployment.owl> rdf:type owl:Ontology .

<http://example.com/R_NationalPlayer> rdf:type owl:ObjectProperty .

<http://example.com/employs> rdf:type owl:ObjectProperty ;
                           rdfs:subPropertyOf owl:topObjectProperty ;
                           owl:propertyChainAxiom ( [ owl:inverseOf <http://example.com/hasNationality>
                                                    ]
                                                    <http://example.com/R_NationalPlayer>
                                                  ) .

<http://example.com/hasNationalStatus> rdf:type owl:ObjectProperty .

<http://example.com/hasNationality> rdf:type owl:ObjectProperty .

<http://example.com/Club> rdf:type owl:Class ;
                        owl:equivalentClass [ rdf:type owl:Restriction ;
                                              owl:onProperty <http://example.com/employs> ;
                                              owl:someValuesFrom <http://example.com/Player>
                                            ] .

<http://example.com/NationalStatus> rdf:type owl:Class .

<http://example.com/Nationality> rdf:type owl:Class .

<http://example.com/Player> rdf:type owl:Class ;
                          owl:equivalentClass [ rdf:type owl:Restriction ;
                                                owl:onProperty <http://example.com/hasNationalStatus> ;
                                                owl:someValuesFrom <http://example.com/NationalStatus>
                                              ] ,
                                              [ rdf:type owl:Restriction ;
                                                owl:onProperty <http://example.com/hasNationality> ;
                                                owl:someValuesFrom <http://example.com/Nationality>
                                              ] .

<http://example.com/England> rdf:type owl:NamedIndividual ,
                                    <http://example.com/Club> ,
                                    <http://example.com/Nationality> .

<http://example.com/National_Player> rdf:type owl:NamedIndividual ,
                                            <http://example.com/NationalStatus> .

<http://example.com/Steven_Gerrard> rdf:type owl:NamedIndividual ,
                                           <http://example.com/Player> ;
                                  <http://example.com/hasNationalStatus> <http://example.com/National_Player> ;
                                  <http://example.com/hasNationality> <http://example.com/England> .

[ rdf:type owl:Restriction ;
  owl:onProperty <http://example.com/hasNationalStatus> ;
  owl:someValuesFrom [ rdf:type owl:Class ;
                       owl:oneOf ( <http://example.com/National_Player>
                                 )
                     ] ;
  owl:equivalentClass [ rdf:type owl:Restriction ;
                        owl:onProperty <http://example.com/R_NationalPlayer> ;
                        owl:hasSelf "true"^^xsd:boolean
                      ]
] .
Flor answered 7/7, 2017 at 19:31 Comment(3)
If R_NationalPlayer is supposed to be a rolification, then Steven_Gerrard R_NationalPlayer Steven_Gerrard isn't incorrect. The point of the R_NationalPlayer is that it relates each NationalPlayer to itself, right? So Steven_Gerrard should be related to Steven_Gerrard.Inquisitive
I'm confused. The inferred axiom is quite obvious: You have a1 = :Steven_Gerrard :hasNationalStatus :National_Player> and then the class equivalence axiom where the left-hand side exactly matches a1. As Josuhua said, the right hand side exactly expresses that :Steven_Gerrard is connected to himslef by the property :R_NationalPlayerEsotropia
As a really helpful tool for understanding the inferences I can highly suggest to use the great explanation feature of Protege (click on the question mark next to the inferred axiom)Esotropia
F
2

Ugh. Pellet can make the desired inference from the ontology included in my question.

I was looking on Steven's Individual page. I should have been looking on England's individual page.

enter image description here

Flor answered 7/7, 2017 at 21:24 Comment(1)
:D Right, the direction always matters when the property is not delcared as symmetric.Esotropia

© 2022 - 2024 — McMap. All rights reserved.