@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix mod: <https://w3id.org/mod#> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix och: <https://w3id.org/def/och#> .
@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 vann: <http://purl.org/vocab/vann/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#>.
@prefix omv: <http://omv.ontoware.org/2007/07/OWLChanges>.
@prefix prov: <http://www.w3.org/ns/prov#>.

##########################################################
### Part corresponding to the reused terms ###
#########################################################

cc:license a owl:AnnotationProperty .

dcterms:bibliographicCitation a owl:AnnotationProperty .

dcterms:contributor a owl:AnnotationProperty .

dcterms:created a owl:AnnotationProperty .

dcterms:creator a owl:AnnotationProperty .

dcterms:description a owl:AnnotationProperty .

dcterms:issued a owl:DatatypeProperty .

dcterms:title a owl:AnnotationProperty .

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

owl:priorVersion a owl:AnnotationProperty .

owl:versionIRI a owl:AnnotationProperty .

dcat:Dataset a owl:Class .

foaf:Agent a owl:Class .

rdfs:Datatype a owl:Class .

owl:Ontology a owl:Class  .
 
rdfs:Resource a owl:Class .

owl:DatatypeProperty a owl:Class .

rdf:Property a owl:Class .

owl:ObjectProperty a owl:Class .

owl:Class a owl:Class  .


#### Ontology Metadata

och: a owl:Ontology ;
    cc:license <https://creativecommons.org/licenses/by/4.0/legalcode> ;
    dcterms:bibliographicCitation "Conde-Herreros, D. Pernisch, R., Poveda-Villalón, M., Corcho, O., & Chaves-Fraga, D. (2024). OCH: The OWL Change Ontology" ;
    dcterms:contributor "Diego Conde Herreros" ;
    dcterms:created "2024-04-17"^^xsd:date ;
    dcterms:modified "2024-12-19"^^xsd:date;    
    dcterms:creator "Diego Conde-Herreros",
            "Romana Pernisch",
            "María Poveda-Villalón",
            "Oscar Corcho",
            "David Chaves-Fraga";
    dcterms:description "An ontology for describing changes between OWL ontology versions" ;
    dcterms:title "OWL Change Ontology" ;
    dcterms:abstract "As any other engineering product, ontologies evolve during their lifecycle due to several reasons such as accommodating new requirements or fixing issues. To keep track of these changes, several tools have defined ad-hoc formalisms to define and manage them. However, some of them are not based on standard interoperable languages such as RDF, and the RDF-based ones cover a limited set of changes. In this paper, we present the OWL Change Ontology (OCH), an ontology to capture changes in ontologies. Developed following the LOT methodology, OCH provides a declarative framework for documenting ontology changelogs. With this approach, ontologies gain a valuable resource to improve their lifecycle management, while associated semantic products such as declarative mappings (e.g., RML) and validation shapes (e.g., SHACL) can take advantage of standardized and machine-readable changelogs to streamline their schema evolution.";
    vann:preferredNamespacePrefix "och" ;
    vann:preferredNamespaceUri <https://w3id.org/def/och#> ;
    owl:versionInfo "2.0.0"@en;
    mod:createdWith <https://chowlk.linkeddata.es/> .

############################################################
#### SKOS for the representation ###
###########################################################
och:PropertyCharacteristic a owl:Class;
        rdfs:label "Property Characteristic"@en;
        rdfs:comment "The top term that encompases all characteristics"@en.

och:FunctionalProperty  a och:PropertyCharacteristic;
        rdfs:label "Functional Property"@en;
        rdfs:comment "The term that describes Functional Properties."@en.

och:ObjectPropertyCharacteristic a owl:Class;
        rdfs:label "Object Property Characteristic"@en;
        rdfs:comment "The term that describes those property characteristics that are exclusive to object properties"@en;
        rdfs:subClassOf och:PropertyCharacteristic.

och:SymmetricProperty a och:ObjectPropertyCharacteristic;
        rdfs:label "Symmetric Property"@en;
        rdfs:comment "The term that describes symmetric properties."@en.

och:AsymmetricProperty a och:ObjectPropertyCharacteristic;
        rdfs:label "Asymmetric Property"@en;
        rdfs:comment "The term that describes asymmetric properties."@en.       

och:ReflexiveProperty a och:ObjectPropertyCharacteristic;
        rdfs:label "Reflexive Property"@en;
        rdfs:comment "The term that describes reflexive properties."@en.

och:IrreflexiveProperty a och:ObjectPropertyCharacteristic;
        rdfs:label "Irreflexive Property"@en;
        rdfs:comment "The term that describes irreflexive properties."@en.

och:InverseFunctionalProperty a och:ObjectPropertyCharacteristic;
        rdfs:label "Inverse Functional Property"@en;
        rdfs:comment "The term that describes the inverse functional properties."@en.

och:TransitiveProperty a och:ObjectPropertyCharacteristic;
        rdfs:label "Transitive Property"@en;
        rdfs:comment "The term that describes transitive properties."@en.

##########################################################################################


och:addedDomain a owl:ObjectProperty ;
    rdfs:label "added domain" ;
    rdfs:comment "The added domain of an Add Domain change operation";
    rdfs:domain och:AddDomain ;
    rdfs:range owl:Class .

och:ChangeSet a owl:Class ;
    rdfs:label "Change Set" ;
    rdfs:comment "The class for representing sets of changes, it can be used for representing complex changes made out of atomic changes.";
    rdfs:subClassOf och:Changelog .

och:addedRangeToProperty a owl:ObjectProperty ;
    rdfs:label "add range for property" ;
    rdfs:comment "The property to which the change is being added.";
    rdfs:domain och:AddRange ;
    rdfs:range rdf:Property .

och:addedCharacteristic a owl:ObjectProperty ;
    rdfs:label "added characteristic" ;
    rdfs:comment "The characteristic being added to a given property";
    rdfs:domain och:AddCharacteristic ;
    rdfs:range och:PropertyCharacteristic .

och:addedClass a owl:ObjectProperty ;
    rdfs:label "added class" ;
    rdfs:comment "The class being added in an AddClass operation";
    rdfs:domain och:AddClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:addedEntity .

och:addedDataProperty a owl:ObjectProperty ;
    rdfs:label "added data property" ;
    rdfs:comment "The data property that is being added to the ontology";
    rdfs:domain och:AddDataProperty ;
    rdfs:range owl:DatatypeProperty ;
    rdfs:subPropertyOf och:addedEntity .

och:addedDataRange a owl:ObjectProperty ;
    rdfs:label "added data range" ;
    rdfs:comment "The range being added to a data property";
    rdfs:domain och:AddRangeDataProperty ;
    rdfs:range rdfs:Datatype .

och:addedObjectProperty a owl:ObjectProperty ;
    rdfs:label "added object property" ;
    rdfs:comment "The object property being added to the ontology";
    rdfs:domain och:AddObjectProperty ;
    rdfs:range owl:ObjectProperty ;
    rdfs:subPropertyOf och:addedEntity .

och:addedObjectRange a owl:ObjectProperty ;
    rdfs:label "added object range" ;
    rdfs:comment "The range that is being added to the object property";
    rdfs:domain och:AddRangeObjectProperty ;
    rdfs:range owl:Class .

och:deprecatedEntity a owl:ObjectProperty ;
    rdfs:label "deprecated entity" ;
    rdfs:comment "The OWL Entity that is being deprecated";
    rdfs:domain och:DeprecateEntity ;
    rdfs:range rdfs:Resource .

och:fromChangelog a owl:ObjectProperty ;
    rdfs:label "from changelog" ;
    rdfs:comment "The fromChangelog property indicates that a given change belongs to a Changelog";
    rdfs:domain och:OntologicalChange ;
    rdfs:range och:Changelog .

och:issuedBy a owl:ObjectProperty ;
    rdfs:label "issued by" ;
    rdfs:comment "The issuedBy property indicates what Agent has issued a change.";
    rdfs:domain och:OntologicalChange ;
    rdfs:range foaf:Agent .

och:newVersion a owl:ObjectProperty ;
    rdfs:label "new version" ;
    rdfs:comment "The new version the ontology is updated to.";
    rdfs:domain och:Changelog ;
    rdfs:range owl:Ontology .

och:outdatedEntityName a owl:ObjectProperty ;
    rdfs:label "outdated entity name" ;
    rdfs:comment "The former name of the OWL Entity that has been renamed";
    rdfs:domain och:RenameEntity ;
    rdfs:range rdfs:Resource .

och:prevVersion a owl:ObjectProperty ;
    rdfs:label "previous version" ;
    rdfs:comment "The former version of the ontology that is being outdated";
    rdfs:domain och:Changelog ;
    rdfs:range owl:Ontology .

och:addedCharacteristicToProperty a owl:ObjectProperty ;
    rdfs:label "add Characteristic to property" ;
    rdfs:comment "The property a characteristic is added to";
    rdfs:domain och:AddCharacteristic ;
    rdfs:range rdf:Property .

och:addedDomainToProperty a owl:ObjectProperty ;
    rdfs:label "added Domain for Property";
    rdfs:comment "The property a domain is added to.";
    rdfs:domain och:AddDomain ;
    rdfs:range rdf:Property .

och:removedCharacteristicFromProperty a owl:ObjectProperty ;
    rdfs:label "property RemoveCharacteristic" ;
    rdfs:comment "The property a characteristicic is removed from";
    rdfs:domain och:RemoveCharacteristic ;
    rdfs:range rdf:Property .

och:removedDomainFromProperty a owl:ObjectProperty ;
    rdfs:label "removed Domain for Property" ;
    rdfs:comment "The property a domain is removed from";
    rdfs:domain och:RemoveDomain ;
    rdfs:range rdf:Property .

och:relatedChange a owl:ObjectProperty ;
    rdfs:label "related change" ;
    rdfs:comment "The property that indicates an unspecified relation between two Ontology Changes";
    rdfs:domain och:OntologicalChange ;
    rdfs:range och:OntologicalChange .

och:removedCharacteristic a owl:ObjectProperty ;
    rdfs:label "removed characteristic" ;
    rdfs:comment "The characteristic that is being removed from a property";
    rdfs:domain och:RemoveCharacteristic ;
    rdfs:range och:PropertyCharacteristic .

och:removedClass a owl:ObjectProperty ;
    rdfs:label "removed class" ;
    rdfs:comment "The class that is being removed in an ontology";
    rdfs:domain och:RemoveClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:removedEntity .

och:removedDataProperty a owl:ObjectProperty ;
    rdfs:label "removed data property" ;
    rdfs:comment "The data property that is being removed in an ontology";
    rdfs:domain och:RemoveDataProperty ;
    rdfs:range owl:DatatypeProperty ;
    rdfs:subPropertyOf och:removedEntity .

och:removedDataRange a owl:ObjectProperty ;
    rdfs:label "removed data range" ;
    rdfs:comment "The range that is being removed from a Datatype Property";
    rdfs:domain och:RemoveRangeDataProperty ;
    rdfs:range rdfs:Datatype .

och:removedDomain a owl:ObjectProperty ;
    rdfs:label "removed domain" ;
    rdfs:comment "The domain that is being removed from a property";
    rdfs:domain och:RemoveDomain ;
    rdfs:range owl:Class .

och:removedObjectProperty a owl:ObjectProperty ;
    rdfs:label "removed object property" ;
    rdfs:comment "The object property being removed from an ontology";
    rdfs:domain och:RemoveObjectProperty ;
    rdfs:range owl:ObjectProperty ;
    rdfs:subPropertyOf och:removedEntity .

och:removedObjectRange a owl:ObjectProperty ;
    rdfs:label "removed object range" ;
    rdfs:comment "The range being removed from an object property";
    rdfs:domain och:RemoveRangeObjectProperty ;
    rdfs:range owl:Class .

och:removedRangeFromProperty a owl:ObjectProperty ;
    rdfs:label "removed range for property" ;
    rdfs:comment "The removed range for a property";
    rdfs:domain och:RemoveRange ;
    rdfs:range rdf:Property .

och:renamedEntityName a owl:ObjectProperty ;
    rdfs:label "renamed entity name" ;
    rdfs:comment "The new name the OWL Entity is being renamed to";
    rdfs:domain och:RenameEntity ;
    rdfs:range rdfs:Resource .

och:sourceAddDisjointProperty a owl:ObjectProperty ;
    rdfs:label "source AddDisjointProperty" ;
    rdfs:comment "The subject of the disjoint property relation being added";
    rdfs:domain och:AddDisjointProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:sourceProperty .

och:sourceAddEquivalentClass a owl:ObjectProperty ;
    rdfs:label "source AddEquivalentClass" ;
    rdfs:comment "The subject of the equivalent class relation being added";
    rdfs:domain och:AddEquivalentClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:sourceClass .

och:sourceAddEquivalentProperty a owl:ObjectProperty ;
    rdfs:label "source AddEquivalentProperty" ;
    rdfs:comment "The subject of the equivalent property relation being added";    
    rdfs:domain och:AddEquivalentProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:sourceProperty .

och:sourceAddInverseProperty a owl:ObjectProperty ;
    rdfs:label "source AddInverseProperty" ;
    rdfs:comment "The subject of the inverse property relation being added";    
    rdfs:domain och:AddInverseProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:sourceProperty .

och:sourceAddSubClass a owl:ObjectProperty ;
    rdfs:label "source AddSubClass" ;
    rdfs:comment "The subject of the subClass relation being added";
    rdfs:domain och:AddSubClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:sourceClass .

och:sourceAddSubProperty a owl:ObjectProperty ;
    rdfs:label "source AddSubProperty" ;
    rdfs:comment "The subject of the subProperty relation being added";
    rdfs:domain och:AddSubPropertyOf ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:sourceProperty .

och:sourceRemoveDisjointProperty a owl:ObjectProperty ;
    rdfs:label "source RemoveDisjointProperty" ;
    rdfs:comment "The subject of the disjoint property relation being removed";
    rdfs:domain och:RemoveDisjointProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:sourceProperty .

och:sourceRemoveEquivalentClass a owl:ObjectProperty ;
    rdfs:label "source RemoveEquivalentClass" ;
    rdfs:comment "The subject of the equivalent class relation being removed";
    rdfs:domain och:RemoveEquivalentClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:sourceClass .

och:sourceRemoveEquivalentProperty a owl:ObjectProperty ;
    rdfs:label "source RemoveEquivalentProperty" ;
    rdfs:comment "The subject of the equivalent property relation being removed";
    rdfs:domain och:RemoveEquivalentProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:sourceProperty .

och:sourceRemoveInverseProperty a owl:ObjectProperty ;
    rdfs:label "source RemoveInverseProperty" ;
    rdfs:comment "The subject of the inverse property relation being removed";
    rdfs:domain och:RemoveInverseProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:sourceProperty .

och:sourceRemoveSubClass a owl:ObjectProperty ;
    rdfs:label "source RemoveSubClass" ;
    rdfs:comment "The subject of the disjoint property relation being added";
    rdfs:domain och:RemoveSubClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:sourceClass .

och:sourceRemoveSubProperty a owl:ObjectProperty ;
    rdfs:label "source RemoveSubProperty" ;
    rdfs:comment "The subject of the subProperty relation being removed";
    rdfs:domain och:RemoveSubPropertyOf ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:sourceProperty .

och:targetAddDisjointProperty a owl:ObjectProperty ;
    rdfs:label "target AddDisjointProperty" ;
    rdfs:comment "The object of the disjoint property relation being added";
    rdfs:domain och:AddDisjointProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:targetProperty .

och:targetAddEquivalentClass a owl:ObjectProperty ;
    rdfs:label "target AddEquivalentClass" ;
    rdfs:comment "The object of the equivalent class relation being added";
    rdfs:domain och:AddEquivalentClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:targetClass .

och:targetAddEquivalentProperty a owl:ObjectProperty ;
    rdfs:label "target AddEquivalentProperty" ;
    rdfs:comment "The object of the equivalent property relation being added";
    rdfs:domain och:AddEquivalentProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:targetProperty .

och:targetAddInverseProperty a owl:ObjectProperty ;
    rdfs:label "target AddInverseProperty" ;
    rdfs:comment "The object of the inverse property relation being added";
    rdfs:domain och:AddInverseProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:targetProperty .

och:targetAddSubClass a owl:ObjectProperty ;
    rdfs:label "target AddSubClass" ;
    rdfs:comment "The object of the subClass relation being added";
    rdfs:domain och:AddSubClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:targetClass .

och:targetAddSubProperty a owl:ObjectProperty ;
    rdfs:label "target AddSubProperty" ;
    rdfs:comment "The object of the subProperty relation being added";
    rdfs:domain och:AddSubPropertyOf ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:targetProperty .

och:targetRemoveDisjointProperty a owl:ObjectProperty ;
    rdfs:label "target RemoveDisjointProperty" ;
    rdfs:comment "The object of the disjoint property relation being removed";
    rdfs:domain och:RemoveDisjointProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:targetProperty .

och:targetRemoveEquivalentClass a owl:ObjectProperty ;
    rdfs:label "target RemoveEquivalentClass" ;
    rdfs:comment "The object of the equivalent class relation being removed";
    rdfs:domain och:RemoveEquivalentClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:targetClass .

och:targetRemoveEquivalentProperty a owl:ObjectProperty ;
    rdfs:label "target RemoveEquivalentProperty" ;
    rdfs:comment "The object of the equivalent class relation being removed";
    rdfs:domain och:RemoveEquivalentProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:targetProperty .

och:targetRemoveInverseProperty a owl:ObjectProperty ;
    rdfs:label "target RemoveInverseProperty" ;
    rdfs:comment "The object of the inverse property relation being removed";
    rdfs:domain och:RemoveInverseProperty ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:targetProperty .

och:targetRemoveSubClass a owl:ObjectProperty ;
    rdfs:label "target RemovesubClass" ;
    rdfs:comment "The object of the subClass relation being removed";
    rdfs:domain och:RemoveSubClass ;
    rdfs:range owl:Class ;
    rdfs:subPropertyOf och:targetClass .

och:targetRemoveSubProperty a owl:ObjectProperty ;
    rdfs:label "target RemoveSubProperty" ;
    rdfs:comment "The object of the subProperty relation being removed";
    rdfs:domain och:RemoveSubPropertyOf ;
    rdfs:range rdf:Property ;
    rdfs:subPropertyOf och:targetProperty .

och:undeprecatedElement a owl:ObjectProperty ;
    rdfs:label "undeprecated element" ;
    rdfs:comment "The ontological term that is being undeprecated";
    rdfs:domain och:RevokeDeprecate ;
    rdfs:range rdfs:Resource .

och:AddClass a owl:Class ;
    rdfs:label "Add Class" ;
    rdfs:comment "The change operation corresponding to the addition of a class";    
    rdfs:subClassOf och:ClassChange .

och:AddDataProperty a owl:Class ;
    rdfs:label "Add Data Property" ;
    rdfs:comment "The change operation corresponding to the addition of a data property";
    rdfs:subClassOf och:DataPropertyChange, och:AddProperty;
     prov:wasDerivedFrom omv:AddDataProperty.

och:AddObjectProperty a owl:Class ;
    rdfs:label "Add Object Property" ;
    rdfs:comment "The change operation corresponding to the addition of an object property";
    rdfs:subClassOf och:ObjectPropertyChange, och:AddProperty;
    prov:wasDerivedFrom omv:AddObjectProperty.

och:AddRangeDataProperty a owl:Class ;
    rdfs:label "Add Range Data Property" ;
    rdfs:comment "The change operation corresponding to the addition of the range of a given data property";
    rdfs:subClassOf och:AddRange .

och:AddRangeObjectProperty a owl:Class ;
    rdfs:label "Add Range Object Property" ;
    rdfs:comment "The change operation corresponding to the addition of the range of a given object property";
    rdfs:subClassOf och:AddRange .

och:DeprecateEntity a owl:Class ;
    rdfs:label "Deprecate Entity" ;
    rdfs:comment "The change operation corresponding to the deprecation of an OWL Entity";
    rdfs:subClassOf och:EntityChange .

och:RemoveClass a owl:Class ;
    rdfs:label "Remove Class" ;
    rdfs:comment "The change operation corresponding to the removal of a class";
    rdfs:subClassOf och:ClassChange .

och:RemoveDataProperty a owl:Class ;
    rdfs:label "Remove Data Property" ;
    rdfs:comment "The change operation corresponding to the removal of a data property";
    rdfs:subClassOf och:RemoveProperty;
    rdfs:subClassOf och:DataPropertyChange;
    prov:wasDerivedFrom omv:RemoveDataProperty .

och:RemoveObjectProperty a owl:Class ;
    rdfs:label "Remove Object Property" ;
    rdfs:comment "The change operation corresponding to the removal of an object property";
    rdfs:subClassOf och:RemoveProperty;
    rdfs:subClassOf och:ObjectPropertyChange;
    prov:wasDerivedFrom omv:RemoveObjectProperty .

och:RemoveRangeDataProperty a owl:Class ;
    rdfs:label "Remove Range Data Property" ;
    rdfs:comment "The change operation corresponding to the removal of the range of a data property";
    rdfs:subClassOf och:RemoveRange .

och:RemoveRangeObjectProperty a owl:Class ;
    rdfs:label "Remove Range Object Property" ;
    rdfs:comment "The change operation corresponding to the removal of the range off an object property";
    rdfs:subClassOf och:RemoveRange .

och:RevokeDeprecate a owl:Class ;
    rdfs:label "Revoke Deprecate" ;
    rdfs:comment "The change operation corresponding to the revokal of an ontological term";
    rdfs:subClassOf och:EntityChange .

och:AddCharacteristic a owl:Class ;
    rdfs:label "Add Characteristic" ;
    rdfs:comment "The change operation corresponding to addition of a characteristic to a property";
    rdfs:subClassOf och:PropertyCharacteristicChange .

och:AddDisjointProperty a owl:Class ;
    rdfs:label "Add Disjoint Property" ;
    rdfs:comment "The change operation corresponding to the addition of a Disjoint Property relation between two properties";
    rdfs:subClassOf och:DisjointPropertyChange .

och:AddDomain a owl:Class ;
    rdfs:label "Add Domain" ;
    rdfs:comment "The change operation corresponding to the addition of the domain to a given property";
    rdfs:subClassOf och:DomainChange;
    prov:wasDerivedFrom omv:AddDomain .

och:AddEquivalentClass a owl:Class ;
    rdfs:label "Add Equivalent Class" ;
    rdfs:comment "The change operation corresponding to the addition of an equivalent class relation between two classes";
    rdfs:subClassOf och:EquivalentClassChange;
    prov:wasDerivedFrom omv:AddEquivalentClass.

och:AddEquivalentProperty a owl:Class ;
    rdfs:label "Add Equivalent Property" ;
    rdfs:comment "The change operation corresponding to the addition of an equivalent property relation between two properties";
    rdfs:subClassOf och:EquivalentPropertyChange .

och:AddInverseProperty a owl:Class ;
    rdfs:label "Add Inverse Property" ;
    rdfs:comment "The change operation corresponding to the addition of an inverse property relation between two properties";
    rdfs:subClassOf och:InversePropertyChange .

och:AddSubClass a owl:Class ;
    rdfs:label "Add Sub Class" ;
    rdfs:comment "The change operation corresponding to the addition of a subClass relation between two classes";
    rdfs:subClassOf och:SubClassChange .

och:AddSubPropertyOf a owl:Class ;
    rdfs:label "Add Sub Property Of" ;
    rdfs:comment "The change operation corresponding to the addition of a subProperty relation between two properties";
    rdfs:subClassOf och:SubPropertyChange;
    prov:wasDerivedFrom omv:AddSubPropertyOf.

och:ClassRelationChange a owl:Class ;
    rdfs:label "Class Relation Change" ;
    rdfs:comment "The change operation corresponding to the change of the relationship between two classes";
    rdfs:subClassOf och:ClassChange .

och:DataPropertyChange a owl:Class ;
    rdfs:label "Data Property Change" ;
    rdfs:comment "The change operation corresponding to the change of a data property";
    rdfs:subClassOf och:PropertyChange;
    prov:wasDerivedFrom omv:DataPropertyChange.

och:DisjointPropertyChange a owl:Class ;
    rdfs:label "Disjoint Property Change" ;
    rdfs:comment "The change operation corresponding to the change of a Disjoint Property";
    rdfs:subClassOf och:PropertyRelationChange .

och:DomainChange a owl:Class ;
    rdfs:label "Domain Change" ;
    rdfs:comment "The change operation corresponding to the change of the domain of a given property";
    rdfs:subClassOf och:PropertyChange .

och:EquivalentClassChange a owl:Class ;
    rdfs:label "Equivalent Class Change" ;
    rdfs:comment "The change operation corresponding to the change of an equivalent class relation between two classes";
    rdfs:subClassOf och:ClassRelationChange;
    prov:wasDerivedFrom omv:EquivalentClassChange.

och:EquivalentPropertyChange a owl:Class ;
    rdfs:label "Equivalent Property Change" ;
    rdfs:comment "The change operation corresponding to the change of an equivalent property relation between two properties";
    rdfs:subClassOf och:PropertyRelationChange .

och:InversePropertyChange a owl:Class ;
    rdfs:label "Inverse Property Change" ;
    rdfs:comment "The change operation corresponding to the change of an inverse prop7 relation between two properties";
    rdfs:subClassOf och:PropertyRelationChange .

och:ObjectPropertyChange a owl:Class ;
    rdfs:label "Object Property Change" ;
    rdfs:comment "The change operation corresponding to the change of an object property";
    rdfs:subClassOf och:PropertyChange;
    prov:wasDerivedFrom omv:ObjectPropertyChange .

och:PropertyCharacteristicChange a owl:Class ;
    rdfs:label "Property Characteristic Change" ;
    rdfs:comment "The change operation corresponding to the change of a property characteristic.";
    rdfs:subClassOf och:PropertyChange .

och:RangeChange a owl:Class ;
    rdfs:label "Range Change" ;
    rdfs:comment "The change operation corresponding to the change of the range of a given property";
    rdfs:subClassOf och:PropertyChange .

och:RemoveCharacteristic a owl:Class ;
    rdfs:label "Remove Characteristic" ;
    rdfs:comment "The change operation corresponding to the removal of a property characteristic";
    rdfs:subClassOf och:PropertyCharacteristicChange .

och:RemoveDisjointProperty a owl:Class ;
    rdfs:label "Remove Disjoint Property" ;
    rdfs:comment "The change operation corresponding to the removal of a Disjoint Property relation between two properties";
    rdfs:subClassOf och:DisjointPropertyChange .

och:RemoveDomain a owl:Class ;
    rdfs:label "Remove Domain" ;
    rdfs:comment "The change operation corresponding to the removal of the domain of a given property";
    rdfs:subClassOf och:DomainChange;
    prov:wasDerivedFrom omv:RemoveDomain .

och:RemoveEquivalentClass a owl:Class ;
    rdfs:label "Remove Equivalent Class" ;
    rdfs:comment "The change operation corresponding to the removal of the equivalent class relation between two classes";
    rdfs:subClassOf och:EquivalentClassChange;
    prov:wasDerivedFrom omv:RemoveEquivalentClass.

och:RemoveEquivalentProperty a owl:Class ;
    rdfs:label "Remove Equivalent Property" ;
    rdfs:comment "The change operation corresponding to the removal of the equivalent property relation between two properties";
    rdfs:subClassOf och:EquivalentPropertyChange .

och:RemoveInverseProperty a owl:Class ;
    rdfs:label "Remove Inverse Property" ;
    rdfs:comment "The change operation corresponding to the removal of the inverse property relation between two properties";
    rdfs:subClassOf och:InversePropertyChange .

och:RemoveSubClass a owl:Class ;
    rdfs:label "Remove Sub Class" ;
    rdfs:comment "The change operation corresponding to the removal of the subClass relation between two classes";
    rdfs:subClassOf och:SubClassChange .

och:RemoveSubPropertyOf a owl:Class ;
    rdfs:label "Remove Sub Property Of" ;
    rdfs:comment "The change operation corresponding to the removal of the subProperty relation between two properties";
    rdfs:subClassOf och:SubPropertyChange;
    prov:wasDerivedFrom omv:RemoveSubPropertyOf .

och:RenameEntity a owl:Class ;
    rdfs:label "Rename Entity" ;
    rdfs:comment "The change operation corresponding to the renaming of an OWL Entity within an ontology, this is whenever the semantics do not change and only the URI is modified";
    rdfs:subClassOf och:EntityChange .

och:SubPropertyChange a owl:Class ;
    rdfs:label "Sub Property Change" ;
    rdfs:comment "The change operation corresponding to the change of the subProperty relation between to properties";
    rdfs:subClassOf och:PropertyRelationChange .

och:AddRange a owl:Class ;
    rdfs:label "Add Range" ;
    rdfs:comment "The change operation corresponding to the addition of the range to a given property";
    rdfs:subClassOf och:RangeChange;
    prov:wasDerivedFrom omv:AddRange .

och:ClassChange a owl:Class ;
    rdfs:label "Class Change" ;
    rdfs:comment "The change operation corresponding to the change of a given class within the ontology";
    rdfs:subClassOf och:EntityChange;
    prov:wasDerivedFrom omv:ClassChange.

och:RemoveRange a owl:Class ;
    rdfs:label "Remove Range" ;
    rdfs:comment "The change operation corresponding to the removal of the range of a given property";
    rdfs:subClassOf och:RangeChange;
    prov:wasDerivedFrom omv:RemoveRange.

och:addedEntity a owl:ObjectProperty ;
    rdfs:label "added entity" ;
    rdfs:comment "The entity that is being added in a change operation";
    rdfs:domain och:EntityChange ;
    rdfs:range rdfs:Resource .

och:removedEntity a owl:ObjectProperty ;
    rdfs:label "removed entity" ;
    rdfs:comment "The entity that is being removed in a change operation";
    rdfs:domain och:EntityChange ;
    rdfs:range rdfs:Resource .

och:Changelog a owl:Class ;
    rdfs:label "Changelog" ;
    rdfs:comment "The set of change operations between ontology versions";
    rdfs:subClassOf dcat:Dataset .

och:sourceClass a owl:ObjectProperty ;
    rdfs:label "source class" ;
    rdfs:comment "The class that is the subject of the class relations being changed in a change operation";
    rdfs:domain och:ClassRelationChange ;
    rdfs:range owl:Class .

och:targetClass a owl:ObjectProperty ;
    rdfs:label "target class" ;
    rdfs:comment "The class that is the object of the class relations being changed in a change operation";
    rdfs:domain och:ClassRelationChange ;
    rdfs:range owl:Class .

och:OntologicalChange a owl:Class ;
    rdfs:label "Ontological Change";    
    rdfs:comment "The class that represents all changes within an ontology being term-level, structural level, or higher level";
    prov:wasDerivedFrom omv:OntologyChange.

och:PropertyChange a owl:Class ;
    rdfs:label "Property Change" ;
    rdfs:comment "The class that represents changes to properties";
    rdfs:subClassOf och:EntityChange .

och:PropertyRelationChange a owl:Class ;
    rdfs:label "Property Relation Change" ;
    rdfs:comment "The class that represents changes to property relations";
    rdfs:subClassOf och:PropertyChange .

och:SubClassChange a owl:Class ;
    rdfs:label "Sub Class Change" ;
    rdfs:comment "The class that represents changes to a subclass relationship between two classes.";
    rdfs:subClassOf och:ClassRelationChange .

och:EntityChange a owl:Class ;
    rdfs:label "Entity Change" ;
    rdfs:comment "The class that represents all changes to OWL Entities: classes, properties, and individuals";
    rdfs:subClassOf och:OntologicalChange .

och:sourceProperty a owl:ObjectProperty ;
    rdfs:label "source property" ; 
    rdfs:comment "The property that is the subject of the property relations being changed in a change operation";
    rdfs:domain och:PropertyRelationChange ;
    rdfs:range rdf:Property .

och:targetProperty a owl:ObjectProperty ;
    rdfs:label "target Property";
    rdfs:comment "The property that is the object of the property relations being changed in a change operation";
    rdfs:domain och:PropertyRelationChange ;
    rdfs:range rdf:Property .

och:AddProperty a owl:Class;
    rdfs:label "Add Property";
    rdfs:comment "The class that represents the addition of a property to an ontology";
    rdfs:subClassOf och:PropertyChange;
    prov:wasDerivedFrom omv:AddProperty.

och:RemoveProperty a owl:Class;
    rdfs:label "Remove Property";
    rdfs:comment "The class that represents the removal of a property to an ontology";
    rdfs:subClassOf och:PropertyChange;
    prov:wasDerivedFrom omv:RemoveProperty.

och:addedProperty a owl:ObjectProperty;
    rdfs:label "added Property";
    rdfs:comment "The property being added to the ontology";
    rdfs:subPropertyOf och:addedEntity;
    rdfs:domain och:AddProperty;
    rdfs:range rdf:Property.

och:removedProperty a owl:ObjectProperty;
    rdfs:label "removed Property";
    rdfs:comment "The property being removed from the ontology";
    rdfs:subPropertyOf och:removedEntity;
    rdfs:domain och:RemoveProperty;
    rdfs:range rdf:Property.


###### Individual Changes ##################

och:IndividualChange a owl:Class ;
    rdfs:label "Individual Change" ;
    rdfs:comment "The change operation corresponding to the change of a given individual within the ontology";
    rdfs:subClassOf och:EntityChange .

och:AddIndividual a owl:Class ;
    rdfs:label "Add Individual" ;
    rdfs:comment "The change operation corresponding to the addition of an individual to the ontology";    
    rdfs:subClassOf och:IndividualChange .

och:addedIndividual a owl:ObjectProperty ;
    rdfs:label "added individual" ;
    rdfs:comment "The individual being added in an AddIndividual operation";
    rdfs:domain och:AddIndividual ;
    rdfs:range owl:NamedIndividual;
    rdfs:subPropertyOf och:addedEntity .

och:RemoveIndividual a owl:Class ;
    rdfs:label "Remove Individual" ;
    rdfs:comment "The change operation corresponding to the removal of an individual to the ontology";    
    rdfs:subClassOf och:IndividualChange .

och:removedIndividual a owl:ObjectProperty ;
    rdfs:label "removed individual" ;
    rdfs:comment "The individual that is being removed in an ontology";
    rdfs:domain och:RemoveIndividual ;
    rdfs:range owl:NamedIndividual ;
    rdfs:subPropertyOf och:removedEntity .
    
och:IndividualRelationChange a owl:Class ;
    rdfs:label "Individual Relation Change" ;
    rdfs:comment "The change operation corresponding to the change of a relationship between two individuals within the ontology";    
    rdfs:subClassOf och:IndividualChange .

och:sourceIndividual a owl:ObjectProperty ;
    rdfs:label "source individual" ;
    rdfs:comment "The individual that is the subject of the relation being changed in a change operation";
    rdfs:domain och:IndividualRelationChange ;
    rdfs:range owl:NamedIndividual .

och:targetResource a owl:ObjectProperty ;
    rdfs:label "target individual" ;
    rdfs:comment "The individual that is the object of the relation being changed in a change operation";
    rdfs:domain och:IndividualRelationChange ;
    rdfs:range rdfs:Resource.

och:AddRelationToIndividual a owl:Class ;
    rdfs:label "Add Relation to Individual" ;
    rdfs:comment "The change operation corresponding to the addition of a relation between two individuals";
    rdfs:subClassOf och:IndividualRelationChange .

och:sourceAddRelationToIndividual a owl:ObjectProperty ;
    rdfs:label "source add relation to individuals" ;
    rdfs:comment "The individual that is the subject of the relation being added in a change operation";
    rdfs:domain och:AddRelationToIndividual ;
    rdfs:range owl:NamedIndividual .

och:targetAddRelationToIndividual a owl:ObjectProperty ;
    rdfs:label "target add relation to individuals" ;
    rdfs:comment "The individual that is the object of the relation being added in a change operation";
    rdfs:domain och:AddRelationToIndividual ;
    rdfs:range rdfs:Resource .

och:addedRelationToIndividual a owl:ObjectProperty ;
    rdfs:label "property add relation to individuals" ;
    rdfs:comment "The individual that is the relation being added in a change operation";
    rdfs:domain och:AddRelationToIndividual ;
    rdfs:range rdf:Property .    

och:RemoveRelationFromIndividual a owl:Class ;
    rdfs:label "Remove Relation from Individuals" ;
    rdfs:comment "The change operation corresponding to the removal of a relation between two individuals";
    rdfs:subClassOf och:IndividualRelationChange .

och:sourceRemoveRelationToIndividual a owl:ObjectProperty ;
    rdfs:label "source remove relation to individuals" ;
    rdfs:comment "The individual that is the subject of the relation being removed in a change operation";
    rdfs:domain och:RemoveRelationtoIndividual ;
    rdfs:range owl:NamedIndividual .

och:targetRemoveRelationToIndividual a owl:ObjectProperty ;
    rdfs:label "target remove relation to individuals" ;
    rdfs:comment "The individual that is the object of the relation being removed in a change operation";
    rdfs:domain och:RemoveRelationtoIndividual ;
    rdfs:range rdfs:Resource .

och:removedRelationFromIndividual a owl:ObjectProperty ;
    rdfs:label "removed relation from individuals" ;
    rdfs:comment "The relation being removed from an individual in a change operation";
    rdfs:domain och:RemoveRelationtoIndividual ;
    rdfs:range rdf:Property . 