Unsuccessful team-employs-player property chain

2019-08-10 23:07发布

问题:

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

回答1:

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.