Search code examples
rdfowlontologyprotegeinference

owl:ObjectProperty and reasoning


In my ontology, I have two individuals of type abc:Invention :

abc:InventionA rdf:type abc:Invention .
abc:InventionB rdf:type abc:Invention .

and 2 individuals of type abc:MarketSector, linked with an object property abc:includedIn :

abc:MrktSctrA rdf:type abc:MarketSector .
abc:MrktSctrB rdf:type abc:MarketSector .    
abc:MrktSctrB abc:includedIn MrktSctrA .

Currently, InventionA and InventionB are linked with, respectively MrktSctrA and MrktSctrB via an object property abc:targets :

abc:InventionA abc:targets abc:MrktSctrA .
abc:InventionB abc:targets abc:MrktSctrB .

Is it possible to create an object property abc:commonObjectivesWith equivalent to the following statement ?

If an Invention targets a MarketSector, and another Invention targets another MarketSector, and any of these MarketSectors is included in the other MarketSector, then those two Inventions have common objectives.

Then, if I start my reasoner on this ontology, it can infer

abc:InventionA abc:commonObjectivesWith abc:InventionB

Is this possible ? Thanks in advice


Solution

  • You can do this with a SWRL rule as shown in your answer, but that requires a reasoner that can use SWRL rules. You can also do this in OWL 2 DL using subproperty chains. You've got this situation, where the solid arrows are relationships in your data, and the dotted arrow is what you want to infer:

    image of graph (see revision history for ASCII art)

    You can represent this with an OWL 2 DL subproperty chain axiom of the form (first abstract, then in Protégé with the resulting ontology):

    targets o includes o inverse(targets) SubPropertyOf common

    protégé screenshot

    @prefix :      <https://stackoverflow.com/q/24569317/1281433/paths#> .
    @prefix owl:   <http://www.w3.org/2002/07/owl#> .
    @prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
    @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
    
    <https://stackoverflow.com/q/24569317/1281433/paths> aowl:Ontology .
    :includesClassification a owl:ObjectProperty .
    :targets                a owl:ObjectProperty .
    :commonObjectivesWith
            a owl:ObjectProperty ;
            owl:propertyChainAxiom  ( :targets :includesClassification [ owl:inverseOf :targets ] ) .