All Downloads are FREE. Search and download functionalities are using the official Maven repository.

model.elmo-shapes.trig Maven / Gradle / Ivy

# baseURI: http://dotwebstack.org/def/elmo-shacl#

@prefix xsd: .
@prefix rdf: .
@prefix rdfs: .
@prefix sh: .
@prefix dc: .
@prefix skos: .
@prefix http: .
@prefix xhtml: .

@prefix elmo-shape:  .
@prefix elmo-schemes: .
@prefix elmo-rt: .
@prefix elmo: .

GRAPH elmo:Shacl {
elmo-shape:
  rdfs:label "SHACL for ELMO"@en;
  rdfs:comment "This shapes graph can be used to validate dotwebstack configurations. It can also be used to create a visual representation of the structure"@en;
  sh:declare [
    sh:prefix "elmo-shape";
    sh:namespace "http://dotwebstack.org/def/elmo-shacl#";
  ]
.

# =========
# System configuration shapes
#
elmo-shape:Theatre a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:Theatre;
  rdfs:label "Theatre shape"@en;
  sh:name "elmo:Theatre";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Theatre;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "dc:title";
    sh:path dc:title;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:layout";
    sh:path elmo:layout;
    sh:maxCount 1;
    sh:class elmo:Layout;
  ];
  sh:property [
    sh:name "elmo:defaultBackend";
    sh:path elmo:defaultBackend;
    sh:maxCount 1;
    sh:class elmo:Backend;
  ];
.
elmo-shape:Site a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:Site;
  rdfs:label "Site shape"@en;
  sh:name "elmo:Site";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Site;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:domain";
    sh:path elmo:domain;
    sh:maxCount 1;
    sh:datatype xsd:string
  ];
  sh:property [
    sh:name "sh:basePath";
    sh:path elmo:basePath;
    sh:minCount 0;
    sh:maxCount 1;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "dc:title";
    sh:path dc:title;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:layout";
    sh:path elmo:layout;
    sh:class elmo:Layout;
    sh:maxCount 1
  ];
  sh:property [
    sh:name "elmo:defaultBackend";
    sh:path elmo:defaultBackend;
    sh:maxCount 1;
    sh:class elmo:Backend;
  ];
.
elmo-shape:Stage a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:Stage;
  rdfs:label "Stage shape"@en;
  sh:name "elmo:Stage";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Stage;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:site";
    sh:path elmo:site;
    sh:class elmo:Site;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "sh:basePath";
    sh:path elmo:basePath;
    sh:minCount 0;
    sh:maxCount 1;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "dc:title";
    sh:path dc:title;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:layout";
    sh:path elmo:layout;
    sh:class elmo:Layout;
    sh:maxCount 1
  ];
  sh:property [
    sh:name "elmo:defaultBackend";
    sh:path elmo:defaultBackend;
    sh:maxCount 1;
    sh:class elmo:Backend;
  ];
  sh:property [
    sh:name "elmo:defaultEndpoint";
    sh:path elmo:defaultEndpoint;
    sh:maxCount 1;
    sh:class elmo:Endpoint
  ];
.
elmo-shape:Layout a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:Layout;
  rdfs:label "Layout shape"@en;
  sh:name "elmo:Layout";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Layout;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "xhtml:stylesheet";
    sh:path xhtml:stylesheet;
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
.

# =========
# Backstage and core layers vocabulary
#
elmo-shape:InformationProduct a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:InformationProduct;
  rdfs:label "Information product shape"@en;
  sh:name "elmo:InformationProduct";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:InformationProduct;
  ];
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:query";
    sh:path elmo:query;
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:resultType";
    sh:path elmo:resultType;
    sh:class elmo:ResultType;
    sh:defaultValue elmo-rt:Graph;
    sh:node elmo-shape:ResultType;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:path";
    sh:path elmo:path;
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:backend";
    sh:path elmo:backend;
    sh:class elmo:Backend; #This condition will fail if rdfs:subClassOf triple is not added for subclasses of elmo:Backend;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:optionalParameter";
    sh:path elmo:optionalParameter;
    sh:class elmo:Parameter;
  ];
  sh:property [
    sh:name "elmo:requiredParameter";
    sh:path elmo:requiredParameter;
    sh:class elmo:Parameter;
  ];
  # Link to elmo:Representation
  sh:property [
    sh:path [sh:inversePath elmo:informationProduct ];
    sh:node elmo-shape:InformationProductRepresentation;
    sh:class elmo:Representation;
  ]
.
elmo-shape:ResultType a sh:NodeShape;
  rdfs:label "ResultType shape"@en;
  sh:name "elmo:ResultType";
  sh:property [
    sh:path skos:inScheme;
    sh:hasValue elmo-schemes:result-types;
    sh:minCount 1;
    sh:maxCount 1;
  ];
.

elmo-shape:Transaction a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:Transaction;
  rdfs:label "Transaction shape"@en;
  sh:name "elmo:Transaction";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Transaction;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path elmo:sequentialFlow;
    sh:name "elmo:sequentialFlow";
    sh:node elmo-shape:FlowList;
    sh:maxCount 1;
  ];
  # Parallel flows are not supported yet, but we won't deny such a configuration
  sh:property [
    sh:path elmo:parallelFlow;
    sh:node elmo-shape:FlowList;
    sh:maxCount 1;
  ];
# Maybe a default backend for a transaction might be nice, first version is without such a default
#  sh:property [
#    sh:name "elmo:backend";
#    sh:path elmo:backend;
#    sh:class elmo:Backend;
#    sh:maxCount 1;
#  ];
# Design issue: transformers are part of the front-end, and not transactions
#  sh:property [
#    sh:name "elmo:transformer";
#    sh:path elmo:transformer;
#    sh:class elmo:Transformer;
#    sh:maxCount 1;
#  ];
  sh:property [
    sh:name "elmo:optionalParameter";
    sh:path elmo:optionalParameter;
    sh:class elmo:Parameter;
  ];
  sh:property [
    sh:name "elmo:requiredParameter";
    sh:path elmo:requiredParameter;
    sh:class elmo:Parameter;
  ];
  # Link to elmo:Representation
  sh:property [
    sh:path [sh:inversePath elmo:transaction ];
    sh:node elmo-shape:TransactionRepresentation;
    sh:class elmo:Representation;
  ];
.

elmo-shape:Step a sh:NodeShape;
  sh:targetClass elmo:Step;
  rdfs:label "Step shape";
  sh:name "elmo:Step";
  sh:property [
    sh:path rdfs:label;
    sh:name "rdfs:label";
    sh:datatype xsd:string;
  ];
.

elmo-shape:ValidationStep a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:ValidationStep;
  rdfs:label "Validation step shape"@en;
  sh:name "elmo:ValidationStep";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:ValidationStep;
  ];
  sh:property [
      sh:name "rdfs:label";
      sh:path rdfs:label;
  ];
  sh:property [
    sh:name "elmo:conformsTo";
    sh:path elmo:conformsTo;
    sh:nodeKind sh:IRI;
  ];
.
elmo-shape:AssertionStep a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:AssertionStep;
  rdfs:label "Assertion step shape"@en;
  sh:name "elmo:AssertionStep";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:AssertionStep;
  ];
  sh:property [
      sh:name "rdfs:label";
      sh:path rdfs:label;
  ];
  sh:property [
    sh:name "elmo:assert";
    sh:path elmo:assert;
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:assertNot";
    sh:path elmo:assertNot;
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
.

elmo-shape:UpdateStep a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:UpdateStep;
  rdfs:label "Update step shape"@en;
  sh:name "elmo:UpdateStep";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:UpdateStep;
  ];
  sh:property [
      sh:name "rdfs:label";
      sh:path rdfs:label;
  ];
  sh:property [
    sh:path elmo:backend;
    sh:name "elmo:backend";
    sh:class elmo:Backend;
  ];
  sh:property [
    sh:name "elmo:query";
    sh:path elmo:query;
    sh:datatype xsd:string;
  ];
.

elmo-shape:PersistenceStep a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:PersistenceStep;
  rdfs:label "Persistence step shape"@en;
  sh:name "elmo:PersistenceStep";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:PersistenceStep;
  ];
  sh:property [
      sh:name "rdfs:label";
      sh:path rdfs:label;
  ];
  sh:property [
    sh:path elmo:backend;
    sh:name "elmo:backend";
    sh:class elmo:Backend;
  ];
  sh:property [
    sh:name "elmo:persistenceStrategy";
    sh:path elmo:persistenceStrategy;
    sh:class elmo:PersistenceStrategy;
    sh:node elmo-shape:PersistenceStrategy;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:targetGraph";
    sh:path elmo:targetGraph;
    sh:nodeKind sh:IRI;
  ];
  sh:property [
    sh:name "elmo:uriTemplate";
    sh:path elmo:uriTemplate;
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
.

elmo-shape:Parameter a sh:NodeShape;
  sh:targetClass elmo:Parameter;
  rdfs:label "Parameter shape"@en;
  sh:name "elmo:Parameter";
  sh:property [
    sh:path elmo:name;
    sh:name "elmo:name";
    sh:minCount 1;
    sh:maxCount 1;
    sh:datatype xsd:string;
  ];
.
elmo-shape:TermParameter a sh:NodeShape;
  sh:targetClass elmo:TermParameter;
  sh:name "elmo:TermParameter";
  sh:property [
    sh:path elmo:shape;
    sh:name "elmo:shape";
    # direct property or node with properties
    sh:node [ sh:xone (elmo-shape:URIParameterPropertyShape elmo-shape:StringParameterPropertyShape elmo-shape:IntegerParameterPropertyShape) ];
    sh:minCount 1;
    sh:maxCount 1;
  ];
.
elmo-shape:Paginator a sh:NodeShape;
  sh:targetClass elmo:Paginator;
  sh:name "elmo:Paginator";
.
elmo-shape:SpatialReprojector a sh:NodeShape;
  sh:targetClass elmo:SpatialReprojector;
  sh:name "elmo:SpatialReprojector"
.

elmo-shape:URIParameterPropertyShape a sh:NodeShape;
  sh:closed true;
  rdfs:label "URIParameterPropertyShape shape"@en;
  sh:name "sh:PropertyShape (URI)";
  sh:property [
    sh:path sh:nodeKind;
    sh:name "sh:nodeKind";
    sh:hasValue sh:IRI;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path sh:regex;
    sh:name "sh:regex";
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
.

elmo-shape:StringParameterPropertyShape a sh:NodeShape;
  sh:closed true;
  rdfs:label "StringParameterPropertyShape shape"@en;
  sh:name "sh:PropertyShape (String)";
  sh:property [
    sh:path sh:datatype;
    sh:name "sh:datatype";
    sh:hasValue xsd:string;
    sh:class rdfs:Datatype;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path sh:defaultValue;
    sh:name "sh:defaultValue";
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path sh:regex;
    sh:name "sh:regex";
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path sh:minLength;
    sh:name "sh:minLength";
    sh:datatype xsd:integer;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path sh:maxLength;
    sh:name "sh:maxLength";
    sh:datatype xsd:integer;
    sh:maxCount 1;
  ];
.

elmo-shape:IntegerParameterPropertyShape a sh:NodeShape;
  sh:closed true;
  rdfs:label "IntegerParameterPropertyShape shape"@en;
  sh:name "sh:PropertyShape (Integer)";
  sh:property [
    sh:path sh:datatype;
    sh:name "sh:datatype";
    sh:hasValue xsd:integer;
    sh:class rdfs:Datatype;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path sh:defaultValue;
    sh:name "sh:defaultValue";
    sh:datatype xsd:integer;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path sh:minInclusive;
    sh:name "sh:minInclusive";
    sh:datatype xsd:integer;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path sh:maxInclusive;
    sh:name "sh:maxInclusive";
    sh:datatype xsd:integer;
    sh:maxCount 1;
  ];
.

#Placeholder, for viewing preferences
elmo-shape:Datatype a sh:NodeShape;
  sh:targetClass rdfs:Datatype;
  sh:name "rdfs:Datatype";
.
elmo-shape:NodeKind a sh:NodeKind;
  sh:targetClass sh:NodeKind;
  sh:name "sh:NodeKind";
.
elmo-shape:string sh:targetNode xsd:string;
  sh:name "xsd:string";
.
elmo-shape:integer sh:targetNode xsd:integer;
  sh:name "xsd:integer";
.
elmo-shape:IRI sh:targetNode sh:IRI;
  sh:name "sh:IRI";
.

elmo-shape:PersistenceStrategy a sh:NodeShape;
  rdfs:label "PersistenceStrategy shape"@en;
  sh:name "elmo:PersistenceStrategy";
  sh:property [
    sh:path skos:inScheme;
    sh:hasValue elmo-schemes:persistence-strategy;
    sh:minCount 1;
    sh:maxCount 1;
  ];
.

elmo-shape:Backend a sh:NodeShape;
  sh:targetClass elmo:Backend;
  rdfs:label "Backend shape"@en;
  sh:name "elmo:Backend";
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
.

elmo-shape:Transformer a sh:NodeShape;
  sh:targetClass elmo:Transformer;
  rdfs:label "Transformer shape"@en;
  sh:name "elmo:Transformer";
.

elmo-shape:FlowList a sh:NodeShape;
  rdfs:label "FlowList shape"@en;
  sh:name "rdf:List of elmo:Step";
  sh:property [
    sh:path ([sh:zeroOrMorePath rdf:rest] rdf:first);
    sh:minCount 1;
    sh:class elmo:Step;
  ];
.

elmo-shape:RMLTransformer a sh:NodeShape;
  sh:targetClass elmo:RMLTransformer;
  rdfs:label "RMLTransformer shape"@en;
  sh:name "elmo:RMLTransformer";
  sh:property [
    sh:name "elmo:sourceGraph";
    sh:path elmo:sourceGraph;
    sh:minCount 1;
    sh:maxCount 1;
  ];
.
elmo-shape:XSLTransformer a sh:NodeShape;
  sh:targetClass elmo:XSLTransformer;
  sh:name "elmo:XSLTransformer";
  sh:property [
    sh:name "elmo:stylesheet";
    sh:path elmo:stylesheet;
    sh:minCount 1;
    sh:maxCount 1;
  ];
.

# =========
# Backstage extensions, with IP constraints
#
elmo-shape:SparqlBackend a sh:NodeShape;
  sh:targetClass elmo:SparqlBackend;
  rdfs:label "Sparql backend shape"@en;
  sh:name "elmo:SparqlBackend";
  sh:property [
    sh:name "elmo:endpoint";
    sh:path elmo:endpoint;
    sh:minCount 1;
    sh:maxCount 1;
    sh:datatype xsd:anyURI;
  ];
  sh:property [
    sh:path [sh:inversePath elmo:backend ];
    sh:xone (
      [
        sh:node elmo-shape:SparqlBackendStep;
        sh:class elmo:Step
      ]
      [
        sh:node elmo-shape:SparqlBackendInformationProduct;
        sh:class elmo:InformationProduct
      ]
    )
  ]
.
elmo-shape:SparqlBackendInformationProduct a sh:NodeShape;
  rdfs:label "IP constraints for sparql backend";
  sh:name "elmo:InformationProduct (Sparql)";
  sh:property [
    sh:path elmo:query;
    sh:name "elmo:query";
    sh:minCount 1;
    sh:maxCount 1;
  ];
.
elmo-shape:SparqlBackendStep a sh:NodeShape;
  rdfs:label "Step constraints for sparql backend";
  sh:name "elmo:Step (Sparql)";
.

elmo-shape:ElasticSearchBackend a sh:NodeShape;
  sh:targetClass elmo:ElasticSearchBackend;
  rdfs:label "Elastic search backend shape"@en;
  sh:name "elmo:ElasticSearchBackend";
  sh:property [
    sh:name "elmo:endpoint";
    sh:path elmo:endpoint;
    sh:minCount 1;
    sh:maxCount 1;
    sh:datatype xsd:anyURI;
  ];
  sh:property [
    sh:path [sh:inversePath elmo:backend ];
    sh:node [
      rdfs:label "IP constraints for sparql backend";
      sh:name "elmo:InformationProduct (Elastic search)";
      sh:property [
        sh:path elmo:query;
        sh:name "elmo:query";
        sh:minCount 1;
        sh:maxCount 1;
      ];
      sh:property [
        sh:path elmo:path;
        sh:name "elmo:path";
        sh:minCount 1;
        sh:maxCount 1;
      ];
    ];
    sh:class elmo:InformationProduct;
  ]
.

elmo-shape:FileBackend a sh:NodeShape;
  sh:targetClass elmo:FileBackend;
  rdfs:label "File backend shape"@en;
  sh:name "elmo:FileBackend";
  sh:property [
    sh:name "elmo:endpoint";
    sh:path elmo:endpoint;
    sh:minCount 1;
    sh:maxCount 1;
    sh:datatype xsd:anyURI;
  ];
  sh:property [
    sh:path [sh:inversePath elmo:backend ];
    sh:node [
      rdfs:label "IP constraints for file backend";
      sh:name "elmo:InformationProduct (File)";
      sh:property [
        sh:path elmo:path;
        sh:name "elmo:path";
        sh:minCount 1;
        sh:maxCount 1;
      ];
    ];
    sh:class elmo:InformationProduct;
  ]
.

# =========
# Frontend vocabulary
#
elmo-shape:Endpoint a sh:NodeShape;
  sh:targetClass elmo:Endpoint;
  rdfs:label "Endpoint shape"@en;
  sh:name "elmo:Endpoint";
  sh:or (elmo-shape:Redirection elmo-shape:DirectEndpoint elmo-shape:DynamicEndpoint);
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:stage";
    sh:path elmo:stage
  ];
  sh:property [
    sh:name "elmo:pathPattern";
    sh:path elmo:pathPattern;
    sh:datatype xsd:string;
    sh:minCount 1;
    sh:maxCount 1;
  ];
.

elmo-shape:DirectEndpoint a sh:NodeShape;
  sh:closed true;
  rdfs:label "Direct endpoint constraints"@en;
  sh:name "elmo:Endpoint (direct)";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Endpoint;
    sh:maxCount 1
  ];
  # Eigenlijk horen deze properties bij elmo:Endpoint, maar dat gaat mis ivm sh:closed true
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:stage";
    sh:path elmo:stage
  ];
  sh:property [
    sh:name "elmo:pathPattern";
    sh:path elmo:pathPattern;
    sh:datatype xsd:string;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  # -----------
  sh:property [
    sh:name "elmo:getRepresentation";
    sh:path elmo:getRepresentation;
    sh:class elmo:Representation;
  ];
  sh:property [
    sh:name "elmo:postRepresentation";
    sh:path elmo:postRepresentation;
    sh:class elmo:Representation;
  ];
  sh:property [
    sh:name "elmo:postService";
    sh:path elmo:postService;
    sh:class elmo:Service;
  ];
  sh:property [
    sh:name "elmo:putService";
    sh:path elmo:putService;
    sh:class elmo:Service;
  ];
  sh:property [
    sh:name "elmo:deleteService";
    sh:path elmo:deleteService;
    sh:class elmo:Service;
  ];
.

elmo-shape:DynamicEndpoint a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:DynamicEndpoint;
  rdfs:label "Dynamic endpoint shape"@en;
  sh:name "elmo:DynamicEndpoint";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:DynamicEndpoint;
    sh:maxCount 1
  ];
  # Eigenlijk horen deze properties bij elmo:Endpoint, maar dat gaat mis ivm sh:closed true
  sh:property [
    sh:name "elmo:pathPattern";
    sh:path elmo:pathPattern;
    sh:datatype xsd:string;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:stage";
    sh:path elmo:stage
  ];
  # -----------
  sh:property [
    sh:name "elmo:parameterMapper";
    sh:path elmo:parameterMapper;
    sh:class elmo:ParameterMapper;
    # minCount can be zero, in such a case the subject URL-parameter will be mapped
    sh:maxCount 1
  ];
.

elmo-shape:Redirection a sh:NodeShape;
  sh:closed true;
  sh:targetClass elmo:Redirection;
  rdfs:label "Redirection shape"@en;
  sh:name "elmo:Redirection";
  # Eigenlijk horen deze properties bij elmo:Endpoint, maar dat gaat mis ivm sh:closed true
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Redirection;
    sh:maxCount 1
  ];
  sh:property [
    sh:name "elmo:stage";
    sh:path elmo:stage
  ];
  sh:property [
    sh:name "elmo:pathPattern";
    sh:path elmo:pathPattern;
    sh:datatype xsd:string;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  # -----------
  sh:property [
    sh:name "elmo:redirectTemplate";
    sh:path elmo:redirectTemplate;
    sh:datatype xsd:string;
    sh:minCount 1;
    sh:maxCount 1;
  ];
.

elmo-shape:Representation a sh:NodeShape;
  sh:targetClass elmo:Representation;
  rdfs:label "Representation shape"@en;
  sh:name "elmo:Representation";
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:name";
    sh:path elmo:name;
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
  sh:xone (
    [
      sh:property [
        sh:path elmo:appliesTo;
        sh:maxCount 0;
      ];
    ]
    [
      sh:property [
        sh:name "elmo:appliesTo";
        sh:path elmo:appliesTo;
        sh:datatype xsd:string;
        sh:minCount 1;
      ];
    ]
    [
      sh:property [
        sh:name "elmo:appliesTo";
        sh:path elmo:appliesTo;
        sh:nodeKind sh:BlankNodeOrIRI;
        sh:node elmo-shape:Profile;
        sh:minCount 1;
      ];
    ]
  );
  sh:property [
    sh:name "elmo:layer";
    sh:path elmo:layer;
    sh:class elmo:Layer;
    sh:maxCount 1;
    sh:defaultValue elmo:MiddleLayer
  ];
# Temporary disabled, not needed yet (part of the React UI prototype)
#  sh:property [
#    sh:name "elmo:pageTemplate";
#    sh:path elmo:pageTemplate;
#    sh:datatype xsd:string;
#    sh:maxCount 1;
#  ];
  sh:property [
    sh:name "elmo:appearance";
    sh:path elmo:appearance;
    sh:nodeKind sh:BlankNodeOrIRI;
    sh:node elmo-shape:Appearance;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:parameterMapper";
    sh:path elmo:parameterMapper;
    sh:class elmo:ParameterMapper;
  ];
  sh:property [
    sh:path [sh:inversePath elmo:contains ];
    sh:node elmo-shape:TopLevelRepresentation;
  ];
  # Link to elmo:DirectEndpoint
  sh:property [
    sh:path [sh:inversePath elmo:getRepresentation ];
    sh:node elmo-shape:DirectEndpoint
  ];
  sh:property [
    sh:path [sh:inversePath elmo:postRepresentation ];
    sh:node elmo-shape:DirectEndpoint
  ];
.

elmo-shape:Profile a sh:NodeShape;
  sh:name "sh:NodeShape";
.

elmo-shape:Layer a sh:NodeShape;
  sh:targetClass elmo:Layer;
  rdfs:label "Layer shape"@en;
  sh:name "elmo:Layer";
  sh:closed true;
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Layer;
    sh:maxCount 1;
  ];
  sh:property [
    sh:path rdfs:label;
    sh:name "rdfs:label";
    sh:datatype rdf:langString
  ];
  sh:property [
    sh:path elmo:index;
    sh:name "elmo:index";
    sh:minCount 1;
    sh:maxCount 1;
    sh:datatype xsd:integer
  ]
.

elmo-shape:ParameterMapper a sh:NodeShape;
  sh:targetClass elmo:ParameterMapper;
  rdfs:label "Parameter mapper shape"@en;
  sh:name "elmo:ParameterMapper";
  sh:closed true;
  sh:property [
    sh:path rdf:type;
    # No specific value, because subtypes of elmo:ParameterMapper are also allowed
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:name";
    sh:path elmo:name;
    sh:datatype xsd:string;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:target";
    sh:path elmo:target;
    sh:xone (
      [sh:class elmo:Parameter]
      [sh:class elmo:ParameterMapper]
    );
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:source";
    sh:path elmo:source;
    sh:maxCount 1;
    sh:class rdf:Property;
    sh:node elmo-shape:MapperSource;
    sh:in (http:requestURI http:body)
  ];
  sh:property [
    sh:name "elmo:pattern";
    sh:path elmo:pattern;
    sh:maxCount 1;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "elmo:template";
    sh:path elmo:template;
    sh:maxCount 1;
    sh:datatype xsd:string;
  ];
.

#Placeholder, for viewing preferences
elmo-shape:MapperSource a sh:NodeShape;
  sh:name "rdf:Property";
.
elmo-shape:requestURI sh:targetNode http:requestURI;
  sh:name "http:requestURI";
.

elmo-shape:UriParameterMapper a sh:NodeShape;
  sh:targetClass elmo:UriParameterMapper;
  rdfs:label "UriParameterMapper shape"@en;
  sh:name "elmo:UriParameterMapper";
.

elmo-shape:Appearance a sh:NodeShape;
  sh:targetClass elmo:Appearance;
  rdfs:label "Appearance shape"@en;
  sh:name "elmo:Appearance";
  sh:closed true;
  sh:property [
    sh:path rdf:type;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:index";
    sh:path elmo:index;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:fragment";
    sh:path elmo:fragment;
    sh:nodeKind sh:BlankNodeOrIRI;
    sh:node elmo-shape:Fragment;
  ];
.

elmo-shape:TopLevelRepresentation a sh:NodeShape;
  rdfs:label "RP constraints for transactions";
  sh:name "elmo:Representation (Top level)";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Representation;
  ];
  sh:property [
    sh:path elmo:contains;
    sh:name "elmo:contains";
    sh:class elmo:Representation;
    sh:minCount 1;
    # elmo:contains might also refer to a rdf:List of elmo:Representations to facilitate the order in which child representations are presented
  ];
.
elmo-shape:Service a sh:NodeShape;
  rdfs:label "Service shape";
  sh:name "elmo:Service";
  sh:targetClass elmo:Service;
  sh:property [
    sh:path elmo:transaction;
    sh:name "elmo:transaction";
    sh:class elmo:Transaction;
    sh:maxCount 1;
  ];
  #Backlink to elmo-shape:DirectEndpoint
  sh:property [
    sh:path [sh:inversePath elmo:postService ];
    sh:node elmo-shape:DirectEndpoint
  ];
  sh:property [
    sh:path [sh:inversePath elmo:putService ];
    sh:node elmo-shape:DirectEndpoint
  ];
  sh:property [
    sh:path [sh:inversePath elmo:deleteService ];
    sh:node elmo-shape:DirectEndpoint
  ];
.
elmo-shape:InformationProductRepresentation a sh:NodeShape;
  rdfs:label "RP constraints for information products";
  sh:name "elmo:Representation (Information Product)";
  sh:property [
    sh:path rdf:type;
    sh:in (elmo:Representation elmo:Service);
  ];
  sh:property [
    sh:path elmo:informationProduct;
    sh:name "elmo:informationProduct";
    sh:class elmo:InformationProduct;
    sh:minCount 1;
    sh:maxCount 1;
  ];
.
elmo-shape:DataRepresentation a sh:NodeShape;
  rdfs:label "RP constraints for information products";
  sh:name "elmo:Representation (Data)";
  sh:property [
    sh:path rdf:type;
    sh:hasValue elmo:Representation;
  ];
  sh:property [
    sh:path elmo:data;
    sh:name "elmo:data";
    sh:class rdfs:Resource;
    sh:minCount 1;
  ];
  # Data representations should not have properties like informationProduct or transaction
.

elmo-shape:Fragment a sh:NodeShape;
  sh:closed true;
  rdfs:label "Fragment shape";
  sh:name "elmo:Fragment";
  sh:targetClass elmo:Fragment;
  sh:property [
    sh:name "elmo:appliesTo";
    sh:path elmo:appliesTo;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "rdfs:label";
    sh:path rdfs:label;
    sh:datatype rdf:langString
  ];
  sh:property [
    sh:name "elmo:appearance";
    sh:path elmo:appearance;
    sh:maxCount 1;
    sh:nodeKind sh:IRI;
  ];
  sh:property [
    sh:name "elmo:index";
    sh:path elmo:index;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "elmo:name";
    sh:path elmo:name;
    sh:maxCount 1;
    sh:datatype xsd:string
  ];
  sh:property [
    sh:name "rdf:value";
    sh:path rdf:value;
    sh:maxCount 1;
  ];
  sh:property [
    sh:name "xhtml:link";
    sh:path xhtml:link;
    sh:maxCount 1;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "xhtml:stylesheet";
    sh:path xhtml:stylesheet;
    sh:maxCount 1;
    sh:datatype xsd:string;
  ];
  sh:property [
    sh:name "xhtml:glossary";
    sh:path xhtml:glossary;
    sh:maxCount 1;
    sh:nodeKind sh:IRI;
  ];
  sh:property [
    sh:name "elmo:valueDatatype";
    sh:path elmo:valueDatatype;
    sh:maxCount 1;
    sh:nodeKind sh:IRI;
  ];
    sh:property [
    sh:name "elmo:valueTemplate";
    sh:path elmo:valueTemplate;
    sh:maxCount 1;
    sh:datatype xsd:string;
  ];
.
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy