As part of my bachelor's thesis, I am trying to create a universal ontology for organizations (I know about the existence of The Organizational Ontology from the W3C). In the process, I came up with the following scheme (ontology drawn in pencil). The idea is to have one main entity (in my case it is the entity Workspace) for which I could set its type (organization, department, position, person, place) and which I could pair with itself (with using the typed relationship "Relation") to build any arbitrarily complex organizational structure.
I tried to translate the drawn ontology into an RDF graph using the WebVOWL online utility and this is what I got (picture of ontology).
Unfortunately, my knowledge of ontological modeling theory and semantic web technologies leaves much to be desired, and I ask people who understand them to help me.
Correct me if I'm wrong, but I have a feeling that in the ontology I've built, the Relation entity must have all the links at once. (Relation - relationType - HoldsPost, Relation - relationType - ReportsTo, Relation - relationType - subOrganization, etc.). I need the Relation entity instance to have only one relationship (For example, only Relation - relationType - HoldsPost).
Only one solution to this problem comes to mind - get rid of the HeadOf, HoldsPost, ReportsTo, .. nodes and instead add a string node in which to write the desired value, depending on the type of relationship.
So it seems that the problem is how to build an ontology that will provide a Relation instance with only one of the types listed, and not all at once.
I would be really grateful for any help and feedback.
Also I am attaching the contents of the Turtle file generated by the WebVOWL utility:
#################################################################
### Generated with the experimental alpha version of the TTL exporter of WebVOWL (version 1.1.7) http://visualdataweb.de/webvowl/ ###
#################################################################
@prefix : <http://visualdataweb.org/organizationalOntology/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix wot: <http://xmlns.com/wot/0.1/> .
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@base <http://visualdataweb.org/organizationalOntology/> .
<http://visualdataweb.org/organizationalOntology/> rdf:type owl:Ontology ;
dc:title "Organizational structure ontology"@en;
dc:description "Ontology for modelling organizational structures, specializable to a broad variety of types of organization."@en;
owl:versionInfo "0.1"@en;
dc:creator "" .
#################################################################
### Property Definitions (Number of Property) 20 ###
# --------------------------- Property 0-------------------------
:supports rdf:type owl:ObjectProperty ;
rdfs:label "supports"@en;
rdfs:domain :Workspace;
rdfs:range :SupportedOperations .
# --------------------------- Property 1-------------------------
:constraints rdf:type owl:ObjectProperty ;
rdfs:label "limits"@en;
rdfs:domain :Workspace;
rdfs:range :BuisnessRules .
# --------------------------- Property 2-------------------------
:name rdf:type owl:DatatypeProperty ;
rdfs:label "name"@en;
rdfs:domain :Workspace;
rdfs:range rdfs:Datatype .
# --------------------------- Property 3-------------------------
:relationWorkspaceLink rdf:type owl:ObjectProperty ;
rdfs:label "relationWorkspaceLink"@en;
rdfs:domain :Relation;
rdfs:range :Workspace .
# --------------------------- Property 4-------------------------
:hasType rdf:type owl:ObjectProperty ;
rdfs:label "relationType"@en;
rdfs:domain :Relation;
rdfs:range :HeadOf .
# --------------------------- Property 5-------------------------
:hasType rdf:type owl:ObjectProperty ;
rdfs:label "relationType"@en;
rdfs:domain :Relation;
rdfs:range :HoldPost .
# --------------------------- Property 6-------------------------
:workspaceRelationLink rdf:type owl:ObjectProperty ;
rdfs:label "workspaceRelationLink"@en;
rdfs:domain :Workspace;
rdfs:range :Relation .
# --------------------------- Property 7-------------------------
:hasType rdf:type owl:ObjectProperty ;
rdfs:label "relationType"@en;
rdfs:domain :Relation;
rdfs:range :ReportsTo .
# --------------------------- Property 8-------------------------
:hasType rdf:type owl:ObjectProperty ;
rdfs:label "relationType"@en;
rdfs:domain :Relation;
rdfs:range : .
# --------------------------- Property 9-------------------------
:hasType rdf:type owl:ObjectProperty ;
rdfs:label "relationType"@en;
rdfs:domain :Relation;
rdfs:range :SubUnit .
# --------------------------- Property 10-------------------------
:hasType rdf:type owl:ObjectProperty ;
rdfs:label "relationType"@en;
rdfs:domain :Relation;
rdfs:range :MemberOf .
# --------------------------- Property 11-------------------------
:hasType rdf:type owl:ObjectProperty ;
rdfs:label "relationType"@en;
rdfs:domain :Relation;
rdfs:range :LocatesIn .
# --------------------------- Property 12-------------------------
:workspaceType rdf:type owl:ObjectProperty ;
rdfs:label "workspaceType"@en;
rdfs:domain :Workspace;
rdfs:range :Place .
# --------------------------- Property 13-------------------------
:workspaceType rdf:type owl:ObjectProperty ;
rdfs:label "workspaceType"@en;
rdfs:domain :Workspace;
rdfs:range :Organization .
# --------------------------- Property 14-------------------------
:workspaceType rdf:type owl:ObjectProperty ;
rdfs:label "workspaceType"@en;
rdfs:domain :Workspace;
rdfs:range :Department .
# --------------------------- Property 15-------------------------
:workspaceType rdf:type owl:ObjectProperty ;
rdfs:label "workspaceType"@en;
rdfs:domain :Workspace;
rdfs:range :Person .
# --------------------------- Property 16-------------------------
:workspaceType rdf:type owl:ObjectProperty ;
rdfs:label "workspaceType"@en;
rdfs:domain :Workspace;
rdfs:range :Post .
# --------------------------- Property 17-------------------------
:hasCoordinates rdf:type owl:ObjectProperty ;
rdfs:label "hasCoordinates"@en;
rdfs:domain :Place;
rdfs:range :Coordinates .
# --------------------------- Property 18-------------------------
:coordinatesString rdf:type owl:DatatypeProperty ;
rdfs:label "coordinatesString"@en;
rdfs:domain :Coordinates;
rdfs:range xsd:string .
# --------------------------- Property 19-------------------------
:description rdf:type owl:DatatypeProperty ;
rdfs:label "description"@en;
rdfs:domain :Workspace;
rdfs:range rdfs:Datatype .
### Class Definitions (Number of Classes) 17 ###
# --------------------------- Class 0-------------------------
:Workspace rdf:type owl:Class;
rdfs:label "Workspace"@en .
# --------------------------- Class 1-------------------------
:SupportedOperations rdf:type owl:Class;
rdfs:label "SupportedOperations"@en .
# --------------------------- Class 2-------------------------
:BuisnessRules rdf:type owl:Class;
rdfs:label "BuisnessRules"@en .
# --------------------------- Class 3-------------------------
:Relation rdf:type owl:Class;
rdfs:label "Relation"@en .
# --------------------------- Class 4-------------------------
:ReportsTo rdf:type owl:Class;
rdfs:label "ReportsTo"@en .
# --------------------------- Class 5-------------------------
:MemberOf rdf:type owl:Class;
rdfs:label "MemberOf"@en .
# --------------------------- Class 6-------------------------
:HoldPost rdf:type owl:Class;
rdfs:label "HoldsPost"@en .
# --------------------------- Class 7-------------------------
:HeadOf rdf:type owl:Class;
rdfs:label "HeadOf"@en .
# --------------------------- Class 8-------------------------
:LocatesIn rdf:type owl:Class;
rdfs:label "LocatesIn"@en .
# --------------------------- Class 9-------------------------
: rdf:type owl:Class;
rdfs:label "SubOrganization"@en .
# --------------------------- Class 10-------------------------
:SubUnit rdf:type owl:Class;
rdfs:label "SubUnit"@en .
# --------------------------- Class 11-------------------------
:Organization rdf:type owl:Class;
rdfs:label "Organization"@en .
# --------------------------- Class 12-------------------------
:Department rdf:type owl:Class;
rdfs:label "Department"@en .
# --------------------------- Class 13-------------------------
:Post rdf:type owl:Class;
rdfs:label "Post"@en .
# --------------------------- Class 14-------------------------
:Person rdf:type owl:Class;
rdfs:label "Person"@en .
# --------------------------- Class 15-------------------------
:Place rdf:type owl:Class;
rdfs:label "Place"@en .
# --------------------------- Class 16-------------------------
:Coordinates rdf:type owl:Class;
rdfs:label "Coordinates"@en .