@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dc: <http://purl.org/dc/terms/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix ns0: <http://purl.org/vocab/vann/> .

<https://vocab.noeldemartin.com/crdt/>
    dc:description """The Conflict-Free Replicated Datatypes (CRDT) ontology can be used to describe changes made to resources over time.
To learn more about how to use it, check out the following presentation: <a href='https://www.youtube.com/watch?v=vYQmGeaQt8E' target='_blank'>Solid CRDTs in Practice</a>."""@en ;
    dc:issued "2022-05-26"^^<http://www.w3.org/2001/XMLSchema#date> ;
    ns0:preferredNamespacePrefix "crdt"@en ;
    ns0:preferredNamespaceUri "http://www.w3.org/ns/solid/crdt#"^^<http://www.w3.org/2001/XMLSchema#anyURI> ;
    a owl:Ontology ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Conflict-Free Replicated Datatypes (CRDT)"@en .

<https://vocab.noeldemartin.com/crdt/AddPropertyOperation>
    dc:description "Operation that adds values to a resource's property."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Add Property Operation"@en ;
    rdfs:subClassOf <https://vocab.noeldemartin.com/crdt/PropertyOperation> .

<https://vocab.noeldemartin.com/crdt/DeleteOperation>
    dc:description "Operation that soft deletes a resource."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Delete Operation"@en ;
    rdfs:subClassOf <https://vocab.noeldemartin.com/crdt/Operation> .

<https://vocab.noeldemartin.com/crdt/Metadata>
    dc:description "Metadata about a resource."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Metadata"@en ;
    rdfs:subClassOf <http://purl.org/dc/dcmitype/Dataset> .

<https://vocab.noeldemartin.com/crdt/Operation>
    dc:description "Operation performed on a resource."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Operation"@en ;
    rdfs:subClassOf <http://purl.org/dc/dcmitype/Dataset> .

<https://vocab.noeldemartin.com/crdt/PropertyOperation>
    dc:description "Operation affecting a resource's property."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Property Operation"@en ;
    rdfs:subClassOf <https://vocab.noeldemartin.com/crdt/Operation> .

<https://vocab.noeldemartin.com/crdt/RemovePropertyOperation>
    dc:description "Operation that removes values from a resource's property."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Remove Property Operation"@en ;
    rdfs:subClassOf <https://vocab.noeldemartin.com/crdt/PropertyOperation> .

<https://vocab.noeldemartin.com/crdt/SetPropertyOperation>
    dc:description "Operation that replaces a resource's property."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Set Property Operation"@en ;
    rdfs:subClassOf <https://vocab.noeldemartin.com/crdt/PropertyOperation> .

<https://vocab.noeldemartin.com/crdt/Tombstone>
    dc:description "Metadata left behind for a resource that has been deleted."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Tombstone"@en ;
    rdfs:subClassOf <https://vocab.noeldemartin.com/crdt/Metadata> .

<https://vocab.noeldemartin.com/crdt/UnsetPropertyOperation>
    dc:description "Operation that removes a resource's property."@en ;
    a rdfs:Class ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "Unset Property Operation"@en ;
    rdfs:subClassOf <https://vocab.noeldemartin.com/crdt/PropertyOperation> .

<https://vocab.noeldemartin.com/crdt/createdAt>
    dc:description "Time at which the resource was created."@en ;
    a rdf:Property ;
    rdfs:domain <https://vocab.noeldemartin.com/crdt/Metadata> ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "createdAt"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#dateTime> ;
    rdfs:subPropertyOf <http://purl.org/dc/dcmitype/created> .

<https://vocab.noeldemartin.com/crdt/date>
    dc:description "Time at which the operation was performed."@en ;
    a rdf:Property ;
    rdfs:domain <https://vocab.noeldemartin.com/crdt/Operation> ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "date"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#dateTime> ;
    rdfs:subPropertyOf <http://purl.org/dc/dcmitype/created> .

<https://vocab.noeldemartin.com/crdt/deletedAt>
    dc:description "Time at which the resource was deleted or soft-deleted."@en ;
    a rdf:Property ;
    rdfs:domain <https://vocab.noeldemartin.com/crdt/Metadata> ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "deletedAt"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#dateTime> .

<https://vocab.noeldemartin.com/crdt/property>
    dc:description "Property affected by the operation."@en ;
    a rdf:Property ;
    rdfs:domain <https://vocab.noeldemartin.com/crdt/PropertyOperation> ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "property"@en ;
    rdfs:range rdf:Property .

<https://vocab.noeldemartin.com/crdt/resource>
    dc:description "Resource which the metadata makes reference to, or which is affected by the operation."@en ;
    a rdf:Property ;
    rdfs:domain <https://vocab.noeldemartin.com/crdt/Metadata>, <https://vocab.noeldemartin.com/crdt/Operation> ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "resource"@en ;
    rdfs:range rdfs:Resource ;
    rdfs:subPropertyOf <http://purl.org/dc/dcmitype/subject> .

<https://vocab.noeldemartin.com/crdt/updatedAt>
    dc:description "Time at which the resource was most recently updated."@en ;
    a rdf:Property ;
    rdfs:domain <https://vocab.noeldemartin.com/crdt/Metadata> ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "updatedAt"@en ;
    rdfs:range <http://www.w3.org/2001/XMLSchema#dateTime> ;
    rdfs:subPropertyOf <http://purl.org/dc/dcmitype/modified> .

<https://vocab.noeldemartin.com/crdt/value>
    dc:description "Property value used by the operation."@en ;
    a rdf:Property ;
    rdfs:domain <https://vocab.noeldemartin.com/crdt/AddPropertyOperation>, <https://vocab.noeldemartin.com/crdt/RemovePropertyOperation>, <https://vocab.noeldemartin.com/crdt/SetPropertyOperation> ;
    rdfs:isDefinedBy <https://vocab.noeldemartin.com/crdt/> ;
    rdfs:label "value"@en .

