@prefix :        <https://w3id.org/lodsight/rdf-path#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@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 schema:  <http://schema.org/> .
@prefix vann:    <http://purl.org/vocab/vann/> .
@prefix voaf:    <http://purl.org/vocommons/voaf#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .

<https://w3id.org/lodsight/rdf-path> a voaf:Vocabulary ;
  rdfs:label "RDF Path Vocabulary"@en ;
  rdfs:comment "Vocabulary for describing paths in RDF graphs."@en ;
  vann:preferredNamespaceUri "https://w3id.org/lodsight/rdf-path#" ;
  vann:preferredNamespacePrefix "rpath" ;
  dcterms:creator <http://mynarz.net/#jindrich>, [
    a schema:Person ;
    schema:name "Marek Dudáš" ;
    schema:email "Marek.Dudas@seznam.cz"
  ] ;
  dcterms:license <http://creativecommons.org/licenses/by/3.0/cz> .

# ----- Classes -----

:Path a rdfs:Class ;
  rdfs:label "Path"@en ;
  rdfs:comment "Path in an RDF graph"@en ;
  rdfs:isDefinedBy <https://w3id.org/lodsight/rdf-path> .

:Edge a rdfs:Class ;
  rdfs:label "Edge"@en ;
  rdfs:comment "Edge of an RDF path"@en ;
  rdfs:subClassOf rdf:Statement ;
  rdfs:isDefinedBy <https://w3id.org/lodsight/rdf-path> .

# ----- Properties -----

:edges a rdf:Property, owl:ObjectProperty ;
  rdfs:label "Edges"@en ;
  rdfs:comment "List of edges constituting a path"@en ;
  rdfs:domain :Path ;
  rdfs:range rdf:Seq ;
  rdfs:isDefinedBy <https://w3id.org/lodsight/rdf-path> .

:start a rdf:Property, owl:FunctionalProperty, owl:ObjectProperty ;
  rdfs:label "Start"@en ;
  rdfs:comment "Start of an edge"@en ;
  rdfs:subPropertyOf rdf:subject ;
  rdfs:domain :Edge ; 
  rdfs:isDefinedBy <https://w3id.org/lodsight/rdf-path> .

:edgeProperty a rdf:Property, owl:FunctionalProperty, owl:ObjectProperty ;
  rdfs:label "Edge property"@en ;
  rdfs:comment "Property of an edge"@en ;
  rdfs:subPropertyOf rdf:predicate ;
  rdfs:domain :Edge ;
  rdfs:range rdf:Property ;
  rdfs:isDefinedBy <https://w3id.org/lodsight/rdf-path> .

:end a rdf:Property, owl:FunctionalProperty ;
  rdfs:label "End"@en ;
  rdfs:comment "End of an edge"@en ;
  rdfs:subPropertyOf rdf:object ;
  rdfs:domain :Edge ;
  rdfs:isDefinedBy <https://w3id.org/lodsight/rdf-path> .
