@base           <https://www.w3.org/ns/ldt/core/templates> .

@prefix :	<#> .
@prefix rdf:	<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:	<http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:	<http://www.w3.org/2001/XMLSchema#> .
@prefix owl:	<http://www.w3.org/2002/07/owl#> .
@prefix ldt:	<https://www.w3.org/ns/ldt#> .
@prefix sp:	<http://spinrdf.org/sp#> .
@prefix spl:	<http://spinrdf.org/spl#> .
@prefix dct:	<http://purl.org/dc/terms/> .
@prefix vann:	<http://purl.org/vocab/vann/> .
@prefix foaf:	<http://xmlns.com/foaf/0.1/> .

: a ldt:Ontology, owl:Ontology ;
    owl:imports ldt:, sp: ;
    owl:versionInfo "1.1.4" ;
    rdfs:label "Core LDT templates" ;
    dct:created "2016-08-31T21:54:00+02:00"^^xsd:dateTime ;
    vann:preferredNamespaceUri "https://www.w3.org/ns/ldt/core/templates#" ;
    dct:license <http://www.opendatacommons.org/licenses/pddl/1.0/> .

# TEMPLATES

:Document a ldt:Template ;
    ldt:match "{path: .*}" ;
    ldt:query :Describe ;
    ldt:update :Delete ;
    rdfs:label "Document" ;
    rdfs:comment "Generic document resource" ;
    rdfs:isDefinedBy : .

:SPARQLEndpoint a ldt:Template ;
    ldt:match "/sparql" ;
    ldt:query :Describe ;
    ldt:param  :Query, :DefaultGraphURI, :NamedGraphURI ;
    # using-graph-uri - POST only
    # using-named-graph-uri - POST only
    ldt:loadClass <java:com.atomgraph.core.model.impl.SPARQLEndpointImpl> ;
    rdfs:label "SPARQL endpoint" ;
    rdfs:isDefinedBy : .

:GraphStore a ldt:Template ;
    ldt:match "/service" ;
    ldt:query :Describe ;
    ldt:param :Default, :Graph ;
    ldt:loadClass <java:com.atomgraph.core.model.impl.GraphStoreImpl> ;
    rdfs:label "Graph Store" ;
    rdfs:isDefinedBy : .

# PARAMETERS

:Query a ldt:Parameter ;
    rdfs:label "Query string" ;
    spl:predicate <#query> ;
    spl:valueType xsd:string ;
    spl:optional true ;
    rdfs:isDefinedBy : .

:DefaultGraphURI a ldt:Parameter ;
    rdfs:label "Default graph URI" ;
    spl:predicate <#default-graph-uri> ;
    spl:valueType rdfs:Resource ;
    spl:optional true ;
    rdfs:isDefinedBy : .

:NamedGraphURI a ldt:Parameter ;
    rdfs:label "Named graph URI" ;
    spl:predicate <#named-graph-uri> ;
    spl:valueType rdfs:Resource ;
    spl:optional true ;
    rdfs:isDefinedBy : .

:Default a ldt:Parameter ;
    rdfs:label "Default graph" ;
    spl:predicate <#default> ;
    spl:valueType xsd:boolean ;
    spl:optional true ;
    rdfs:isDefinedBy : .

:Graph a ldt:Parameter ;
    rdfs:label "Graph URI" ;
    spl:predicate <#graph> ;
    spl:valueType rdfs:Resource ;
    spl:optional true ;
    rdfs:isDefinedBy : .

# COMMANDS

:Describe a sp:Describe, sp:Query ;
    sp:text """DESCRIBE ?this
WHERE {
    ?this ?p ?o
}""" ;
    rdfs:label "Describe" ;
    rdfs:isDefinedBy : .

:Delete a sp:DeleteWhere, sp:Update ;
      sp:text """DELETE WHERE {
    ?this ?p ?o
}""" ;
    rdfs:label "Delete" ;
    rdfs:isDefinedBy : .