I want to develop an ontology with Protégé. My class tree is as follows:
├── Binary
├── Function
├── Plugin
My property tree is:
├── available_function
├── needs_binary
├── restricted_function
In this ontology, I want to model that a Plugin needs a certain binary and for the implementation of the binary I can use the function linked to it. However, I also want to model, that certain functions are forbidden from being used in the plugin. I now want to make sure, that an available function is not a restricted function. I was thinking about using the disjoint with
construct for properties, however, I did not find anything regarding more complex structures (using the property expression editor) for it.
Also, I also realize, that in this example, the ontology is not properly structured. However, this is just a subset of the bigger ontology in which I want to achieve the discussed constraint.
How can I achieve this?
You can achieve this by introducing classes AvailableFunction
and Restricted Function
that are disjoint and subclasses of Function
. Then the range of available_function
is set to AvailableFunction
and that of restricted_function
as RestrictedFunction
.
To model that a Plugin
needs some function we introduce a needs
object property with range Binary
. To state that Plugin
needs a Binary
and its implementation is an available function we state the following axioms:
Class: Plugin
SubClassOf:
hasAvailableFunction some AvailableFunction,
needs some Binary
Here is the complete ontology:
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#>
Prefix: so: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl>
Prefix: xml: <http://www.w3.org/XML/1998/namespace>
Prefix: xsd: <http://www.w3.org/2001/XMLSchema#>
Prefix: : <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl>
Ontology: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl>
<https://henrietteharmse.com/79424806/v0.0.1/disjoint-properties-for-different-domains>
ObjectProperty: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#hasAvailableFunction>
SubPropertyOf:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#hasFunction>
Range:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#AvailableFunction>
ObjectProperty: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#hasFunction>
ObjectProperty: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#hasRestrictedFunction>
SubPropertyOf:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#hasFunction>
Range:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#RestrictedFunction>
ObjectProperty: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#needs>
Range:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#Binary>
Class: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#AvailableFunction>
SubClassOf:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#Function>
Class: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#Binary>
Class: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#Function>
DisjointUnionOf:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#AvailableFunction>, <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#RestrictedFunction>
Class: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#Implementation>
Class: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#Plugin>
SubClassOf:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#hasAvailableFunction> some <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#AvailableFunction>,
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#needs> some <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#Binary>
Class: <https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#RestrictedFunction>
SubClassOf:
<https://henrietteharmse.com/SO/79424806/disjoint-properties-for-different-domains.owl#Function>