@prefix altr-ext: <http://www.w3.org/ns/dx/connegp/altr-ext#> .
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ex: <http://example.org/> .
@prefix geo1: <http://www.opengis.net/ont/geosparql#> .
@prefix ont1: <https://prez.dev/ont/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prez: <https://prez.dev/> .
@prefix prof: <http://www.w3.org/ns/dx/prof/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix reg: <http://purl.org/linked-data/registry#> .
@prefix sdo: <https://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix skos1: <http://www.w3.org/2004/02/skos/core#> .
@prefix void: <http://rdfs.org/ns/void#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:catalogs-listing a ont1:DynamicEndpoint,
        ont1:ListingEndpoint ;
    rdfs:label "Catalogs Listing" ;
    prez:label "Catalogs Listing" ;
    ont1:apiPath "/catalogs" ;
    ont1:relevantShapes ex:shape-R0-HL1 .

ex:catalogs-object a ont1:DynamicEndpoint,
        ont1:ObjectEndpoint ;
    rdfs:label "Catalogs Object" ;
    prez:label "Catalogs Object" ;
    ont1:apiPath "/catalogs/{catalogId}" ;
    ont1:relevantShapes ex:shape-R0-HL1 .

ex:collections-listing a ont1:DynamicEndpoint,
        ont1:ListingEndpoint ;
    rdfs:label "Collections Listing" ;
    prez:label "Collections Listing" ;
    ont1:apiPath "/catalogs/{catalogId}/collections" ;
    ont1:relevantShapes ex:shape-R0-HL2 .

ex:collections-object a ont1:DynamicEndpoint,
        ont1:ObjectEndpoint ;
    rdfs:label "Collections Object" ;
    prez:label "Collections Object" ;
    ont1:apiPath "/catalogs/{catalogId}/collections/{recordsCollectionId}" ;
    ont1:relevantShapes ex:shape-R0-HL2 .

ex:items-listing a ont1:DynamicEndpoint,
        ont1:ListingEndpoint ;
    rdfs:label "Items Listing" ;
    prez:label "Items Listing" ;
    ont1:apiPath "/catalogs/{catalogId}/collections/{recordsCollectionId}/items" ;
    ont1:relevantShapes ex:shape-R0-HL3,
        ex:shape-R0-HL3-1,
        ex:shape-R0-HL3-2 .

ex:items-object a ont1:DynamicEndpoint,
        ont1:ObjectEndpoint ;
    rdfs:label "Items Object" ;
    prez:label "Items Object" ;
    ont1:apiPath "/catalogs/{catalogId}/collections/{recordsCollectionId}/items/{itemId}" ;
    ont1:relevantShapes ex:shape-R0-HL3,
        ex:shape-R0-HL3-1,
        ex:shape-R0-HL3-2 .

<http://example.org/ns#AltProfilesForListing> a sh:NodeShape ;
    sh:property [ sh:path altr-ext:constrainsClass ] ;
    sh:targetClass prez:ListingProfile ;
    ont1:hierarchyLevel 1 .

<http://example.org/ns#AltProfilesForObject> a sh:NodeShape ;
    sh:property [ sh:path altr-ext:constrainsClass ] ;
    sh:targetClass prez:ObjectProfile ;
    ont1:hierarchyLevel 1 .

<http://example.org/ns#Object> a sh:NodeShape ;
    ont1:hierarchyLevel 1,
        3 .

<http://localhost:8000> prez:sparqlEndpointEnabled true ;
    prez:version "4.23.3" .

<http://www.opengis.net/ogcapi-features-1/1.0/feature> a ont1:OGCFeaturesEndpoint,
        ont1:ObjectEndpoint ;
    ont1:relevantShapes <http://example.org/ns#Feature> .

<http://www.opengis.net/ogcapi-features-1/1.0/feature-collection> a ont1:OGCFeaturesEndpoint,
        ont1:ObjectEndpoint ;
    ont1:relevantShapes <http://example.org/ns#FeatureCollections> .

<http://www.opengis.net/ogcapi-features-1/1.0/feature-collections> a ont1:ListingEndpoint,
        ont1:OGCFeaturesEndpoint ;
    ont1:relevantShapes <http://example.org/ns#FeatureCollections> .

<http://www.opengis.net/ogcapi-features-1/1.0/features> a ont1:ListingEndpoint,
        ont1:OGCFeaturesEndpoint ;
    ont1:relevantShapes <http://example.org/ns#Feature> .

<http://www.opengis.net/ogcapi-features-1/1.0/queryables-global> a ont1:ListingEndpoint,
        ont1:OGCFeaturesEndpoint ;
    ont1:relevantShapes <http://example.org/ns#QueryablesGlobal> .

<http://www.opengis.net/ogcapi-features-1/1.0/queryables-local> a ont1:ListingEndpoint,
        ont1:OGCFeaturesEndpoint ;
    ont1:relevantShapes <http://example.org/ns#QueryablesLocal> .

rdf:first prez:description "The first item in the subject RDF list." ;
    prez:label "first" .

rdf:rest prez:description "The rest of the subject RDF list after the first item." ;
    prez:label "rest" .

rdf:type prez:description "The subject is an instance of a class." ;
    prez:label "type" .

xsd:boolean prez:label "boolean" .

xsd:integer prez:label "integer" .

xsd:string prez:label "string"^^xsd:string .

sh:alternativePath prez:description "The (single) value of this property must be a list of path elements, representing the elements of alternative paths."@en ;
    prez:label "alternative path"@en .

sh:class prez:description "The type that all value nodes must have."@en ;
    prez:label "class"@en .

sh:inversePath prez:description "The (single) value of this property represents an inverse path (object to subject)."@en ;
    prez:label "inverse path"@en .

sh:or prez:description "Specifies a list of shapes so that the value nodes must conform to at least one of the shapes."@en ;
    prez:label "or"@en .

sh:path prez:description "Specifies the property path of a property shape."@en ;
    prez:label "path"@en .

sh:property prez:description "Links a shape to its property shapes."@en ;
    prez:label "property"@en .

sh:targetClass prez:description "Links a shape to a class, indicating that all instances of the class must conform to the shape."@en ;
    prez:label "target class"@en .

prez:AnnotationPropertyList prez:descriptionList ( skos1:definition dcterms:description sdo:description ) ;
    prez:labelList ( skos1:prefLabel dcterms:title rdfs:label sdo:name ) ;
    prez:otherList ( sdo:color reg:status ) ;
    prez:provenanceList ( dcterms:provenance ) .

<https://prez.dev/endpoint/extended-ogc-records/cql-get> a ont1:ListingEndpoint ;
    ont1:relevantShapes <http://example.org/ns#CQL> .

<https://prez.dev/endpoint/extended-ogc-records/cql-post> a ont1:ListingEndpoint ;
    ont1:relevantShapes <http://example.org/ns#CQL> .

<https://prez.dev/endpoint/extended-ogc-records/narrowers> a ont1:ListingEndpoint ;
    ont1:relevantShapes <http://example.org/ns#Narrowers> .

<https://prez.dev/endpoint/extended-ogc-records/search> a ont1:ListingEndpoint ;
    ont1:relevantShapes <http://example.org/ns#Search> .

<https://prez.dev/endpoint/extended-ogc-records/top-concepts> a ont1:ListingEndpoint ;
    ont1:relevantShapes <http://example.org/ns#TopConcepts> .

<https://prez.dev/endpoint/system/object> a ont1:ObjectEndpoint,
        ont1:SystemEndpoint ;
    ont1:relevantShapes <http://example.org/ns#Profiles> .

<https://prez.dev/endpoint/system/profile-listing> a ont1:ListingEndpoint,
        ont1:SystemEndpoint ;
    ont1:relevantShapes <http://example.org/ns#Profiles> .

<https://prez.dev/endpoint/system/profile-object> a ont1:ObjectEndpoint,
        ont1:SystemEndpoint ;
    ont1:relevantShapes <http://example.org/ns#Profiles> .

<http://example.org/ns#Narrowers> a sh:NodeShape ;
    sh:targetClass skos1:Concept ;
    ont1:hierarchyLevel 1 .

<http://example.org/ns#QueryablesGlobal> a sh:NodeShape ;
    sh:targetClass geo1:Feature ;
    ont1:hierarchyLevel 3 .

<http://example.org/ns#QueryablesLocal> a sh:NodeShape ;
    sh:targetClass geo1:Feature ;
    ont1:hierarchyLevel 4 .

<http://example.org/ns#Search> a sh:NodeShape ;
    sh:targetClass prez:SearchResult ;
    ont1:hierarchyLevel 1 .

<http://example.org/ns#TopConcepts> a sh:NodeShape ;
    sh:targetClass skos1:Concept ;
    ont1:hierarchyLevel 1 .

dcterms:description prez:description "An account of the resource."@en,
        "Description may include but is not limited to: an abstract, a table of contents, a graphical representation, or a free-text account of the resource."@en ;
    prez:label "Description"@en .

dcterms:provenance prez:description "A statement of any changes in ownership and custody of the resource since its creation that are significant for its authenticity, integrity, and interpretation."@en,
        "The statement may include a description of any changes successive custodians made to the resource."@en ;
    prez:label "Provenance"@en .

dcterms:title prez:description "A name given to the resource."@en ;
    prez:label "Title"@en .

reg:status prez:description "The status of this register entry"@en ;
    prez:label "status"@en .

rdf:Property prez:description "The class of RDF properties." ;
    prez:label "Property" .

rdfs:Class prez:description "The class of classes." ;
    prez:label "Class" .

rdfs:label prez:description "A human-readable name for the subject." ;
    prez:label "label" .

owl:DatatypeProperty prez:description "The class of data properties." ;
    prez:label "DatatypeProperty" .

owl:ObjectProperty prez:description "The class of object properties." ;
    prez:label "ObjectProperty" .

skos1:definition prez:description "A statement or formal explanation of the meaning of a concept."@en ;
    prez:label "definition"@en .

skos1:prefLabel prez:description "A resource has no more than one value of skos:prefLabel per language tag, and no more than one value of skos:prefLabel without language tag."@en,
        "The preferred lexical label for a resource, in a given language."@en,
        "The range of skos:prefLabel is the class of RDF plain literals."@en,
        """skos:prefLabel, skos:altLabel and skos:hiddenLabel are pairwise
      disjoint properties."""@en ;
    prez:label "preferred label"@en .

prof:Profile prez:description """A specification that constrains, extends, combines, or provides guidance or explanation about the usage of other specifications.

This definition includes what are often called "application profiles", "metadata application profiles", or "metadata profiles"."""@en ;
    prez:label "Profile" .

sdo:color prez:description "The color of the product." ;
    prez:label "color" .

sdo:description prez:description "A description of the item"^^xsd:string,
        "A description of the item."^^xsd:string ;
    prez:label "description"^^xsd:string .

sdo:name prez:description "The name of the item"^^xsd:string,
        "The name of the item."^^xsd:string ;
    prez:label "name"^^xsd:string .

<http://example.org/ns#CQL> a sh:NodeShape ;
    sh:targetClass prez:CQLFilterResult ;
    ont1:hierarchyLevel 1 .

<http://example.org/ns#Feature> a sh:NodeShape ;
    sh:property [ sh:class geo1:FeatureCollection ;
            sh:path [ sh:inversePath rdfs:member ] ],
        [ sh:class dcat:Dataset ;
            sh:path ( [ sh:inversePath rdfs:member ] void:inDataset ) ] ;
    sh:targetClass geo1:Feature ;
    ont1:hierarchyLevel 4 .

<http://example.org/ns#FeatureCollections> a sh:NodeShape ;
    sh:property [ sh:class dcat:Dataset ;
            sh:path void:inDataset ] ;
    sh:targetClass geo1:FeatureCollection ;
    ont1:hierarchyLevel 3 .

ex:shape-R0-HL1 a sh:NodeShape ;
    sh:property [ sh:or ( [ sh:class skos1:Collection ] [ sh:class dcat:Dataset ] [ sh:class sdo:Dataset ] [ sh:class dcat:Resource ] [ sh:class sdo:CreativeWork ] [ sh:class skos1:ConceptScheme ] [ sh:class owl:Ontology ] ) ;
            sh:path [ sh:alternativePath ( dcterms:hasPart sdo:hasPart ) ] ] ;
    sh:targetClass dcat:Catalog,
        sdo:DataCatalog ;
    ont1:hierarchyLevel 1 .

ex:shape-R0-HL2 a sh:NodeShape ;
    sh:property [ sh:or ( [ sh:class dcat:Catalog ] [ sh:class sdo:DataCatalog ] ) ;
            sh:path [ sh:alternativePath ( [ sh:inversePath dcterms:hasPart ] [ sh:inversePath sdo:hasPart ] ) ] ] ;
    sh:targetClass owl:Ontology,
        skos1:Collection,
        skos1:ConceptScheme,
        dcat:Dataset,
        dcat:Resource,
        sdo:CreativeWork,
        sdo:Dataset ;
    ont1:hierarchyLevel 2 .

ex:shape-R0-HL3 a sh:NodeShape ;
    sh:property [ sh:class skos1:ConceptScheme ;
            sh:path skos1:inScheme ],
        [ sh:or ( [ sh:class dcat:Catalog ] [ sh:class sdo:DataCatalog ] ) ;
            sh:path ( skos1:inScheme [ sh:alternativePath ( [ sh:inversePath dcterms:hasPart ] [ sh:inversePath sdo:hasPart ] ) ] ) ] ;
    sh:targetClass skos1:Collection,
        skos1:Concept ;
    ont1:hierarchyLevel 3 .

ex:shape-R0-HL3-1 a sh:NodeShape ;
    sh:property [ sh:or ( [ sh:class dcat:Catalog ] [ sh:class sdo:DataCatalog ] ) ;
            sh:path ( [ sh:inversePath skos1:member ] [ sh:alternativePath ( [ sh:inversePath dcterms:hasPart ] [ sh:inversePath sdo:hasPart ] ) ] ) ],
        [ sh:class skos1:Collection ;
            sh:path [ sh:inversePath skos1:member ] ] ;
    sh:targetClass skos1:Concept ;
    ont1:hierarchyLevel 3 .

ex:shape-R0-HL3-2 a sh:NodeShape ;
    sh:property [ sh:class sdo:DataCatalog ;
            sh:path ( rdfs:isDefinedBy [ sh:inversePath sdo:hasPart ] ) ],
        [ sh:class owl:Ontology ;
            sh:path rdfs:isDefinedBy ] ;
    sh:targetClass rdf:Property,
        rdfs:Class,
        owl:DatatypeProperty,
        owl:ObjectProperty ;
    ont1:hierarchyLevel 3 .

void:inDataset prez:description "Points to the void:Dataset that a document is a part of." ;
    prez:label "in dataset" .

geo1:FeatureCollection prez:description "The class Feature Collection represents any collection of individual Features."@en ;
    prez:label "Feature Collection"@en .

rdfs:isDefinedBy prez:description "The defininition of the subject resource." ;
    prez:label "is defined by" .

rdfs:member prez:description "A member of the subject resource." ;
    prez:label "member" .

skos1:inScheme prez:description "Relates a resource (for example a concept) to a concept scheme in which it is included."@en ;
    prez:label "is in scheme"@en .

skos1:member prez:description "Relates a collection to one of its members."@en ;
    prez:label "has member"@en .

dcat:Resource prez:description "Resource published or curated by a single agent."@en ;
    prez:label "Catalogued resource"@en .

altr-ext:constrainsClass prez:label "Constrains Class" .

sdo:CreativeWork prez:description "The most generic kind of creative work, including books, movies, photographs, software programs, etc." ;
    prez:label "Creative work" .

sdo:Dataset prez:description "A body of structured information describing some topic(s) of interest." ;
    prez:label "Dataset" .

<http://example.org/ns#Profiles> a sh:NodeShape ;
    sh:targetClass prof:Profile ;
    ont1:hierarchyLevel 1 .

geo1:Feature prez:description "A discrete spatial phenomenon in a universe of discourse."@en ;
    prez:label "Feature"@en .

owl:Ontology prez:description "The class of ontologies." ;
    prez:label "Ontology" .

skos1:ConceptScheme prez:description "A set of concepts, optionally including statements about semantic relationships between those concepts."@en ;
    prez:label "Concept Scheme"@en .

dcterms:hasPart prez:description "A related resource that is included either physically or logically in the described resource."@en,
        "This property is intended to be used with non-literal values. This property is an inverse property of Is Part Of."@en ;
    prez:label "Has Part"@en .

skos1:Collection prez:description "A meaningful collection of concepts."@en ;
    prez:label "Collection"@en .

skos1:Concept prez:description "An idea or notion; a unit of thought."@en ;
    prez:label "Concept"@en .

dcat:Catalog prez:description "A curated collection of metadata about resources (e.g., datasets and data services in the context of a data catalog)."@en ;
    prez:label "Catalog"@en .

dcat:Dataset prez:description "A collection of data, published or curated by a single source, and available for access or download in one or more represenations."@en,
        "A collection of data, published or curated by a single source, and available for access or download in one or more representations."@en ;
    prez:label "Dataset"@en .

sdo:DataCatalog prez:description "A collection of datasets." ;
    prez:label "Data catalog" .

sdo:hasPart prez:description "Indicates an item or CreativeWork that is part of this item, or CreativeWork (in some sense)." ;
    prez:label "has part" .

() prez:description "The empty list, with no items in it. If the rest of a list is nil then the list has no more items in it." ;
    prez:label "nil" .

sh:NodeShape prez:description "A node shape is a shape that specifies constraint that need to be met with respect to focus nodes."@en ;
    prez:label "Node shape"@en .

