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
Ok I find out how : On Protégé 4, I clicked Window -> Views -> Ontology Views -> Rules. In Rules pane, I added the rule :
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:
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):