Skip to main content

rudof_rdf/rdf_core/vocabs/
shacl.rs

1use crate::rdf_core::vocabs::RdfVocabulary;
2use crate::vocab_term;
3
4pub struct ShaclVocab;
5
6/// SHACL vocabulary terms
7impl RdfVocabulary for ShaclVocab {
8    const BASE: &'static str = "http://www.w3.org/ns/shacl#";
9}
10
11// Base
12vocab_term!(ShaclVocab, SH, "");
13
14// Value type
15vocab_term!(ShaclVocab, SH_NODE_KIND, "nodeKind");
16vocab_term!(ShaclVocab, SH_CLASS, "class");
17vocab_term!(ShaclVocab, SH_DATATYPE, "datatype");
18
19// Node kind
20vocab_term!(ShaclVocab, SH_BLANK_NODE, "BlankNode");
21vocab_term!(ShaclVocab, SH_IRI, "IRI");
22vocab_term!(ShaclVocab, SH_BLANK_NODE_OR_IRI, "BlankNodeOrIRI");
23vocab_term!(ShaclVocab, SH_BLANK_NODE_OR_LITERAL, "BlankNodeOrLiteral");
24vocab_term!(ShaclVocab, SH_LITERAL, "Literal");
25vocab_term!(ShaclVocab, SH_IRI_OR_LITERAL, "IRIOrLiteral");
26
27// Severity
28vocab_term!(ShaclVocab, SH_INFO, "Info");
29vocab_term!(ShaclVocab, SH_WARNING, "Warning");
30vocab_term!(ShaclVocab, SH_VIOLATION, "Violation");
31vocab_term!(ShaclVocab, SH_DEBUG, "Debug"); // SHACL 1.2
32vocab_term!(ShaclVocab, SH_TRACE, "Trace"); // SHACL 1.2
33
34// Shape Type
35vocab_term!(ShaclVocab, SH_SCHEMA, "Schema");
36vocab_term!(ShaclVocab, SH_SHAPE, "Shape");
37vocab_term!(ShaclVocab, SH_NODE_SHAPE, "NodeShape");
38vocab_term!(ShaclVocab, SH_PROPERTY_SHAPE, "PropertyShape");
39
40// Validation
41vocab_term!(ShaclVocab, SH_VALIDATION_REPORT, "ValidationReport");
42vocab_term!(ShaclVocab, SH_VALIDATION_RESULT, "ValidationResult");
43vocab_term!(ShaclVocab, SH_CONFORMS, "conforms");
44vocab_term!(ShaclVocab, SH_DEACTIVATED, "deactivated");
45vocab_term!(ShaclVocab, SH_FOCUS_NODE, "focusNode");
46vocab_term!(ShaclVocab, SH_MESSAGE, "message");
47vocab_term!(ShaclVocab, SH_RESULT, "result");
48vocab_term!(ShaclVocab, SH_RESULT_PATH, "resultPath");
49vocab_term!(ShaclVocab, SH_RESULT_SEVERITY, "resultSeverity");
50vocab_term!(ShaclVocab, SH_RESULT_MESSAGE, "resultMessage");
51vocab_term!(ShaclVocab, SH_SHAPES_GRAPH, "shapesGraph");
52vocab_term!(ShaclVocab, SH_SEVERITY, "severity");
53vocab_term!(ShaclVocab, SH_SOURCE_CONSTRAINT_COMPONENT, "sourceConstraintComponent");
54vocab_term!(ShaclVocab, SH_SOURCE_SHAPE, "sourceShape");
55vocab_term!(ShaclVocab, SH_VALUE, "value");
56
57// Logical constratints
58vocab_term!(ShaclVocab, SH_AND, "and");
59vocab_term!(ShaclVocab, SH_NOT, "not");
60vocab_term!(ShaclVocab, SH_OR, "or");
61vocab_term!(ShaclVocab, SH_XONE, "xone");
62
63// Property pair
64vocab_term!(ShaclVocab, SH_DISJOINT, "disjoint");
65vocab_term!(ShaclVocab, SH_EQUALS, "equals");
66vocab_term!(ShaclVocab, SH_LESS_THAN, "lessThan");
67vocab_term!(ShaclVocab, SH_LESS_THAN_OR_EQUALS, "lessThanOrEquals");
68
69// Non validating
70vocab_term!(ShaclVocab, SH_DESCRIPTION, "description");
71vocab_term!(ShaclVocab, SH_NAME, "name");
72vocab_term!(ShaclVocab, SH_ORDER, "order");
73vocab_term!(ShaclVocab, SH_GROUP, "group");
74
75// Other
76vocab_term!(ShaclVocab, SH_CLOSED, "closed");
77vocab_term!(ShaclVocab, SH_ENTAILMENT, "entailment");
78vocab_term!(ShaclVocab, SH_HAS_VALUE, "hasValue");
79vocab_term!(ShaclVocab, SH_IGNORED_PROPERTIES, "ignoredProperties");
80vocab_term!(ShaclVocab, SH_IN, "in");
81vocab_term!(ShaclVocab, SH_TEXT, "text");
82
83// String based
84vocab_term!(ShaclVocab, SH_PATTERN, "pattern");
85vocab_term!(ShaclVocab, SH_FLAGS, "flags");
86vocab_term!(ShaclVocab, SH_LANGUAGE_IN, "languageIn");
87vocab_term!(ShaclVocab, SH_MIN_LENGTH, "minLength");
88vocab_term!(ShaclVocab, SH_MAX_LENGTH, "maxLength");
89vocab_term!(ShaclVocab, SH_UNIQUE_LANG, "uniqueLang");
90
91// Cardinality
92vocab_term!(ShaclVocab, SH_MIN_COUNT, "minCount");
93vocab_term!(ShaclVocab, SH_MAX_COUNT, "maxCount");
94
95// Value range
96vocab_term!(ShaclVocab, SH_MIN_INCLUSIVE, "minInclusive");
97vocab_term!(ShaclVocab, SH_MIN_EXCLUSIVE, "minExclusive");
98vocab_term!(ShaclVocab, SH_MAX_INCLUSIVE, "maxInclusive");
99vocab_term!(ShaclVocab, SH_MAX_EXCLUSIVE, "maxExclusive");
100
101// Shape based
102vocab_term!(ShaclVocab, SH_NODE, "node");
103vocab_term!(ShaclVocab, SH_PROPERTY, "property");
104vocab_term!(ShaclVocab, SH_QUALIFIED_MIN_COUNT, "qualifiedMinCount");
105vocab_term!(ShaclVocab, SH_QUALIFIED_MAX_COUNT, "qualifiedMaxCount");
106vocab_term!(ShaclVocab, SH_QUALIFIED_VALUE_SHAPE, "qualifiedValueShape");
107vocab_term!(ShaclVocab, SH_PATH, "path");
108vocab_term!(
109    ShaclVocab,
110    SH_QUALIFIED_VALUE_SHAPES_DISJOINT,
111    "qualifiedValueShapesDisjoint"
112);
113vocab_term!(ShaclVocab, SH_REIFICATION_REQUIRED, "reificationRequired"); // SHACL 1.2
114vocab_term!(ShaclVocab, SH_REIFIER_SHAPE, "reifierShape"); // SHACL 1.2
115vocab_term!(
116    ShaclVocab,
117    SH_REIFIER_SHAPE_CONSTRAINT_COMPONENT,
118    "ReifierShapeConstraintComponent"
119); // SHACL 1.2
120
121// TODO - For node expressions, do not delete
122// vocab_term!(ShaclVocab, SH_DEFAULT_VALUE, "defaultValue");
123// vocab_term!(ShaclVocab, SH_VALUES, "values");
124
125// Targets
126vocab_term!(ShaclVocab, SH_TARGET_NODE, "targetNode");
127vocab_term!(ShaclVocab, SH_TARGET_CLASS, "targetClass");
128vocab_term!(ShaclVocab, SH_TARGET_SUBJECTS_OF, "targetSubjectsOf");
129vocab_term!(ShaclVocab, SH_TARGET_OBJECTS_OF, "targetObjectsOf");
130
131// SPARQL
132vocab_term!(ShaclVocab, SH_SOURCE_CONSTRAINT, "sourceConstraint");
133vocab_term!(ShaclVocab, SH_CLOSED_CONSTRAINT_COMPONENT, "ClosedConstraintComponent");
134
135// SHACL Paths
136vocab_term!(ShaclVocab, SH_ALTERNATIVE_PATH, "alternativePath");
137vocab_term!(ShaclVocab, SH_ZERO_OR_ONE_PATH, "zeroOrOnePath");
138vocab_term!(ShaclVocab, SH_ZERO_OR_MORE_PATH, "zeroOrMorePath");
139vocab_term!(ShaclVocab, SH_ONE_OR_MORE_PATH, "oneOrMorePath");
140vocab_term!(ShaclVocab, SH_INVERSE_PATH, "inversePath");