@prefix ldes: <https://w3id.org/ldes#> .
@prefix tree: <https://w3id.org/tree#> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix gsp: <http://www.opengis.net/ont/geosparql#> .
@prefix locn: <http://www.w3.org/ns/locn#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
@prefix wdrs: <http://www.w3.org/2007/05/powder-s#> .
@prefix xhtm: <http://www.w3.org/1999/xhtml> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix hydra: <http://www.w3.org/ns/hydra/core#>.

ldes: a foaf:Document ;
      foaf:primaryTopic ldes:Vocabulary ;
      cc:license <http://creativecommons.org/licenses/by/4.0/>;
      dct:creator <https://pietercolpaert.be/#me> .

<https://pietercolpaert.be/#me> foaf:name "Pieter Colpaert"; foaf:mbox "pieter.colpaert@ugent.be".

ldes:Vocabulary a owl:Ontology ;
                rdfs:label "The Linked Data Event Streams specification"@en;
                rdfs:comment "A hypermedia specification for maintaining a collection with immutable members."@en.

ldes:EventStream a rdfs:Class ;
                 rdfs:subClassOf tree:Collection ;
                 rdfs:label "Event Stream"@en;
                 rdfs:comment "An Event Stream is a tree:Collection containing immutable members."@en .

ldes:EventSource a rdfs:Class;
                 rdfs:label "Event Source"@en ;
                 rdfs:comment "A data service that provides the source other views should synchronize with"@en .

ldes:RetentionPolicy a rdfs:Class ;
                     rdfs:label "Retention Policy"@en ;
                     rdfs:comment "Documents what data to keep"@en .

ldes:retentionPolicy a rdf:Property ;
                     rdfs:label "has retention policy"@en;
                     rdfs:comment "Links to a retention policy."@en ;
                     rdfs:range ldes:RetentionPolicy .

ldes:startingFrom a rdf:Property ;
                     rdfs:label "Starting from"@en;
                     rdfs:comment "The search tree only keeps members starting a certain timestamp."@en ;
                     rdfs:range xsd:dateTime ;
                     rdfs:domain ldes:RetentionPolicy .

ldes:versionDuration a rdf:Property ;
                     rdfs:label "Version duration"@en;
                     rdfs:comment "The search tree only keeps its versions, for which an `ldes:versionAmount` MUST have been set, only during a specific window. "@en ;
                     rdfs:range xsd:duration ;
                     rdfs:domain ldes:RetentionPolicy .

ldes:versionAmount a rdf:Property ;
                     rdfs:label "Version amount"@en;
                     rdfs:comment "The amount of versions to keep."@en;
		     rdfs:range xsd:integer ;
		     rdfs:domain ldes:RetentionPolicy .

ldes:versionDeleteDuration a rdf:Property ;
                     rdfs:label "Version Delete Duration"@en;
                     rdfs:comment "The search tree only keeps its deletions for a certain duration."@en;
		     rdfs:range xsd:duration ;
		     rdfs:domain ldes:RetentionPolicy .

ldes:fullLogDuration a rdf:Property ;
                     rdfs:label "Full Log Duration"@en ;
                     rdfs:comment "The search tree keeps its full log for a certain duration."@en ;
		     rdfs:range xsd:duration ;
		     rdfs:domain ldes:RetentionPolicy .

ldes:versionOfPath a rdf:Property ;
                   rdfs:label "versionOf Path"@en;
                   rdfs:comment "SHACL property path to the non-versioned IRI of the entity."@en ;
                   rdfs:domain ldes:EventStream .

ldes:timestampPath a rdf:Property ;
                   rdfs:label "Timestamp Path"@en;
                   rdfs:comment "SHACL property path to the xsd:dateTime literal in each member that defines the order of the event stream."@en ;
                   rdfs:domain ldes:EventStream .

ldes:sequencePath a rdf:Property ;
                  rdfs:label "Sequence Path"@en;
                  rdfs:comment "SHACL property path to an xsd literal in each member that defines the order of the event stream in addition to the timestampPath."@en ;
                  rdfs:domain ldes:EventStream .

ldes:versionTimestampPath a rdf:Property ;
                   rdfs:label "Version Timestamp Path"@en;
                   rdfs:comment "For out of order event streams: a SHACL property path to the xsd:dateTime literal in each member that defines the order of versioned members."@en ;
                   rdfs:domain ldes:EventStream .

ldes:versionSequencePath a rdf:Property ;
                  rdfs:label "Version Sequence Path"@en;
                  rdfs:comment "For out of order event streams: a SHACL property path to an xsd literal in each member that defines the order of the event stream in addition to the versionTimestampPath."@en ;
                  rdfs:domain ldes:EventStream .


ldes:versionMaterializationOf a rdf:Property ;
                   rdfs:label "Version Materialization Of"@en;
                   rdfs:comment "Links to the original LDES"@en ;
                   rdfs:range ldes:EventStream ;
                   rdfs:domain tree:Collection .

ldes:versionMaterializationUntil a rdf:Property ;
                                 rdfs:label "Version Materialization Until"@en;
                                 rdfs:comment "Timestamp until versions were processed"@en ;
                                 rdfs:range xsd:dateTime ;
                                 rdfs:domain tree:Collection .

ldes:versionCreatePath a rdf:Property ;
                       rdfs:label "Version Create Path"@en ;
                       rdfs:comment "Path indicating where you can do an object check on whether the member represents a create. Defaults to rdf:type."@en ;
                       rdfs:domain ldes:EventStream .

ldes:versionUpdatePath a rdf:Property ;
                       rdfs:label "Version Update Path"@en ;
                       rdfs:comment "Path indicating where you can do an object check on whether the member represents an update. Defaults to rdf:type."@en ;
                       rdfs:domain ldes:EventStream .

ldes:versionDeletePath a rdf:Property ;
                       rdfs:label "Version Delete Path"@en ;
                       rdfs:comment "Path indicating where you can do an object check on whether the member represents a delete. Defaults to rdf:type."@en ;
                       rdfs:domain ldes:EventStream .

ldes:versionCreateObject a rdf:Property ;
                       rdfs:label "Version Create Object"@en ;
                       rdfs:comment "If the RDF object matches the object in the version create path, the member represents a create."@en ;
                       rdfs:domain ldes:EventStream .

ldes:versionUpdateObject a rdf:Property ;
                       rdfs:label "Version Update Object"@en ;
                       rdfs:comment "If the RDF object matches the object in the version update path, the member represents an update."@en ;
                       rdfs:domain ldes:EventStream .

ldes:versionDeleteObject a rdf:Property ;
                       rdfs:label "Version Delete Object"@en ;
                       rdfs:comment "If the RDF object matches the object in the version delete path, the member represents a delete."@en ;
                       rdfs:domain ldes:EventStream .

ldes:transactionPath a rdf:Property ;
                     rdfs:label "Transaction Path"@en ;
                     rdfs:comment "Path indicating how a member indicates whether it is part of a transaction."@en ;
                     rdfs:domain ldes:EventStream .

ldes:transactionFinalizedPath a rdf:Property ;
                              rdfs:label "Transaction Finalized Path"@en ;
                              rdfs:comment "Path indicating whether the transaction has been finalized."@en ;
                              rdfs:domain ldes:EventStream .

ldes:transactionFinalizedObject a rdf:Property ;
                                rdfs:label "Transaction Finalized Object"@en ;
                                rdfs:comment "If the RDF object matches the object in the transaction finalized path, the member indicates the transaction has been finalized."@en ;
                                rdfs:domain ldes:EventStream .

ldes:immutable a rdf:Property ;
            rdfs:label "Immutable"@en ;
            rdfs:comment "Re-fetching this tree:Node will not result in new members."@en ;
            rdfs:domain tree:Node ;
            rdfs:range xsd:boolean .

ldes:pollingInterval a rdf:Property ;
            rdfs:label "Polling Interval"@en ;
            rdfs:comment "The number of seconds the client should keep between synchronization run calls."@en ;
            rdfs:domain ldes:EventStream ;
            rdfs:range xsd:integer .