@faubulous/mentor-rdf 2.0.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -100,6 +100,630 @@ var xsd = {
100
100
  "usignedByte": { termType: "NamedNode", value: "http://www.w3.org/2001/XMLSchema#usignedByte", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "http://www.w3.org/2001/XMLSchema#usignedByte" }
101
101
  };
102
102
 
103
+ // src/ontologies/sparql.ts
104
+ var _SPARQL = "https://w3id.org/sparql-syntax#";
105
+ var SPARQL = {
106
+ /** A vocabulary for representing the syntax of SPARQL 1.2 queries and updates as RDF. */
107
+ "sparql_syntax": "https://w3id.org/sparql-syntax",
108
+ "ABS": "https://w3id.org/sparql-syntax#ABS",
109
+ /** An ADD operation. SPARQL 1.2 Update grammar production [37]. */
110
+ "Add": "https://w3id.org/sparql-syntax#Add",
111
+ /** An arithmetic + expression. */
112
+ "Addition": "https://w3id.org/sparql-syntax#Addition",
113
+ /** Abstract superclass of the SPARQL aggregates. SPARQL 1.2 grammar production [137]. */
114
+ "Aggregate": "https://w3id.org/sparql-syntax#Aggregate",
115
+ /** An (expression AS ?variable) alias in a SELECT clause or GROUP BY condition. */
116
+ "Alias": "https://w3id.org/sparql-syntax#Alias",
117
+ /** All graphs as target of CLEAR or DROP (ALL keyword). */
118
+ "AllGraphs": "https://w3id.org/sparql-syntax#AllGraphs",
119
+ /** A property path alternative (elt1 | elt2). SPARQL 1.2 grammar production [92]. */
120
+ "AltPath": "https://w3id.org/sparql-syntax#AltPath",
121
+ /** A logical && expression. */
122
+ "And": "https://w3id.org/sparql-syntax#And",
123
+ /** An explicit ASC(...) order condition. */
124
+ "Asc": "https://w3id.org/sparql-syntax#Asc",
125
+ /** An ASK query. SPARQL 1.2 grammar production [14]. */
126
+ "AskQuery": "https://w3id.org/sparql-syntax#AskQuery",
127
+ "Avg": "https://w3id.org/sparql-syntax#Avg",
128
+ "BNODE": "https://w3id.org/sparql-syntax#BNODE",
129
+ "BOUND": "https://w3id.org/sparql-syntax#BOUND",
130
+ /** A BIND assignment. SPARQL 1.2 grammar production [63]. */
131
+ "Bind": "https://w3id.org/sparql-syntax#Bind",
132
+ /** A blank node written in query syntax (_:label, [], [...] or a collection cell), as opposed to the structural blank nodes of the representation itself. */
133
+ "BlankNode": "https://w3id.org/sparql-syntax#BlankNode",
134
+ /** A call of a SPARQL built-in function; sparql:function points to the built-in function individual. SPARQL 1.2 grammar production [131]. */
135
+ "BuiltInCall": "https://w3id.org/sparql-syntax#BuiltInCall",
136
+ /** The class of SPARQL built-in function individuals. */
137
+ "BuiltInFunction": "https://w3id.org/sparql-syntax#BuiltInFunction",
138
+ "CEIL": "https://w3id.org/sparql-syntax#CEIL",
139
+ "COALESCE": "https://w3id.org/sparql-syntax#COALESCE",
140
+ "CONCAT": "https://w3id.org/sparql-syntax#CONCAT",
141
+ "CONTAINS": "https://w3id.org/sparql-syntax#CONTAINS",
142
+ /** A CLEAR operation. SPARQL 1.2 Update grammar production [34]. */
143
+ "Clear": "https://w3id.org/sparql-syntax#Clear",
144
+ /** A CONSTRUCT query. SPARQL 1.2 grammar production [12]. */
145
+ "ConstructQuery": "https://w3id.org/sparql-syntax#ConstructQuery",
146
+ /** A COPY operation. SPARQL 1.2 Update grammar production [39]. */
147
+ "Copy": "https://w3id.org/sparql-syntax#Copy",
148
+ "Count": "https://w3id.org/sparql-syntax#Count",
149
+ /** A CREATE operation. SPARQL 1.2 Update grammar production [36]. */
150
+ "Create": "https://w3id.org/sparql-syntax#Create",
151
+ "DATATYPE": "https://w3id.org/sparql-syntax#DATATYPE",
152
+ "DAY": "https://w3id.org/sparql-syntax#DAY",
153
+ /** The default graph as target of an update operation (DEFAULT keyword). */
154
+ "DefaultGraph": "https://w3id.org/sparql-syntax#DefaultGraph",
155
+ /** A DELETE DATA operation. SPARQL 1.2 Update grammar production [41]. */
156
+ "DeleteData": "https://w3id.org/sparql-syntax#DeleteData",
157
+ /** A DELETE WHERE operation. SPARQL 1.2 Update grammar production [42]. */
158
+ "DeleteWhere": "https://w3id.org/sparql-syntax#DeleteWhere",
159
+ /** A DESC(...) order condition. */
160
+ "Desc": "https://w3id.org/sparql-syntax#Desc",
161
+ /** A DESCRIBE query. SPARQL 1.2 grammar production [13]. */
162
+ "DescribeQuery": "https://w3id.org/sparql-syntax#DescribeQuery",
163
+ /** An arithmetic / expression. */
164
+ "Division": "https://w3id.org/sparql-syntax#Division",
165
+ /** A DROP operation. SPARQL 1.2 Update grammar production [35]. */
166
+ "Drop": "https://w3id.org/sparql-syntax#Drop",
167
+ "ENCODE_FOR_URI": "https://w3id.org/sparql-syntax#ENCODE_FOR_URI",
168
+ /** An = comparison. */
169
+ "Eq": "https://w3id.org/sparql-syntax#Eq",
170
+ /** An EXISTS expression with an embedded graph pattern. SPARQL 1.2 grammar production [135]. */
171
+ "Exists": "https://w3id.org/sparql-syntax#Exists",
172
+ /** Abstract superclass of all compound SPARQL expressions. Atomic expressions (variables, IRIs, literals) appear directly as terms. */
173
+ "Expression": "https://w3id.org/sparql-syntax#Expression",
174
+ "FLOOR": "https://w3id.org/sparql-syntax#FLOOR",
175
+ /** A FILTER constraint. SPARQL 1.2 grammar production [71]. */
176
+ "Filter": "https://w3id.org/sparql-syntax#Filter",
177
+ /** A call of a custom function identified by IRI. SPARQL 1.2 grammar production [73]. */
178
+ "FunctionCall": "https://w3id.org/sparql-syntax#FunctionCall",
179
+ /** A >= comparison. */
180
+ "Geq": "https://w3id.org/sparql-syntax#Geq",
181
+ /** A GRAPH graph pattern, also used for GRAPH blocks inside update quad templates. SPARQL 1.2 grammar production [61]. */
182
+ "Graph": "https://w3id.org/sparql-syntax#Graph",
183
+ /** An explicit nested group graph pattern { ... }, including the branches of a UNION. SPARQL 1.2 grammar production [55]. */
184
+ "Group": "https://w3id.org/sparql-syntax#Group",
185
+ "GroupConcat": "https://w3id.org/sparql-syntax#GroupConcat",
186
+ /** A > comparison. */
187
+ "Gt": "https://w3id.org/sparql-syntax#Gt",
188
+ "HOURS": "https://w3id.org/sparql-syntax#HOURS",
189
+ "IF": "https://w3id.org/sparql-syntax#IF",
190
+ "IRI": "https://w3id.org/sparql-syntax#IRI",
191
+ /** An IN expression; sparql:arg1 holds the tested expression, sparql:args the list of candidates. */
192
+ "In": "https://w3id.org/sparql-syntax#In",
193
+ /** An INSERT DATA operation. SPARQL 1.2 Update grammar production [40]. */
194
+ "InsertData": "https://w3id.org/sparql-syntax#InsertData",
195
+ /** An inverse property path (^elt). SPARQL 1.2 grammar production [95]. */
196
+ "InversePath": "https://w3id.org/sparql-syntax#InversePath",
197
+ "LANG": "https://w3id.org/sparql-syntax#LANG",
198
+ "LANGDIR": "https://w3id.org/sparql-syntax#LANGDIR",
199
+ "LANGMATCHES": "https://w3id.org/sparql-syntax#LANGMATCHES",
200
+ "LCASE": "https://w3id.org/sparql-syntax#LCASE",
201
+ /** A <= comparison. */
202
+ "Leq": "https://w3id.org/sparql-syntax#Leq",
203
+ /** A LOAD operation. SPARQL 1.2 Update grammar production [33]. */
204
+ "Load": "https://w3id.org/sparql-syntax#Load",
205
+ /** A < comparison. */
206
+ "Lt": "https://w3id.org/sparql-syntax#Lt",
207
+ "MD5": "https://w3id.org/sparql-syntax#MD5",
208
+ "MINUTES": "https://w3id.org/sparql-syntax#MINUTES",
209
+ "MONTH": "https://w3id.org/sparql-syntax#MONTH",
210
+ "Max": "https://w3id.org/sparql-syntax#Max",
211
+ "Min": "https://w3id.org/sparql-syntax#Min",
212
+ /** A MINUS graph pattern. SPARQL 1.2 grammar production [69]. */
213
+ "Minus": "https://w3id.org/sparql-syntax#Minus",
214
+ /** A DELETE/INSERT operation with a WHERE clause. SPARQL 1.2 Update grammar production [43]. */
215
+ "Modify": "https://w3id.org/sparql-syntax#Modify",
216
+ /** A MOVE operation. SPARQL 1.2 Update grammar production [38]. */
217
+ "Move": "https://w3id.org/sparql-syntax#Move",
218
+ /** An arithmetic * expression. */
219
+ "Multiplication": "https://w3id.org/sparql-syntax#Multiplication",
220
+ "NOW": "https://w3id.org/sparql-syntax#NOW",
221
+ /** All named graphs as target of CLEAR or DROP (NAMED keyword). */
222
+ "NamedGraphs": "https://w3id.org/sparql-syntax#NamedGraphs",
223
+ /** A negated property set (!iri or !(iri1 | ^iri2 | ...)). SPARQL 1.2 grammar production [98]. */
224
+ "NegatedPath": "https://w3id.org/sparql-syntax#NegatedPath",
225
+ /** A != comparison. */
226
+ "Neq": "https://w3id.org/sparql-syntax#Neq",
227
+ /** A NOT EXISTS expression with an embedded graph pattern. SPARQL 1.2 grammar production [136]. */
228
+ "NotExists": "https://w3id.org/sparql-syntax#NotExists",
229
+ /** A NOT IN expression; sparql:arg1 holds the tested expression, sparql:args the list of candidates. */
230
+ "NotIn": "https://w3id.org/sparql-syntax#NotIn",
231
+ "OBJECT": "https://w3id.org/sparql-syntax#OBJECT",
232
+ /** A property path with the + modifier. SPARQL 1.2 grammar production [96]. */
233
+ "OneOrMorePath": "https://w3id.org/sparql-syntax#OneOrMorePath",
234
+ /** An OPTIONAL graph pattern. SPARQL 1.2 grammar production [60]. */
235
+ "Optional": "https://w3id.org/sparql-syntax#Optional",
236
+ /** A logical || expression. */
237
+ "Or": "https://w3id.org/sparql-syntax#Or",
238
+ "PREDICATE": "https://w3id.org/sparql-syntax#PREDICATE",
239
+ /** Abstract superclass of the four SPARQL query forms. */
240
+ "Query": "https://w3id.org/sparql-syntax#Query",
241
+ "RAND": "https://w3id.org/sparql-syntax#RAND",
242
+ "REGEX": "https://w3id.org/sparql-syntax#REGEX",
243
+ "REPLACE": "https://w3id.org/sparql-syntax#REPLACE",
244
+ "ROUND": "https://w3id.org/sparql-syntax#ROUND",
245
+ "SECONDS": "https://w3id.org/sparql-syntax#SECONDS",
246
+ "SHA1": "https://w3id.org/sparql-syntax#SHA1",
247
+ "SHA256": "https://w3id.org/sparql-syntax#SHA256",
248
+ "SHA384": "https://w3id.org/sparql-syntax#SHA384",
249
+ "SHA512": "https://w3id.org/sparql-syntax#SHA512",
250
+ "STR": "https://w3id.org/sparql-syntax#STR",
251
+ "STRAFTER": "https://w3id.org/sparql-syntax#STRAFTER",
252
+ "STRBEFORE": "https://w3id.org/sparql-syntax#STRBEFORE",
253
+ "STRDT": "https://w3id.org/sparql-syntax#STRDT",
254
+ "STRENDS": "https://w3id.org/sparql-syntax#STRENDS",
255
+ "STRLANG": "https://w3id.org/sparql-syntax#STRLANG",
256
+ "STRLANGDIR": "https://w3id.org/sparql-syntax#STRLANGDIR",
257
+ "STRLEN": "https://w3id.org/sparql-syntax#STRLEN",
258
+ "STRSTARTS": "https://w3id.org/sparql-syntax#STRSTARTS",
259
+ "STRUUID": "https://w3id.org/sparql-syntax#STRUUID",
260
+ "SUBJECT": "https://w3id.org/sparql-syntax#SUBJECT",
261
+ "SUBSTR": "https://w3id.org/sparql-syntax#SUBSTR",
262
+ "Sample": "https://w3id.org/sparql-syntax#Sample",
263
+ /** A SELECT query. SPARQL 1.2 grammar production [9]. */
264
+ "SelectQuery": "https://w3id.org/sparql-syntax#SelectQuery",
265
+ /** A property path sequence (elt1 / elt2). SPARQL 1.2 grammar production [93]. */
266
+ "SeqPath": "https://w3id.org/sparql-syntax#SeqPath",
267
+ /** A SERVICE graph pattern. SPARQL 1.2 grammar production [62]. */
268
+ "Service": "https://w3id.org/sparql-syntax#Service",
269
+ /** A sub-select appearing as a group graph pattern element. SPARQL 1.2 grammar production [10]. */
270
+ "SubSelect": "https://w3id.org/sparql-syntax#SubSelect",
271
+ /** An arithmetic - expression. */
272
+ "Subtraction": "https://w3id.org/sparql-syntax#Subtraction",
273
+ "Sum": "https://w3id.org/sparql-syntax#Sum",
274
+ "TIMEZONE": "https://w3id.org/sparql-syntax#TIMEZONE",
275
+ "TRIPLE": "https://w3id.org/sparql-syntax#TRIPLE",
276
+ "TZ": "https://w3id.org/sparql-syntax#TZ",
277
+ /** A single subject-predicate-object pattern or template triple. */
278
+ "TriplePattern": "https://w3id.org/sparql-syntax#TriplePattern",
279
+ /** An RDF 1.2 triple term <<( s p o )>>. Represented structurally because its components may be variables. SPARQL 1.2 grammar production [113]. */
280
+ "TripleTerm": "https://w3id.org/sparql-syntax#TripleTerm",
281
+ "UCASE": "https://w3id.org/sparql-syntax#UCASE",
282
+ "URI": "https://w3id.org/sparql-syntax#URI",
283
+ "UUID": "https://w3id.org/sparql-syntax#UUID",
284
+ /** A unary - expression. */
285
+ "UnaryMinus": "https://w3id.org/sparql-syntax#UnaryMinus",
286
+ /** A unary ! expression. */
287
+ "UnaryNot": "https://w3id.org/sparql-syntax#UnaryNot",
288
+ /** A unary + expression. */
289
+ "UnaryPlus": "https://w3id.org/sparql-syntax#UnaryPlus",
290
+ /** A UNION of two or more group graph patterns. SPARQL 1.2 grammar production [70]. */
291
+ "Union": "https://w3id.org/sparql-syntax#Union",
292
+ /** The root node of a SPARQL update request; holds the ordered sequence of update operations. SPARQL 1.2 Update grammar production [31]. */
293
+ "Update": "https://w3id.org/sparql-syntax#Update",
294
+ /** An inline data block (VALUES), either inside a group graph pattern or trailing a query. SPARQL 1.2 grammar productions [64]-[67]. */
295
+ "Values": "https://w3id.org/sparql-syntax#Values",
296
+ /** A SPARQL variable (?name or $name). One node is shared per distinct variable name within a query. */
297
+ "Variable": "https://w3id.org/sparql-syntax#Variable",
298
+ "YEAR": "https://w3id.org/sparql-syntax#YEAR",
299
+ /** A property path with the * modifier. SPARQL 1.2 grammar production [96]. */
300
+ "ZeroOrMorePath": "https://w3id.org/sparql-syntax#ZeroOrMorePath",
301
+ /** A property path with the ? modifier. SPARQL 1.2 grammar production [96]. */
302
+ "ZeroOrOnePath": "https://w3id.org/sparql-syntax#ZeroOrOnePath",
303
+ /** The operand of a unary operator expression. */
304
+ "arg": "https://w3id.org/sparql-syntax#arg",
305
+ /** The left operand of a binary operator expression. */
306
+ "arg1": "https://w3id.org/sparql-syntax#arg1",
307
+ /** The right operand of a binary operator expression. */
308
+ "arg2": "https://w3id.org/sparql-syntax#arg2",
309
+ /** The ordered arguments of a function call, built-in call, or IN/NOT IN expression: an rdf:List. */
310
+ "args": "https://w3id.org/sparql-syntax#args",
311
+ /** The binding rows of a VALUES block: an rdf:List of rows, each row an rdf:List of terms or sparql:undef. */
312
+ "bindings": "https://w3id.org/sparql-syntax#bindings",
313
+ /** True for COUNT(*). */
314
+ "countStar": "https://w3id.org/sparql-syntax#countStar",
315
+ /** The quad data of an INSERT DATA or DELETE DATA operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes. */
316
+ "data": "https://w3id.org/sparql-syntax#data",
317
+ /** The DELETE template of a DELETE/INSERT operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes. */
318
+ "deleteTemplate": "https://w3id.org/sparql-syntax#deleteTemplate",
319
+ /** The targets of a DESCRIBE query: an rdf:List of sparql:Variable nodes or IRIs. */
320
+ "describeTargets": "https://w3id.org/sparql-syntax#describeTargets",
321
+ /** True if the SELECT clause, aggregate or argument list carries the DISTINCT modifier. */
322
+ "distinct": "https://w3id.org/sparql-syntax#distinct",
323
+ /** The ordered elements of a group, OPTIONAL, MINUS, GRAPH, SERVICE, EXISTS, NOT EXISTS or UNION: an rdf:List. */
324
+ "elements": "https://w3id.org/sparql-syntax#elements",
325
+ /** The endpoint (variable or IRI) of a SERVICE pattern. */
326
+ "endpoint": "https://w3id.org/sparql-syntax#endpoint",
327
+ /** The expression of a FILTER, BIND, alias, order condition or aggregate. */
328
+ "expression": "https://w3id.org/sparql-syntax#expression",
329
+ /** A FROM dataset clause IRI (repeated for multiple clauses). */
330
+ "from": "https://w3id.org/sparql-syntax#from",
331
+ /** The source graph of an ADD, MOVE or COPY operation: a graph IRI or sparql:DefaultGraph. */
332
+ "fromGraph": "https://w3id.org/sparql-syntax#fromGraph",
333
+ /** A FROM NAMED dataset clause IRI (repeated for multiple clauses). */
334
+ "fromNamed": "https://w3id.org/sparql-syntax#fromNamed",
335
+ /** The function of a call: an IRI for custom functions, a sparql:BuiltInFunction individual for built-ins. */
336
+ "function": "https://w3id.org/sparql-syntax#function",
337
+ /** The graph name (variable or IRI) of a GRAPH pattern or graph block, or the IRI of a CREATE or GRAPH reference. */
338
+ "graph": "https://w3id.org/sparql-syntax#graph",
339
+ /** The target of a CLEAR or DROP operation: a graph IRI, sparql:DefaultGraph, sparql:NamedGraphs or sparql:AllGraphs. */
340
+ "graphTarget": "https://w3id.org/sparql-syntax#graphTarget",
341
+ /** The GROUP BY conditions: an rdf:List of variables, expressions or sparql:Alias nodes. */
342
+ "groupBy": "https://w3id.org/sparql-syntax#groupBy",
343
+ "hasLANG": "https://w3id.org/sparql-syntax#hasLANG",
344
+ "hasLANGDIR": "https://w3id.org/sparql-syntax#hasLANGDIR",
345
+ /** The HAVING conditions: an rdf:List of expressions. */
346
+ "having": "https://w3id.org/sparql-syntax#having",
347
+ /** The INSERT template of a DELETE/INSERT operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes. */
348
+ "insertTemplate": "https://w3id.org/sparql-syntax#insertTemplate",
349
+ /** The target graph IRI of a LOAD ... INTO GRAPH operation. */
350
+ "into": "https://w3id.org/sparql-syntax#into",
351
+ "isBLANK": "https://w3id.org/sparql-syntax#isBLANK",
352
+ "isIRI": "https://w3id.org/sparql-syntax#isIRI",
353
+ "isLITERAL": "https://w3id.org/sparql-syntax#isLITERAL",
354
+ "isNUMERIC": "https://w3id.org/sparql-syntax#isNUMERIC",
355
+ "isTRIPLE": "https://w3id.org/sparql-syntax#isTRIPLE",
356
+ "isURI": "https://w3id.org/sparql-syntax#isURI",
357
+ /** The label of a syntactic blank node, without the _: prefix. Absent for anonymous blank nodes. */
358
+ "label": "https://w3id.org/sparql-syntax#label",
359
+ /** The LIMIT of a query. */
360
+ "limit": "https://w3id.org/sparql-syntax#limit",
361
+ /** The object of a triple pattern or triple term. */
362
+ "object": "https://w3id.org/sparql-syntax#object",
363
+ /** The OFFSET of a query. */
364
+ "offset": "https://w3id.org/sparql-syntax#offset",
365
+ /** The ordered update operations of an update request: an rdf:List. */
366
+ "operations": "https://w3id.org/sparql-syntax#operations",
367
+ /** The ORDER BY conditions: an rdf:List of variables, expressions, or sparql:Asc/sparql:Desc nodes. */
368
+ "orderBy": "https://w3id.org/sparql-syntax#orderBy",
369
+ /** The sub-path of an inverse or modified property path. */
370
+ "path": "https://w3id.org/sparql-syntax#path",
371
+ /** The ordered sub-paths of a sequence, alternative or negated property path: an rdf:List. */
372
+ "pathElements": "https://w3id.org/sparql-syntax#pathElements",
373
+ /** The predicate of a triple pattern or triple term: an IRI, sparql:Variable, or property path node. */
374
+ "predicate": "https://w3id.org/sparql-syntax#predicate",
375
+ /** The projection of a SELECT query: an rdf:List of sparql:Variable or sparql:Alias nodes. */
376
+ "projection": "https://w3id.org/sparql-syntax#projection",
377
+ /** True if the SELECT clause carries the REDUCED modifier. */
378
+ "reduced": "https://w3id.org/sparql-syntax#reduced",
379
+ "sameTerm": "https://w3id.org/sparql-syntax#sameTerm",
380
+ /** The SEPARATOR of a GROUP_CONCAT aggregate. */
381
+ "separator": "https://w3id.org/sparql-syntax#separator",
382
+ /** True if the operation or SERVICE pattern carries the SILENT modifier. */
383
+ "silent": "https://w3id.org/sparql-syntax#silent",
384
+ /** The source document IRI of a LOAD operation. */
385
+ "source": "https://w3id.org/sparql-syntax#source",
386
+ /** True if the query uses SELECT * or DESCRIBE *. */
387
+ "star": "https://w3id.org/sparql-syntax#star",
388
+ /** The subject of a triple pattern or triple term. */
389
+ "subject": "https://w3id.org/sparql-syntax#subject",
390
+ /** The template of a CONSTRUCT query: an rdf:List of sparql:TriplePattern nodes. */
391
+ "template": "https://w3id.org/sparql-syntax#template",
392
+ /** The target graph of an ADD, MOVE or COPY operation: a graph IRI or sparql:DefaultGraph. */
393
+ "toGraph": "https://w3id.org/sparql-syntax#toGraph",
394
+ /** The UNDEF marker in a VALUES binding row. */
395
+ "undef": "https://w3id.org/sparql-syntax#undef",
396
+ /** A USING clause IRI of a DELETE/INSERT operation (repeated for multiple clauses). */
397
+ "using": "https://w3id.org/sparql-syntax#using",
398
+ /** A USING NAMED clause IRI of a DELETE/INSERT operation (repeated for multiple clauses). */
399
+ "usingNamed": "https://w3id.org/sparql-syntax#usingNamed",
400
+ /** The trailing VALUES clause of a query or sub-select. */
401
+ "values": "https://w3id.org/sparql-syntax#values",
402
+ /** The name of a variable, without the ? or $ sigil. */
403
+ "varName": "https://w3id.org/sparql-syntax#varName",
404
+ /** The target variable of a BIND or alias. */
405
+ "variable": "https://w3id.org/sparql-syntax#variable",
406
+ /** The variables of a VALUES block: an rdf:List of sparql:Variable nodes. */
407
+ "variables": "https://w3id.org/sparql-syntax#variables",
408
+ /** The version string of a VERSION declaration. SPARQL 1.2 grammar production [7]. */
409
+ "version": "https://w3id.org/sparql-syntax#version",
410
+ /** The WHERE clause of a query, sub-select, DELETE/INSERT or DELETE WHERE operation: an rdf:List of graph pattern elements. */
411
+ "where": "https://w3id.org/sparql-syntax#where",
412
+ /** The WITH graph IRI of a DELETE/INSERT operation. */
413
+ "withGraph": "https://w3id.org/sparql-syntax#withGraph"
414
+ };
415
+ var _sparql = { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#" };
416
+ var sparql = {
417
+ /** A vocabulary for representing the syntax of SPARQL 1.2 queries and updates as RDF. */
418
+ "sparql_syntax": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax" },
419
+ "ABS": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#ABS", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#ABS" },
420
+ /** An ADD operation. SPARQL 1.2 Update grammar production [37]. */
421
+ "Add": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Add", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Add" },
422
+ /** An arithmetic + expression. */
423
+ "Addition": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Addition", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Addition" },
424
+ /** Abstract superclass of the SPARQL aggregates. SPARQL 1.2 grammar production [137]. */
425
+ "Aggregate": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Aggregate", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Aggregate" },
426
+ /** An (expression AS ?variable) alias in a SELECT clause or GROUP BY condition. */
427
+ "Alias": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Alias", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Alias" },
428
+ /** All graphs as target of CLEAR or DROP (ALL keyword). */
429
+ "AllGraphs": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#AllGraphs", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#AllGraphs" },
430
+ /** A property path alternative (elt1 | elt2). SPARQL 1.2 grammar production [92]. */
431
+ "AltPath": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#AltPath", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#AltPath" },
432
+ /** A logical && expression. */
433
+ "And": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#And", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#And" },
434
+ /** An explicit ASC(...) order condition. */
435
+ "Asc": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Asc", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Asc" },
436
+ /** An ASK query. SPARQL 1.2 grammar production [14]. */
437
+ "AskQuery": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#AskQuery", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#AskQuery" },
438
+ "Avg": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Avg", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Avg" },
439
+ "BNODE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#BNODE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#BNODE" },
440
+ "BOUND": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#BOUND", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#BOUND" },
441
+ /** A BIND assignment. SPARQL 1.2 grammar production [63]. */
442
+ "Bind": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Bind", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Bind" },
443
+ /** A blank node written in query syntax (_:label, [], [...] or a collection cell), as opposed to the structural blank nodes of the representation itself. */
444
+ "BlankNode": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#BlankNode", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#BlankNode" },
445
+ /** A call of a SPARQL built-in function; sparql:function points to the built-in function individual. SPARQL 1.2 grammar production [131]. */
446
+ "BuiltInCall": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#BuiltInCall", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#BuiltInCall" },
447
+ /** The class of SPARQL built-in function individuals. */
448
+ "BuiltInFunction": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#BuiltInFunction", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#BuiltInFunction" },
449
+ "CEIL": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#CEIL", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#CEIL" },
450
+ "COALESCE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#COALESCE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#COALESCE" },
451
+ "CONCAT": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#CONCAT", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#CONCAT" },
452
+ "CONTAINS": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#CONTAINS", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#CONTAINS" },
453
+ /** A CLEAR operation. SPARQL 1.2 Update grammar production [34]. */
454
+ "Clear": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Clear", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Clear" },
455
+ /** A CONSTRUCT query. SPARQL 1.2 grammar production [12]. */
456
+ "ConstructQuery": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#ConstructQuery", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#ConstructQuery" },
457
+ /** A COPY operation. SPARQL 1.2 Update grammar production [39]. */
458
+ "Copy": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Copy", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Copy" },
459
+ "Count": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Count", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Count" },
460
+ /** A CREATE operation. SPARQL 1.2 Update grammar production [36]. */
461
+ "Create": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Create", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Create" },
462
+ "DATATYPE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#DATATYPE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#DATATYPE" },
463
+ "DAY": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#DAY", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#DAY" },
464
+ /** The default graph as target of an update operation (DEFAULT keyword). */
465
+ "DefaultGraph": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#DefaultGraph", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#DefaultGraph" },
466
+ /** A DELETE DATA operation. SPARQL 1.2 Update grammar production [41]. */
467
+ "DeleteData": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#DeleteData", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#DeleteData" },
468
+ /** A DELETE WHERE operation. SPARQL 1.2 Update grammar production [42]. */
469
+ "DeleteWhere": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#DeleteWhere", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#DeleteWhere" },
470
+ /** A DESC(...) order condition. */
471
+ "Desc": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Desc", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Desc" },
472
+ /** A DESCRIBE query. SPARQL 1.2 grammar production [13]. */
473
+ "DescribeQuery": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#DescribeQuery", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#DescribeQuery" },
474
+ /** An arithmetic / expression. */
475
+ "Division": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Division", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Division" },
476
+ /** A DROP operation. SPARQL 1.2 Update grammar production [35]. */
477
+ "Drop": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Drop", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Drop" },
478
+ "ENCODE_FOR_URI": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#ENCODE_FOR_URI", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#ENCODE_FOR_URI" },
479
+ /** An = comparison. */
480
+ "Eq": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Eq", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Eq" },
481
+ /** An EXISTS expression with an embedded graph pattern. SPARQL 1.2 grammar production [135]. */
482
+ "Exists": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Exists", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Exists" },
483
+ /** Abstract superclass of all compound SPARQL expressions. Atomic expressions (variables, IRIs, literals) appear directly as terms. */
484
+ "Expression": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Expression", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Expression" },
485
+ "FLOOR": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#FLOOR", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#FLOOR" },
486
+ /** A FILTER constraint. SPARQL 1.2 grammar production [71]. */
487
+ "Filter": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Filter", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Filter" },
488
+ /** A call of a custom function identified by IRI. SPARQL 1.2 grammar production [73]. */
489
+ "FunctionCall": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#FunctionCall", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#FunctionCall" },
490
+ /** A >= comparison. */
491
+ "Geq": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Geq", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Geq" },
492
+ /** A GRAPH graph pattern, also used for GRAPH blocks inside update quad templates. SPARQL 1.2 grammar production [61]. */
493
+ "Graph": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Graph", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Graph" },
494
+ /** An explicit nested group graph pattern { ... }, including the branches of a UNION. SPARQL 1.2 grammar production [55]. */
495
+ "Group": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Group", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Group" },
496
+ "GroupConcat": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#GroupConcat", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#GroupConcat" },
497
+ /** A > comparison. */
498
+ "Gt": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Gt", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Gt" },
499
+ "HOURS": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#HOURS", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#HOURS" },
500
+ "IF": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#IF", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#IF" },
501
+ "IRI": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#IRI", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#IRI" },
502
+ /** An IN expression; sparql:arg1 holds the tested expression, sparql:args the list of candidates. */
503
+ "In": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#In", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#In" },
504
+ /** An INSERT DATA operation. SPARQL 1.2 Update grammar production [40]. */
505
+ "InsertData": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#InsertData", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#InsertData" },
506
+ /** An inverse property path (^elt). SPARQL 1.2 grammar production [95]. */
507
+ "InversePath": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#InversePath", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#InversePath" },
508
+ "LANG": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#LANG", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#LANG" },
509
+ "LANGDIR": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#LANGDIR", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#LANGDIR" },
510
+ "LANGMATCHES": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#LANGMATCHES", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#LANGMATCHES" },
511
+ "LCASE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#LCASE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#LCASE" },
512
+ /** A <= comparison. */
513
+ "Leq": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Leq", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Leq" },
514
+ /** A LOAD operation. SPARQL 1.2 Update grammar production [33]. */
515
+ "Load": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Load", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Load" },
516
+ /** A < comparison. */
517
+ "Lt": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Lt", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Lt" },
518
+ "MD5": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#MD5", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#MD5" },
519
+ "MINUTES": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#MINUTES", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#MINUTES" },
520
+ "MONTH": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#MONTH", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#MONTH" },
521
+ "Max": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Max", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Max" },
522
+ "Min": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Min", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Min" },
523
+ /** A MINUS graph pattern. SPARQL 1.2 grammar production [69]. */
524
+ "Minus": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Minus", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Minus" },
525
+ /** A DELETE/INSERT operation with a WHERE clause. SPARQL 1.2 Update grammar production [43]. */
526
+ "Modify": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Modify", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Modify" },
527
+ /** A MOVE operation. SPARQL 1.2 Update grammar production [38]. */
528
+ "Move": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Move", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Move" },
529
+ /** An arithmetic * expression. */
530
+ "Multiplication": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Multiplication", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Multiplication" },
531
+ "NOW": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#NOW", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#NOW" },
532
+ /** All named graphs as target of CLEAR or DROP (NAMED keyword). */
533
+ "NamedGraphs": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#NamedGraphs", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#NamedGraphs" },
534
+ /** A negated property set (!iri or !(iri1 | ^iri2 | ...)). SPARQL 1.2 grammar production [98]. */
535
+ "NegatedPath": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#NegatedPath", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#NegatedPath" },
536
+ /** A != comparison. */
537
+ "Neq": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Neq", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Neq" },
538
+ /** A NOT EXISTS expression with an embedded graph pattern. SPARQL 1.2 grammar production [136]. */
539
+ "NotExists": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#NotExists", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#NotExists" },
540
+ /** A NOT IN expression; sparql:arg1 holds the tested expression, sparql:args the list of candidates. */
541
+ "NotIn": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#NotIn", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#NotIn" },
542
+ "OBJECT": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#OBJECT", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#OBJECT" },
543
+ /** A property path with the + modifier. SPARQL 1.2 grammar production [96]. */
544
+ "OneOrMorePath": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#OneOrMorePath", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#OneOrMorePath" },
545
+ /** An OPTIONAL graph pattern. SPARQL 1.2 grammar production [60]. */
546
+ "Optional": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Optional", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Optional" },
547
+ /** A logical || expression. */
548
+ "Or": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Or", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Or" },
549
+ "PREDICATE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#PREDICATE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#PREDICATE" },
550
+ /** Abstract superclass of the four SPARQL query forms. */
551
+ "Query": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Query", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Query" },
552
+ "RAND": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#RAND", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#RAND" },
553
+ "REGEX": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#REGEX", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#REGEX" },
554
+ "REPLACE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#REPLACE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#REPLACE" },
555
+ "ROUND": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#ROUND", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#ROUND" },
556
+ "SECONDS": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SECONDS", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SECONDS" },
557
+ "SHA1": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SHA1", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SHA1" },
558
+ "SHA256": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SHA256", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SHA256" },
559
+ "SHA384": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SHA384", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SHA384" },
560
+ "SHA512": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SHA512", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SHA512" },
561
+ "STR": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STR", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STR" },
562
+ "STRAFTER": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRAFTER", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRAFTER" },
563
+ "STRBEFORE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRBEFORE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRBEFORE" },
564
+ "STRDT": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRDT", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRDT" },
565
+ "STRENDS": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRENDS", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRENDS" },
566
+ "STRLANG": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRLANG", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRLANG" },
567
+ "STRLANGDIR": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRLANGDIR", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRLANGDIR" },
568
+ "STRLEN": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRLEN", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRLEN" },
569
+ "STRSTARTS": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRSTARTS", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRSTARTS" },
570
+ "STRUUID": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#STRUUID", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#STRUUID" },
571
+ "SUBJECT": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SUBJECT", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SUBJECT" },
572
+ "SUBSTR": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SUBSTR", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SUBSTR" },
573
+ "Sample": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Sample", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Sample" },
574
+ /** A SELECT query. SPARQL 1.2 grammar production [9]. */
575
+ "SelectQuery": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SelectQuery", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SelectQuery" },
576
+ /** A property path sequence (elt1 / elt2). SPARQL 1.2 grammar production [93]. */
577
+ "SeqPath": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SeqPath", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SeqPath" },
578
+ /** A SERVICE graph pattern. SPARQL 1.2 grammar production [62]. */
579
+ "Service": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Service", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Service" },
580
+ /** A sub-select appearing as a group graph pattern element. SPARQL 1.2 grammar production [10]. */
581
+ "SubSelect": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#SubSelect", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#SubSelect" },
582
+ /** An arithmetic - expression. */
583
+ "Subtraction": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Subtraction", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Subtraction" },
584
+ "Sum": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Sum", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Sum" },
585
+ "TIMEZONE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#TIMEZONE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#TIMEZONE" },
586
+ "TRIPLE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#TRIPLE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#TRIPLE" },
587
+ "TZ": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#TZ", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#TZ" },
588
+ /** A single subject-predicate-object pattern or template triple. */
589
+ "TriplePattern": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#TriplePattern", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#TriplePattern" },
590
+ /** An RDF 1.2 triple term <<( s p o )>>. Represented structurally because its components may be variables. SPARQL 1.2 grammar production [113]. */
591
+ "TripleTerm": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#TripleTerm", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#TripleTerm" },
592
+ "UCASE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#UCASE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#UCASE" },
593
+ "URI": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#URI", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#URI" },
594
+ "UUID": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#UUID", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#UUID" },
595
+ /** A unary - expression. */
596
+ "UnaryMinus": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#UnaryMinus", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#UnaryMinus" },
597
+ /** A unary ! expression. */
598
+ "UnaryNot": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#UnaryNot", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#UnaryNot" },
599
+ /** A unary + expression. */
600
+ "UnaryPlus": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#UnaryPlus", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#UnaryPlus" },
601
+ /** A UNION of two or more group graph patterns. SPARQL 1.2 grammar production [70]. */
602
+ "Union": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Union", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Union" },
603
+ /** The root node of a SPARQL update request; holds the ordered sequence of update operations. SPARQL 1.2 Update grammar production [31]. */
604
+ "Update": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Update", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Update" },
605
+ /** An inline data block (VALUES), either inside a group graph pattern or trailing a query. SPARQL 1.2 grammar productions [64]-[67]. */
606
+ "Values": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Values", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Values" },
607
+ /** A SPARQL variable (?name or $name). One node is shared per distinct variable name within a query. */
608
+ "Variable": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#Variable", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#Variable" },
609
+ "YEAR": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#YEAR", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#YEAR" },
610
+ /** A property path with the * modifier. SPARQL 1.2 grammar production [96]. */
611
+ "ZeroOrMorePath": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#ZeroOrMorePath", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#ZeroOrMorePath" },
612
+ /** A property path with the ? modifier. SPARQL 1.2 grammar production [96]. */
613
+ "ZeroOrOnePath": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#ZeroOrOnePath", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#ZeroOrOnePath" },
614
+ /** The operand of a unary operator expression. */
615
+ "arg": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#arg", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#arg" },
616
+ /** The left operand of a binary operator expression. */
617
+ "arg1": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#arg1", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#arg1" },
618
+ /** The right operand of a binary operator expression. */
619
+ "arg2": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#arg2", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#arg2" },
620
+ /** The ordered arguments of a function call, built-in call, or IN/NOT IN expression: an rdf:List. */
621
+ "args": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#args", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#args" },
622
+ /** The binding rows of a VALUES block: an rdf:List of rows, each row an rdf:List of terms or sparql:undef. */
623
+ "bindings": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#bindings", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#bindings" },
624
+ /** True for COUNT(*). */
625
+ "countStar": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#countStar", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#countStar" },
626
+ /** The quad data of an INSERT DATA or DELETE DATA operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes. */
627
+ "data": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#data", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#data" },
628
+ /** The DELETE template of a DELETE/INSERT operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes. */
629
+ "deleteTemplate": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#deleteTemplate", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#deleteTemplate" },
630
+ /** The targets of a DESCRIBE query: an rdf:List of sparql:Variable nodes or IRIs. */
631
+ "describeTargets": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#describeTargets", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#describeTargets" },
632
+ /** True if the SELECT clause, aggregate or argument list carries the DISTINCT modifier. */
633
+ "distinct": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#distinct", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#distinct" },
634
+ /** The ordered elements of a group, OPTIONAL, MINUS, GRAPH, SERVICE, EXISTS, NOT EXISTS or UNION: an rdf:List. */
635
+ "elements": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#elements", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#elements" },
636
+ /** The endpoint (variable or IRI) of a SERVICE pattern. */
637
+ "endpoint": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#endpoint", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#endpoint" },
638
+ /** The expression of a FILTER, BIND, alias, order condition or aggregate. */
639
+ "expression": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#expression", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#expression" },
640
+ /** A FROM dataset clause IRI (repeated for multiple clauses). */
641
+ "from": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#from", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#from" },
642
+ /** The source graph of an ADD, MOVE or COPY operation: a graph IRI or sparql:DefaultGraph. */
643
+ "fromGraph": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#fromGraph", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#fromGraph" },
644
+ /** A FROM NAMED dataset clause IRI (repeated for multiple clauses). */
645
+ "fromNamed": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#fromNamed", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#fromNamed" },
646
+ /** The function of a call: an IRI for custom functions, a sparql:BuiltInFunction individual for built-ins. */
647
+ "function": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#function", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#function" },
648
+ /** The graph name (variable or IRI) of a GRAPH pattern or graph block, or the IRI of a CREATE or GRAPH reference. */
649
+ "graph": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#graph", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#graph" },
650
+ /** The target of a CLEAR or DROP operation: a graph IRI, sparql:DefaultGraph, sparql:NamedGraphs or sparql:AllGraphs. */
651
+ "graphTarget": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#graphTarget", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#graphTarget" },
652
+ /** The GROUP BY conditions: an rdf:List of variables, expressions or sparql:Alias nodes. */
653
+ "groupBy": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#groupBy", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#groupBy" },
654
+ "hasLANG": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#hasLANG", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#hasLANG" },
655
+ "hasLANGDIR": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#hasLANGDIR", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#hasLANGDIR" },
656
+ /** The HAVING conditions: an rdf:List of expressions. */
657
+ "having": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#having", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#having" },
658
+ /** The INSERT template of a DELETE/INSERT operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes. */
659
+ "insertTemplate": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#insertTemplate", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#insertTemplate" },
660
+ /** The target graph IRI of a LOAD ... INTO GRAPH operation. */
661
+ "into": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#into", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#into" },
662
+ "isBLANK": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#isBLANK", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#isBLANK" },
663
+ "isIRI": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#isIRI", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#isIRI" },
664
+ "isLITERAL": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#isLITERAL", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#isLITERAL" },
665
+ "isNUMERIC": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#isNUMERIC", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#isNUMERIC" },
666
+ "isTRIPLE": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#isTRIPLE", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#isTRIPLE" },
667
+ "isURI": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#isURI", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#isURI" },
668
+ /** The label of a syntactic blank node, without the _: prefix. Absent for anonymous blank nodes. */
669
+ "label": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#label", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#label" },
670
+ /** The LIMIT of a query. */
671
+ "limit": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#limit", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#limit" },
672
+ /** The object of a triple pattern or triple term. */
673
+ "object": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#object", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#object" },
674
+ /** The OFFSET of a query. */
675
+ "offset": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#offset", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#offset" },
676
+ /** The ordered update operations of an update request: an rdf:List. */
677
+ "operations": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#operations", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#operations" },
678
+ /** The ORDER BY conditions: an rdf:List of variables, expressions, or sparql:Asc/sparql:Desc nodes. */
679
+ "orderBy": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#orderBy", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#orderBy" },
680
+ /** The sub-path of an inverse or modified property path. */
681
+ "path": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#path", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#path" },
682
+ /** The ordered sub-paths of a sequence, alternative or negated property path: an rdf:List. */
683
+ "pathElements": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#pathElements", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#pathElements" },
684
+ /** The predicate of a triple pattern or triple term: an IRI, sparql:Variable, or property path node. */
685
+ "predicate": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#predicate", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#predicate" },
686
+ /** The projection of a SELECT query: an rdf:List of sparql:Variable or sparql:Alias nodes. */
687
+ "projection": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#projection", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#projection" },
688
+ /** True if the SELECT clause carries the REDUCED modifier. */
689
+ "reduced": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#reduced", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#reduced" },
690
+ "sameTerm": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#sameTerm", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#sameTerm" },
691
+ /** The SEPARATOR of a GROUP_CONCAT aggregate. */
692
+ "separator": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#separator", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#separator" },
693
+ /** True if the operation or SERVICE pattern carries the SILENT modifier. */
694
+ "silent": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#silent", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#silent" },
695
+ /** The source document IRI of a LOAD operation. */
696
+ "source": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#source", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#source" },
697
+ /** True if the query uses SELECT * or DESCRIBE *. */
698
+ "star": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#star", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#star" },
699
+ /** The subject of a triple pattern or triple term. */
700
+ "subject": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#subject", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#subject" },
701
+ /** The template of a CONSTRUCT query: an rdf:List of sparql:TriplePattern nodes. */
702
+ "template": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#template", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#template" },
703
+ /** The target graph of an ADD, MOVE or COPY operation: a graph IRI or sparql:DefaultGraph. */
704
+ "toGraph": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#toGraph", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#toGraph" },
705
+ /** The UNDEF marker in a VALUES binding row. */
706
+ "undef": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#undef", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#undef" },
707
+ /** A USING clause IRI of a DELETE/INSERT operation (repeated for multiple clauses). */
708
+ "using": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#using", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#using" },
709
+ /** A USING NAMED clause IRI of a DELETE/INSERT operation (repeated for multiple clauses). */
710
+ "usingNamed": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#usingNamed", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#usingNamed" },
711
+ /** The trailing VALUES clause of a query or sub-select. */
712
+ "values": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#values", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#values" },
713
+ /** The name of a variable, without the ? or $ sigil. */
714
+ "varName": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#varName", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#varName" },
715
+ /** The target variable of a BIND or alias. */
716
+ "variable": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#variable", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#variable" },
717
+ /** The variables of a VALUES block: an rdf:List of sparql:Variable nodes. */
718
+ "variables": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#variables", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#variables" },
719
+ /** The version string of a VERSION declaration. SPARQL 1.2 grammar production [7]. */
720
+ "version": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#version", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#version" },
721
+ /** The WHERE clause of a query, sub-select, DELETE/INSERT or DELETE WHERE operation: an rdf:List of graph pattern elements. */
722
+ "where": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#where", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#where" },
723
+ /** The WITH graph IRI of a DELETE/INSERT operation. */
724
+ "withGraph": { termType: "NamedNode", value: "https://w3id.org/sparql-syntax#withGraph", equals: (other) => other && (other.termType === "NamedNode" || other.type === "NamedNode") && other.value === "https://w3id.org/sparql-syntax#withGraph" }
725
+ };
726
+
103
727
  // src/ontologies/skos.ts
104
728
  var _SKOS = "http://www.w3.org/2004/02/skos/core#";
105
729
  var SKOS = {
@@ -2324,24 +2948,288 @@ var ConceptRepository = class extends ResourceRepository {
2324
2948
  /**
2325
2949
  * Get all collections.
2326
2950
  * @param graphUris URI of the graphs to search for collections.
2951
+ * @param options Optional query parameters.
2327
2952
  * @returns An iterator of URIs of all collections.
2328
2953
  */
2329
- *getCollections(graphUris) {
2954
+ *getCollections(graphUris, options) {
2330
2955
  const yielded = /* @__PURE__ */ new Set();
2331
2956
  for (let q of this.store.matchAll(graphUris, null, rdf.type, skos.Collection)) {
2332
2957
  const s = q.subject;
2333
- if (!yielded.has(s.value)) {
2958
+ if (!yielded.has(s.value) && !this._skipCollection(graphUris, s, options)) {
2334
2959
  yielded.add(s.value);
2335
2960
  yield s.value;
2336
2961
  }
2337
2962
  }
2338
2963
  for (let q of this.store.matchAll(graphUris, null, rdf.type, skos.OrderedCollection)) {
2964
+ const s = q.subject;
2965
+ if (!yielded.has(s.value) && !this._skipCollection(graphUris, s, options)) {
2966
+ yielded.add(s.value);
2967
+ yield s.value;
2968
+ }
2969
+ }
2970
+ }
2971
+ /**
2972
+ * Indicate if a collection should be excluded from a query result.
2973
+ *
2974
+ * Note: In contrast to other resource types, blank nodes and referenced collections are
2975
+ * included by default so that the result is unchanged when no options are provided.
2976
+ * @param graphUris URI of the graphs to search for collections.
2977
+ * @param subject The collection to test.
2978
+ * @param options Optional query parameters.
2979
+ * @returns `true` if the collection should be excluded, `false` otherwise.
2980
+ */
2981
+ _skipCollection(graphUris, subject, options) {
2982
+ if (this.skip(graphUris, subject, options, { includeBlankNodes: true, includeReferenced: true })) {
2983
+ return true;
2984
+ }
2985
+ if (options?.inScheme === void 0) {
2986
+ return false;
2987
+ }
2988
+ if (options.inScheme === null) {
2989
+ return this.hasConceptScheme(graphUris, subject.value);
2990
+ }
2991
+ return !this.isInScheme(graphUris, subject.value, options.inScheme);
2992
+ }
2993
+ /**
2994
+ * Indicate if a resource is associated with any concept scheme via `skos:inScheme`.
2995
+ * @param graphUris URIs of the graphs to search for concepts.
2996
+ * @param subjectUri URI of a resource.
2997
+ * @returns `true` if the resource is in a concept scheme, `false` otherwise.
2998
+ */
2999
+ hasConceptScheme(graphUris, subjectUri) {
3000
+ const s = dataFactory.namedNode(subjectUri);
3001
+ for (let _ of this.store.matchAll(graphUris, s, skos.inScheme, null)) {
3002
+ return true;
3003
+ }
3004
+ return false;
3005
+ }
3006
+ /**
3007
+ * Indicate if a resource is associated with a given concept scheme via `skos:inScheme`.
3008
+ * @param graphUris URIs of the graphs to search for concepts.
3009
+ * @param subjectUri URI of a resource.
3010
+ * @param schemeUri URI of a concept scheme.
3011
+ * @returns `true` if the resource is in the given concept scheme, `false` otherwise.
3012
+ */
3013
+ isInScheme(graphUris, subjectUri, schemeUri) {
3014
+ const s = dataFactory.namedNode(subjectUri);
3015
+ const o = dataFactory.namedNode(schemeUri);
3016
+ for (let _ of this.store.matchAll(graphUris, s, skos.inScheme, o)) {
3017
+ return true;
3018
+ }
3019
+ return false;
3020
+ }
3021
+ /**
3022
+ * Indicate if a concept is explicitly associated with a given concept scheme, either via
3023
+ * `skos:inScheme` or via `skos:topConceptOf`.
3024
+ *
3025
+ * Note: The `skos:broader` and `skos:narrower` relations are *not* taken into account, because
3026
+ * they may cross the boundaries of a concept scheme. Use {@link getAllConceptsInScheme} to get
3027
+ * the concepts that are displayed below a concept scheme.
3028
+ * @param graphUris URIs of the graphs to search for concepts.
3029
+ * @param subjectUri URI of a concept.
3030
+ * @param schemeUri URI of a concept scheme.
3031
+ * @returns `true` if the concept is associated with the concept scheme, `false` otherwise.
3032
+ */
3033
+ isConceptOfScheme(graphUris, subjectUri, schemeUri) {
3034
+ if (this.isInScheme(graphUris, subjectUri, schemeUri)) {
3035
+ return true;
3036
+ }
3037
+ const s = dataFactory.namedNode(subjectUri);
3038
+ const o = dataFactory.namedNode(schemeUri);
3039
+ for (let _ of this.store.matchAll(graphUris, s, skos.topConceptOf, o)) {
3040
+ return true;
3041
+ }
3042
+ return false;
3043
+ }
3044
+ /**
3045
+ * Indicate if a concept can be displayed below a given concept scheme.
3046
+ *
3047
+ * Concepts that are not associated with any concept scheme belong to every concept scheme they
3048
+ * can be reached from, so that they are not hidden in vocabularies that only annotate their top
3049
+ * concepts with `skos:inScheme`.
3050
+ * @param graphUris URIs of the graphs to search for concepts.
3051
+ * @param subjectUri URI of a concept.
3052
+ * @param schemeUri URI of a concept scheme.
3053
+ * @returns `true` if the concept can be displayed below the concept scheme, `false` otherwise.
3054
+ */
3055
+ _isVisibleInScheme(graphUris, subjectUri, schemeUri) {
3056
+ if (this.isConceptOfScheme(graphUris, subjectUri, schemeUri)) {
3057
+ return true;
3058
+ }
3059
+ return !this.hasConceptScheme(graphUris, subjectUri);
3060
+ }
3061
+ /**
3062
+ * Get the concepts that are explicitly associated with a concept scheme, either via
3063
+ * `skos:inScheme` or via `skos:topConceptOf`.
3064
+ * @param graphUris URIs of the graphs to search for concepts.
3065
+ * @param schemeUri URI of a concept scheme.
3066
+ * @returns An iterator of URIs of the concepts of the concept scheme.
3067
+ */
3068
+ *getConceptsOfScheme(graphUris, schemeUri) {
3069
+ const yielded = /* @__PURE__ */ new Set();
3070
+ const o = dataFactory.namedNode(schemeUri);
3071
+ for (let q of this.store.matchAll(graphUris, null, skos.inScheme, o)) {
2339
3072
  const s = q.subject;
2340
3073
  if (!yielded.has(s.value)) {
2341
3074
  yielded.add(s.value);
2342
3075
  yield s.value;
2343
3076
  }
2344
3077
  }
3078
+ for (let q of this.store.matchAll(graphUris, null, skos.topConceptOf, o)) {
3079
+ const s = q.subject;
3080
+ if (!yielded.has(s.value)) {
3081
+ yielded.add(s.value);
3082
+ yield s.value;
3083
+ }
3084
+ }
3085
+ }
3086
+ /**
3087
+ * Get the top concepts of a concept scheme.
3088
+ *
3089
+ * In addition to the concepts that are explicitly designated as top concepts via
3090
+ * `skos:hasTopConcept` or `skos:topConceptOf`, this returns the concepts of the scheme that have
3091
+ * no broader concept *within the same scheme*. Without the latter, concepts whose `skos:broader`
3092
+ * property refers to a concept of another scheme would not be displayed below the scheme that
3093
+ * they are associated with.
3094
+ *
3095
+ * Note: A concept that is its own broader concept is not excluded, so that recursive definitions
3096
+ * do not remove it from the list of top concepts.
3097
+ * @param graphUris URIs of the graphs to search for concepts.
3098
+ * @param schemeUri URI of a concept scheme.
3099
+ * @returns An iterator of URIs of the top concepts of the concept scheme.
3100
+ */
3101
+ *getTopConcepts(graphUris, schemeUri) {
3102
+ const yielded = /* @__PURE__ */ new Set();
3103
+ const s = dataFactory.namedNode(schemeUri);
3104
+ for (let q of this.store.matchAll(graphUris, s, skos.hasTopConcept, null)) {
3105
+ const o = q.object;
3106
+ if (!yielded.has(o.value)) {
3107
+ yielded.add(o.value);
3108
+ yield o.value;
3109
+ }
3110
+ }
3111
+ for (let q of this.store.matchAll(graphUris, null, skos.topConceptOf, s)) {
3112
+ const o = q.subject;
3113
+ if (!yielded.has(o.value)) {
3114
+ yielded.add(o.value);
3115
+ yield o.value;
3116
+ }
3117
+ }
3118
+ for (let q of this.store.matchAll(graphUris, s, skos.narrower, null)) {
3119
+ const o = q.object;
3120
+ if (!yielded.has(o.value)) {
3121
+ yielded.add(o.value);
3122
+ yield o.value;
3123
+ }
3124
+ }
3125
+ for (let q of this.store.matchAll(graphUris, null, skos.broader, s)) {
3126
+ const o = q.subject;
3127
+ if (!yielded.has(o.value)) {
3128
+ yielded.add(o.value);
3129
+ yield o.value;
3130
+ }
3131
+ }
3132
+ const concepts = new Set(this.getConceptsOfScheme(graphUris, schemeUri));
3133
+ const nested = this._nestedConceptsOfScheme(graphUris, concepts);
3134
+ for (let c of concepts) {
3135
+ if (!yielded.has(c) && !nested.has(c)) {
3136
+ yielded.add(c);
3137
+ yield c;
3138
+ }
3139
+ }
3140
+ }
3141
+ /**
3142
+ * Get the concepts of a concept scheme that have a broader concept within the same scheme.
3143
+ *
3144
+ * The hierarchical relations are enumerated once and matched against the set of concepts of the
3145
+ * scheme, which is considerably cheaper than querying the broader concepts of every single
3146
+ * concept of the scheme.
3147
+ * @param graphUris URIs of the graphs to search for concepts.
3148
+ * @param concepts Set of the concepts that are associated with the concept scheme.
3149
+ * @returns A set of URIs of the concepts that are nested below another concept of the scheme.
3150
+ */
3151
+ _nestedConceptsOfScheme(graphUris, concepts) {
3152
+ const result = /* @__PURE__ */ new Set();
3153
+ for (let q of this.store.matchAll(graphUris, null, skos.broader, null)) {
3154
+ if (q.subject.value !== q.object.value && concepts.has(q.subject.value) && concepts.has(q.object.value)) {
3155
+ result.add(q.subject.value);
3156
+ }
3157
+ }
3158
+ for (let q of this.store.matchAll(graphUris, null, skos.narrower, null)) {
3159
+ if (q.subject.value !== q.object.value && concepts.has(q.subject.value) && concepts.has(q.object.value)) {
3160
+ result.add(q.object.value);
3161
+ }
3162
+ }
3163
+ return result;
3164
+ }
3165
+ /**
3166
+ * Get all concepts that are displayed below a concept scheme, including indirectly narrower ones.
3167
+ *
3168
+ * The traversal starts at the {@link getTopConcepts} of the scheme and follows the narrower
3169
+ * concepts that can be displayed below the scheme, so the result is exactly the set of concepts
3170
+ * that a hierarchical view of the scheme can reach.
3171
+ *
3172
+ * Note: The hierarchical relations of the graphs are indexed once per call instead of querying
3173
+ * the narrower concepts of every single concept, which is an order of magnitude faster on large
3174
+ * thesauri. Prefer {@link getConceptsOfScheme} when the *associated* concepts are sufficient.
3175
+ * @param graphUris URIs of the graphs to search for concepts.
3176
+ * @param schemeUri URI of a concept scheme.
3177
+ * @returns An iterator of URIs of all concepts below the concept scheme.
3178
+ */
3179
+ *getAllConceptsInScheme(graphUris, schemeUri) {
3180
+ const concepts = new Set(this.getConceptsOfScheme(graphUris, schemeUri));
3181
+ const narrowerConcepts = this._getNarrowerConceptIndex(graphUris);
3182
+ const visited = /* @__PURE__ */ new Set();
3183
+ const stack = [...this.getTopConcepts(graphUris, schemeUri)];
3184
+ for (let c of stack) {
3185
+ visited.add(c);
3186
+ }
3187
+ while (stack.length) {
3188
+ const current = stack.pop();
3189
+ yield current;
3190
+ for (let n of narrowerConcepts.get(current) ?? []) {
3191
+ if (visited.has(n)) {
3192
+ continue;
3193
+ }
3194
+ if (!concepts.has(n) && this.hasConceptScheme(graphUris, n)) {
3195
+ continue;
3196
+ }
3197
+ visited.add(n);
3198
+ stack.push(n);
3199
+ }
3200
+ }
3201
+ }
3202
+ /**
3203
+ * Index the narrower concept relations of the given graphs.
3204
+ *
3205
+ * All four hierarchical relations are enumerated once, which is considerably cheaper than
3206
+ * querying {@link getNarrowerConcepts} for every concept of a large thesaurus.
3207
+ * @param graphUris URIs of the graphs to search for concepts.
3208
+ * @returns A map of concept URIs to the URIs of their narrower concepts.
3209
+ */
3210
+ _getNarrowerConceptIndex(graphUris) {
3211
+ const result = /* @__PURE__ */ new Map();
3212
+ const add = (broaderUri, narrowerUri) => {
3213
+ const narrowerConcepts = result.get(broaderUri);
3214
+ if (narrowerConcepts) {
3215
+ narrowerConcepts.push(narrowerUri);
3216
+ } else {
3217
+ result.set(broaderUri, [narrowerUri]);
3218
+ }
3219
+ };
3220
+ for (let q of this.store.matchAll(graphUris, null, skos.narrower, null)) {
3221
+ add(q.subject.value, q.object.value);
3222
+ }
3223
+ for (let q of this.store.matchAll(graphUris, null, skos.broader, null)) {
3224
+ add(q.object.value, q.subject.value);
3225
+ }
3226
+ for (let q of this.store.matchAll(graphUris, null, skos.hasTopConcept, null)) {
3227
+ add(q.subject.value, q.object.value);
3228
+ }
3229
+ for (let q of this.store.matchAll(graphUris, null, skos.topConceptOf, null)) {
3230
+ add(q.object.value, q.subject.value);
3231
+ }
3232
+ return result;
2345
3233
  }
2346
3234
  /**
2347
3235
  * Get the members of a collection. This includes both `skos:member` and `skos:memberList` properties.
@@ -2389,6 +3277,234 @@ var ConceptRepository = class extends ResourceRepository {
2389
3277
  }
2390
3278
  return false;
2391
3279
  }
3280
+ /**
3281
+ * Indicates whether a subject is a collection.
3282
+ * @param graphUris URI of the graphs to search for collections.
3283
+ * @param subjectUri URI of a subject.
3284
+ * @returns `true` if the subject is a `skos:Collection` or a `skos:OrderedCollection`, `false` otherwise.
3285
+ */
3286
+ isCollection(graphUris, subjectUri) {
3287
+ if (subjectUri) {
3288
+ const s = dataFactory.namedNode(subjectUri);
3289
+ for (let _ of this.store.matchAll(graphUris, s, rdf.type, skos.Collection)) {
3290
+ return true;
3291
+ }
3292
+ for (let _ of this.store.matchAll(graphUris, s, rdf.type, skos.OrderedCollection)) {
3293
+ return true;
3294
+ }
3295
+ }
3296
+ return false;
3297
+ }
3298
+ /**
3299
+ * Get the collections that have a given subject as a member. This includes both `skos:member`
3300
+ * and `skos:memberList` properties.
3301
+ *
3302
+ * Note: A collection that is a member of itself is returned as its own super collection, which
3303
+ * is consistent with {@link getBroaderConcepts}. Use {@link hasSuperCollections} to test whether
3304
+ * a collection is a member of *another* collection.
3305
+ * @param graphUris URI of the graphs to search for collections.
3306
+ * @param subjectUri URI of a collection or concept.
3307
+ * @returns An iterator of URIs of the collections that contain the subject.
3308
+ */
3309
+ *getSuperCollections(graphUris, subjectUri) {
3310
+ const yielded = /* @__PURE__ */ new Set();
3311
+ const o = dataFactory.namedNode(subjectUri);
3312
+ for (let q of this.store.matchAll(graphUris, null, skos.member, o)) {
3313
+ const s = q.subject;
3314
+ if (!yielded.has(s.value) && this.isCollection(graphUris, s.value)) {
3315
+ yielded.add(s.value);
3316
+ yield s.value;
3317
+ }
3318
+ }
3319
+ for (let s of this._getMemberListContainers(graphUris, subjectUri)) {
3320
+ if (!yielded.has(s) && this.isCollection(graphUris, s)) {
3321
+ yielded.add(s);
3322
+ yield s;
3323
+ }
3324
+ }
3325
+ }
3326
+ /**
3327
+ * Get the collections that reference a given subject in an ordered member list.
3328
+ *
3329
+ * Starting from the list nodes that have the subject as their first item, the `rdf:rest` chain
3330
+ * is traversed *backwards* towards the head of the list, and every visited list node is tested
3331
+ * for being the object of a `skos:memberList` property. This is considerably cheaper than
3332
+ * expanding all member lists in the graph, and it also resolves collections that share a list.
3333
+ * @param graphUris URI of the graphs to search for collections.
3334
+ * @param subjectUri URI of a collection or concept.
3335
+ * @returns An iterator of URIs of the collections that reference the subject in a member list.
3336
+ */
3337
+ *_getMemberListContainers(graphUris, subjectUri) {
3338
+ const o = dataFactory.namedNode(subjectUri);
3339
+ const visited = /* @__PURE__ */ new Set();
3340
+ const listNodes = [];
3341
+ for (let q of this.store.matchAll(graphUris, null, rdf.first, o)) {
3342
+ if (!visited.has(q.subject.value)) {
3343
+ visited.add(q.subject.value);
3344
+ listNodes.push(q.subject);
3345
+ }
3346
+ }
3347
+ while (listNodes.length) {
3348
+ const listNode = listNodes.pop();
3349
+ for (let q of this.store.matchAll(graphUris, null, skos.memberList, listNode)) {
3350
+ yield q.subject.value;
3351
+ }
3352
+ for (let q of this.store.matchAll(graphUris, null, rdf.rest, listNode)) {
3353
+ if (!visited.has(q.subject.value)) {
3354
+ visited.add(q.subject.value);
3355
+ listNodes.push(q.subject);
3356
+ }
3357
+ }
3358
+ }
3359
+ }
3360
+ /**
3361
+ * Indicates whether a collection is a member of another collection.
3362
+ *
3363
+ * Note: A collection that is a member of itself is *not* considered to have a super collection,
3364
+ * so that recursive definitions do not remove it from the list of root collections.
3365
+ * @param graphUris URI of the graphs to search for collections.
3366
+ * @param subjectUri URI of a collection.
3367
+ * @returns `true` if the collection is a member of another collection, `false` otherwise.
3368
+ */
3369
+ hasSuperCollections(graphUris, subjectUri) {
3370
+ for (const c of this.getSuperCollections(graphUris, subjectUri)) {
3371
+ if (c !== subjectUri) {
3372
+ return true;
3373
+ }
3374
+ }
3375
+ return false;
3376
+ }
3377
+ /**
3378
+ * Get the members of a collection that are collections themselves, or all root collections.
3379
+ *
3380
+ * The order of the members of a `skos:OrderedCollection` is preserved.
3381
+ * @param graphUris URI of the graphs to search for collections.
3382
+ * @param subjectUri URI of a collection or `undefined` to get all root collections.
3383
+ * @param options Optional query parameters.
3384
+ * @returns An iterator of URIs of the nested collections of the given collection, or of the root collections if no subject is provided.
3385
+ */
3386
+ *getSubCollections(graphUris, subjectUri, options) {
3387
+ if (subjectUri) {
3388
+ const yielded = /* @__PURE__ */ new Set();
3389
+ for (let m of this.getCollectionMembers(graphUris, subjectUri)) {
3390
+ if (yielded.has(m) || !this.isCollection(graphUris, m)) {
3391
+ continue;
3392
+ }
3393
+ if (this._skipCollection(graphUris, dataFactory.namedNode(m), options)) {
3394
+ continue;
3395
+ }
3396
+ yielded.add(m);
3397
+ yield m;
3398
+ }
3399
+ } else {
3400
+ yield* this.getRootCollections(graphUris, options);
3401
+ }
3402
+ }
3403
+ /**
3404
+ * Indicates whether a collection has members that are collections themselves.
3405
+ * @param graphUris URI of the graphs to search for collections.
3406
+ * @param subjectUri URI of a collection.
3407
+ * @param options Optional query parameters.
3408
+ * @returns `true` if the collection has nested collections, `false` otherwise.
3409
+ */
3410
+ hasSubCollections(graphUris, subjectUri, options) {
3411
+ for (const _ of this.getSubCollections(graphUris, subjectUri, options)) {
3412
+ return true;
3413
+ }
3414
+ return false;
3415
+ }
3416
+ /**
3417
+ * Get all collections that are not a member of another collection.
3418
+ *
3419
+ * Every collection returned by {@link getCollections} is either returned by this method, or is
3420
+ * reachable from one of the returned collections via {@link getSubCollections}. If a group of
3421
+ * collections is only reachable through a membership cycle, the first collection of that group
3422
+ * is returned as a root collection so that no collection is lost.
3423
+ *
3424
+ * Note: Collections that are identified by a blank node cannot be queried for their members and
3425
+ * are therefore always returned as root collections.
3426
+ * @param graphUris URI of the graphs to search for collections.
3427
+ * @param options Optional query parameters.
3428
+ * @returns An iterator of URIs of the root collections.
3429
+ */
3430
+ *getRootCollections(graphUris, options) {
3431
+ const roots = /* @__PURE__ */ new Set();
3432
+ const collections = new Set(this.getCollections(graphUris, options));
3433
+ for (let c of collections) {
3434
+ if (!this.hasSuperCollections(graphUris, c)) {
3435
+ roots.add(c);
3436
+ yield c;
3437
+ }
3438
+ }
3439
+ if (roots.size === collections.size) {
3440
+ return;
3441
+ }
3442
+ const reachable = new Set(roots);
3443
+ for (let c of roots) {
3444
+ this._markReachableCollections(graphUris, c, collections, reachable);
3445
+ }
3446
+ for (let c of collections) {
3447
+ if (!reachable.has(c)) {
3448
+ reachable.add(c);
3449
+ this._markReachableCollections(graphUris, c, collections, reachable);
3450
+ yield c;
3451
+ }
3452
+ }
3453
+ }
3454
+ /**
3455
+ * Mark all collections that can be reached from a given collection through nested collections.
3456
+ *
3457
+ * The traversal uses the same criteria as {@link getSubCollections} so that the marked
3458
+ * collections are exactly the collections that are visible below the given collection. Since
3459
+ * the set of reachable collections is shared between all calls, the members of a collection are
3460
+ * enumerated at most once per {@link getRootCollections} call.
3461
+ * @param graphUris URI of the graphs to search for collections.
3462
+ * @param subjectUri URI of the collection to start the traversal from.
3463
+ * @param collections Set of all collections that are in the scope of the query.
3464
+ * @param reachable Set of collections that have already been reached.
3465
+ */
3466
+ _markReachableCollections(graphUris, subjectUri, collections, reachable) {
3467
+ const stack = [subjectUri];
3468
+ while (stack.length) {
3469
+ const current = stack.pop();
3470
+ for (let m of this.getCollectionMembers(graphUris, current)) {
3471
+ if (collections.has(m) && !reachable.has(m) && this.isCollection(graphUris, m)) {
3472
+ reachable.add(m);
3473
+ stack.push(m);
3474
+ }
3475
+ }
3476
+ }
3477
+ }
3478
+ /**
3479
+ * Get the first discovered path from a given collection to a root collection.
3480
+ *
3481
+ * The path does not contain the given collection and is ordered from the closest super
3482
+ * collection to the root collection. If the collection is part of a membership cycle, the path
3483
+ * ends at the last collection that has not been visited yet and does not reach a root collection.
3484
+ * @param graphUris URI of the graphs to search for collections.
3485
+ * @param subjectUri URI of a collection.
3486
+ * @returns The first path that is found from the given collection to a root collection.
3487
+ */
3488
+ getRootCollectionPath(graphUris, subjectUri) {
3489
+ return this._getRootCollectionPath(graphUris, subjectUri, [], /* @__PURE__ */ new Set([subjectUri]));
3490
+ }
3491
+ /**
3492
+ * Recursively find the first path from a given collection to a root collection.
3493
+ * @param graphUris URI of the graphs to search for collections.
3494
+ * @param subjectUri URI of a collection.
3495
+ * @param path The current collection path.
3496
+ * @param backtrack Set of URIs that have already been visited.
3497
+ * @returns The first path that is found from the given collection to a root collection.
3498
+ */
3499
+ _getRootCollectionPath(graphUris, subjectUri, path, backtrack) {
3500
+ for (let o of this.getSuperCollections(graphUris, subjectUri)) {
3501
+ if (!backtrack.has(o)) {
3502
+ backtrack.add(o);
3503
+ return this._getRootCollectionPath(graphUris, o, [...path, o], backtrack);
3504
+ }
3505
+ }
3506
+ return path;
3507
+ }
2392
3508
  /**
2393
3509
  * Get all broader concepts of a concept scheme.
2394
3510
  * @param graphUris URIs of the graphs to search for concepts.
@@ -2438,44 +3554,58 @@ var ConceptRepository = class extends ResourceRepository {
2438
3554
  return false;
2439
3555
  }
2440
3556
  /**
2441
- * Get all narrower concepts of a concept or top concepts of a concept scheme.
3557
+ * Get all narrower concepts of a concept or the top concepts of a concept scheme.
3558
+ *
3559
+ * If the subject is a concept scheme, the {@link getTopConcepts} of that scheme are returned. If
3560
+ * the `inScheme` option is set, only concepts that can be displayed below that concept scheme are
3561
+ * returned, which excludes concepts that are associated with a *different* scheme.
2442
3562
  * @param graphUris URIs of the graphs to search for concepts.
2443
- * @param subjectUri URI of a concept or concept scheme.
3563
+ * @param subjectUri URI of a concept or concept scheme, or `undefined` to get all concept schemes.
3564
+ * @param options Optional query parameters.
2444
3565
  */
2445
- *getNarrowerConcepts(graphUris, subjectUri) {
2446
- if (subjectUri) {
2447
- const yielded = /* @__PURE__ */ new Set();
2448
- const s = dataFactory.namedNode(subjectUri);
2449
- for (let q of this.store.matchAll(graphUris, s, skos.hasTopConcept, null)) {
2450
- const o = q.object;
2451
- if (!yielded.has(o.value)) {
2452
- yielded.add(o.value);
2453
- yield o.value;
2454
- }
3566
+ *getNarrowerConcepts(graphUris, subjectUri, options) {
3567
+ if (!subjectUri) {
3568
+ yield* this.getConceptSchemes(graphUris);
3569
+ return;
3570
+ }
3571
+ if (this.isConceptScheme(graphUris, subjectUri)) {
3572
+ yield* this.getTopConcepts(graphUris, subjectUri);
3573
+ return;
3574
+ }
3575
+ const yielded = /* @__PURE__ */ new Set();
3576
+ const s = dataFactory.namedNode(subjectUri);
3577
+ const scheme = options?.inScheme;
3578
+ for (let q of this.store.matchAll(graphUris, s, skos.hasTopConcept, null)) {
3579
+ const o = q.object;
3580
+ if (!yielded.has(o.value)) {
3581
+ yielded.add(o.value);
3582
+ yield o.value;
2455
3583
  }
2456
- for (let q of this.store.matchAll(graphUris, s, skos.narrower, null)) {
2457
- const o = q.object;
2458
- if (!yielded.has(o.value)) {
2459
- yielded.add(o.value);
3584
+ }
3585
+ for (let q of this.store.matchAll(graphUris, s, skos.narrower, null)) {
3586
+ const o = q.object;
3587
+ if (!yielded.has(o.value)) {
3588
+ yielded.add(o.value);
3589
+ if (!scheme || this._isVisibleInScheme(graphUris, o.value, scheme)) {
2460
3590
  yield o.value;
2461
3591
  }
2462
3592
  }
2463
- for (let q of this.store.matchAll(graphUris, null, skos.topConceptOf, s)) {
2464
- const s2 = q.subject;
2465
- if (!yielded.has(s2.value)) {
2466
- yielded.add(s2.value);
2467
- yield s2.value;
2468
- }
3593
+ }
3594
+ for (let q of this.store.matchAll(graphUris, null, skos.topConceptOf, s)) {
3595
+ const o = q.subject;
3596
+ if (!yielded.has(o.value)) {
3597
+ yielded.add(o.value);
3598
+ yield o.value;
2469
3599
  }
2470
- for (let q of this.store.matchAll(graphUris, null, skos.broader, s)) {
2471
- const s2 = q.subject;
2472
- if (!yielded.has(s2.value)) {
2473
- yielded.add(s2.value);
2474
- yield s2.value;
3600
+ }
3601
+ for (let q of this.store.matchAll(graphUris, null, skos.broader, s)) {
3602
+ const o = q.subject;
3603
+ if (!yielded.has(o.value)) {
3604
+ yielded.add(o.value);
3605
+ if (!scheme || this._isVisibleInScheme(graphUris, o.value, scheme)) {
3606
+ yield o.value;
2475
3607
  }
2476
3608
  }
2477
- } else {
2478
- yield* this.getConceptSchemes(graphUris);
2479
3609
  }
2480
3610
  }
2481
3611
  /**
@@ -2520,7 +3650,7 @@ var ConceptRepository = class extends ResourceRepository {
2520
3650
  * @param subjectUri URI of a concept.
2521
3651
  */
2522
3652
  getConceptSchemePath(graphUris, subjectUri) {
2523
- return this._getConceptSchemePath(graphUris, subjectUri, [], /* @__PURE__ */ new Set());
3653
+ return this._getConceptSchemePath(graphUris, subjectUri, [], /* @__PURE__ */ new Set([subjectUri]));
2524
3654
  }
2525
3655
  /**
2526
3656
  * Recursively find the first path from a given class to a root class.
@@ -2530,9 +3660,11 @@ var ConceptRepository = class extends ResourceRepository {
2530
3660
  * @returns The first path that is found from the given class to a root class.
2531
3661
  */
2532
3662
  _getConceptSchemePath(graphUris, subjectUri, path, backtrack) {
2533
- const broaderConcepts = [...this.getBroaderConcepts(graphUris, subjectUri)];
2534
- for (let o of broaderConcepts.filter((o2) => !backtrack.has(o2))) {
2535
- return this._getConceptSchemePath(graphUris, o, [...path, o], backtrack);
3663
+ for (let o of this.getBroaderConcepts(graphUris, subjectUri)) {
3664
+ if (!backtrack.has(o)) {
3665
+ backtrack.add(o);
3666
+ return this._getConceptSchemePath(graphUris, o, [...path, o], backtrack);
3667
+ }
2536
3668
  }
2537
3669
  return path;
2538
3670
  }
@@ -7209,6 +8341,728 @@ skos:closeMatch
7209
8341
  skos:definition "skos:closeMatch is used to link two concepts that are sufficiently similar that they can be used interchangeably in some information retrieval applications. In order to avoid the possibility of 'compound errors' when combining mappings across more than two concept schemes, skos:closeMatch is not declared to be a transitive property."@en ;
7210
8342
  a owl:ObjectProperty, owl:SymmetricProperty, rdf:Property ;
7211
8343
  rdfs:subPropertyOf skos:mappingRelation .`;
8344
+ var sparql2 = `@prefix sparql: <https://w3id.org/sparql-syntax#> .
8345
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
8346
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8347
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
8348
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
8349
+ @prefix dct: <http://purl.org/dc/terms/> .
8350
+
8351
+ #
8352
+ # SPARQL Syntax Vocabulary
8353
+ #
8354
+ # A vocabulary for representing the syntax of SPARQL 1.2 queries and updates
8355
+ # as RDF, modeled on the grammar of the SPARQL 1.2 Query Language
8356
+ # (https://www.w3.org/TR/sparql12-query/#sparqlGrammar) and SPARQL 1.2 Update.
8357
+ #
8358
+ # Modeling decisions:
8359
+ # - IRIs and literals occurring in a query appear as themselves (native RDF
8360
+ # terms); prefixed names and relative IRIs are resolved against the prologue.
8361
+ # Prefix and base declarations are not reified.
8362
+ # - Variables are blank nodes typed sparql:Variable with sparql:varName; one node is
8363
+ # shared per distinct variable name per query.
8364
+ # - Blank nodes written in query syntax are nodes typed sparql:BlankNode (with
8365
+ # sparql:label when labeled), distinct from the structural blank nodes that
8366
+ # make up the representation itself.
8367
+ # - Ordered constructs (pattern elements, projections, templates, arguments,
8368
+ # path elements, VALUES rows, update operation sequences) use rdf:List.
8369
+ # Unordered repeatable clauses (FROM, USING) use repeated properties.
8370
+ # - Syntactic sugar is desugared the way the SPARQL 1.2 spec does: collections
8371
+ # and blank node property lists expand to triple patterns; reified triples
8372
+ # and annotation blocks expand to rdf:reifies triple patterns. Triple terms
8373
+ # are represented structurally as sparql:TripleTerm nodes because their
8374
+ # components may be variables.
8375
+ #
8376
+
8377
+ <https://w3id.org/sparql-syntax> a owl:Ontology ;
8378
+ dct:title "SPARQL Syntax Vocabulary"@en ;
8379
+ rdfs:comment "A vocabulary for representing the syntax of SPARQL 1.2 queries and updates as RDF."@en ;
8380
+ rdfs:seeAlso <https://www.w3.org/TR/sparql12-query/> , <https://www.w3.org/TR/sparql12-update/> ;
8381
+ owl:versionInfo "1.0.0" .
8382
+
8383
+ # ==========================================
8384
+ # Query forms
8385
+ # ==========================================
8386
+
8387
+ sparql:Query a rdfs:Class ;
8388
+ rdfs:label "Query"@en ;
8389
+ rdfs:comment "Abstract superclass of the four SPARQL query forms."@en .
8390
+
8391
+ sparql:SelectQuery a rdfs:Class ;
8392
+ rdfs:subClassOf sparql:Query ;
8393
+ rdfs:label "SELECT query"@en ;
8394
+ rdfs:comment "A SELECT query. SPARQL 1.2 grammar production [9]."@en .
8395
+
8396
+ sparql:ConstructQuery a rdfs:Class ;
8397
+ rdfs:subClassOf sparql:Query ;
8398
+ rdfs:label "CONSTRUCT query"@en ;
8399
+ rdfs:comment "A CONSTRUCT query. SPARQL 1.2 grammar production [12]."@en .
8400
+
8401
+ sparql:DescribeQuery a rdfs:Class ;
8402
+ rdfs:subClassOf sparql:Query ;
8403
+ rdfs:label "DESCRIBE query"@en ;
8404
+ rdfs:comment "A DESCRIBE query. SPARQL 1.2 grammar production [13]."@en .
8405
+
8406
+ sparql:AskQuery a rdfs:Class ;
8407
+ rdfs:subClassOf sparql:Query ;
8408
+ rdfs:label "ASK query"@en ;
8409
+ rdfs:comment "An ASK query. SPARQL 1.2 grammar production [14]."@en .
8410
+
8411
+ sparql:SubSelect a rdfs:Class ;
8412
+ rdfs:label "Sub-select"@en ;
8413
+ rdfs:comment "A sub-select appearing as a group graph pattern element. SPARQL 1.2 grammar production [10]."@en .
8414
+
8415
+ # ==========================================
8416
+ # Update operations
8417
+ # ==========================================
8418
+
8419
+ sparql:Update a rdfs:Class ;
8420
+ rdfs:label "Update request"@en ;
8421
+ rdfs:comment "The root node of a SPARQL update request; holds the ordered sequence of update operations. SPARQL 1.2 Update grammar production [31]."@en .
8422
+
8423
+ sparql:Load a rdfs:Class ;
8424
+ rdfs:label "LOAD"@en ;
8425
+ rdfs:comment "A LOAD operation. SPARQL 1.2 Update grammar production [33]."@en .
8426
+
8427
+ sparql:Clear a rdfs:Class ;
8428
+ rdfs:label "CLEAR"@en ;
8429
+ rdfs:comment "A CLEAR operation. SPARQL 1.2 Update grammar production [34]."@en .
8430
+
8431
+ sparql:Drop a rdfs:Class ;
8432
+ rdfs:label "DROP"@en ;
8433
+ rdfs:comment "A DROP operation. SPARQL 1.2 Update grammar production [35]."@en .
8434
+
8435
+ sparql:Create a rdfs:Class ;
8436
+ rdfs:label "CREATE"@en ;
8437
+ rdfs:comment "A CREATE operation. SPARQL 1.2 Update grammar production [36]."@en .
8438
+
8439
+ sparql:Add a rdfs:Class ;
8440
+ rdfs:label "ADD"@en ;
8441
+ rdfs:comment "An ADD operation. SPARQL 1.2 Update grammar production [37]."@en .
8442
+
8443
+ sparql:Move a rdfs:Class ;
8444
+ rdfs:label "MOVE"@en ;
8445
+ rdfs:comment "A MOVE operation. SPARQL 1.2 Update grammar production [38]."@en .
8446
+
8447
+ sparql:Copy a rdfs:Class ;
8448
+ rdfs:label "COPY"@en ;
8449
+ rdfs:comment "A COPY operation. SPARQL 1.2 Update grammar production [39]."@en .
8450
+
8451
+ sparql:InsertData a rdfs:Class ;
8452
+ rdfs:label "INSERT DATA"@en ;
8453
+ rdfs:comment "An INSERT DATA operation. SPARQL 1.2 Update grammar production [40]."@en .
8454
+
8455
+ sparql:DeleteData a rdfs:Class ;
8456
+ rdfs:label "DELETE DATA"@en ;
8457
+ rdfs:comment "A DELETE DATA operation. SPARQL 1.2 Update grammar production [41]."@en .
8458
+
8459
+ sparql:DeleteWhere a rdfs:Class ;
8460
+ rdfs:label "DELETE WHERE"@en ;
8461
+ rdfs:comment "A DELETE WHERE operation. SPARQL 1.2 Update grammar production [42]."@en .
8462
+
8463
+ sparql:Modify a rdfs:Class ;
8464
+ rdfs:label "DELETE/INSERT"@en ;
8465
+ rdfs:comment "A DELETE/INSERT operation with a WHERE clause. SPARQL 1.2 Update grammar production [43]."@en .
8466
+
8467
+ # ==========================================
8468
+ # Terms
8469
+ # ==========================================
8470
+
8471
+ sparql:Variable a rdfs:Class ;
8472
+ rdfs:label "Variable"@en ;
8473
+ rdfs:comment "A SPARQL variable (?name or $name). One node is shared per distinct variable name within a query."@en .
8474
+
8475
+ sparql:BlankNode a rdfs:Class ;
8476
+ rdfs:label "Blank node"@en ;
8477
+ rdfs:comment "A blank node written in query syntax (_:label, [], [...] or a collection cell), as opposed to the structural blank nodes of the representation itself."@en .
8478
+
8479
+ sparql:TripleTerm a rdfs:Class ;
8480
+ rdfs:label "Triple term"@en ;
8481
+ rdfs:comment "An RDF 1.2 triple term <<( s p o )>>. Represented structurally because its components may be variables. SPARQL 1.2 grammar production [113]."@en .
8482
+
8483
+ # ==========================================
8484
+ # Graph pattern elements
8485
+ # ==========================================
8486
+
8487
+ sparql:TriplePattern a rdfs:Class ;
8488
+ rdfs:label "Triple pattern"@en ;
8489
+ rdfs:comment "A single subject-predicate-object pattern or template triple."@en .
8490
+
8491
+ sparql:Group a rdfs:Class ;
8492
+ rdfs:label "Group"@en ;
8493
+ rdfs:comment "An explicit nested group graph pattern { ... }, including the branches of a UNION. SPARQL 1.2 grammar production [55]."@en .
8494
+
8495
+ sparql:Optional a rdfs:Class ;
8496
+ rdfs:label "OPTIONAL"@en ;
8497
+ rdfs:comment "An OPTIONAL graph pattern. SPARQL 1.2 grammar production [60]."@en .
8498
+
8499
+ sparql:Union a rdfs:Class ;
8500
+ rdfs:label "UNION"@en ;
8501
+ rdfs:comment "A UNION of two or more group graph patterns. SPARQL 1.2 grammar production [70]."@en .
8502
+
8503
+ sparql:Minus a rdfs:Class ;
8504
+ rdfs:label "MINUS"@en ;
8505
+ rdfs:comment "A MINUS graph pattern. SPARQL 1.2 grammar production [69]."@en .
8506
+
8507
+ sparql:Graph a rdfs:Class ;
8508
+ rdfs:label "GRAPH"@en ;
8509
+ rdfs:comment "A GRAPH graph pattern, also used for GRAPH blocks inside update quad templates. SPARQL 1.2 grammar production [61]."@en .
8510
+
8511
+ sparql:Service a rdfs:Class ;
8512
+ rdfs:label "SERVICE"@en ;
8513
+ rdfs:comment "A SERVICE graph pattern. SPARQL 1.2 grammar production [62]."@en .
8514
+
8515
+ sparql:Filter a rdfs:Class ;
8516
+ rdfs:label "FILTER"@en ;
8517
+ rdfs:comment "A FILTER constraint. SPARQL 1.2 grammar production [71]."@en .
8518
+
8519
+ sparql:Bind a rdfs:Class ;
8520
+ rdfs:label "BIND"@en ;
8521
+ rdfs:comment "A BIND assignment. SPARQL 1.2 grammar production [63]."@en .
8522
+
8523
+ sparql:Values a rdfs:Class ;
8524
+ rdfs:label "VALUES"@en ;
8525
+ rdfs:comment "An inline data block (VALUES), either inside a group graph pattern or trailing a query. SPARQL 1.2 grammar productions [64]-[67]."@en .
8526
+
8527
+ sparql:Exists a rdfs:Class ;
8528
+ rdfs:subClassOf sparql:Expression ;
8529
+ rdfs:label "EXISTS"@en ;
8530
+ rdfs:comment "An EXISTS expression with an embedded graph pattern. SPARQL 1.2 grammar production [135]."@en .
8531
+
8532
+ sparql:NotExists a rdfs:Class ;
8533
+ rdfs:subClassOf sparql:Expression ;
8534
+ rdfs:label "NOT EXISTS"@en ;
8535
+ rdfs:comment "A NOT EXISTS expression with an embedded graph pattern. SPARQL 1.2 grammar production [136]."@en .
8536
+
8537
+ # ==========================================
8538
+ # Property paths
8539
+ # ==========================================
8540
+
8541
+ sparql:SeqPath a rdfs:Class ;
8542
+ rdfs:label "Sequence path"@en ;
8543
+ rdfs:comment "A property path sequence (elt1 / elt2). SPARQL 1.2 grammar production [93]."@en .
8544
+
8545
+ sparql:AltPath a rdfs:Class ;
8546
+ rdfs:label "Alternative path"@en ;
8547
+ rdfs:comment "A property path alternative (elt1 | elt2). SPARQL 1.2 grammar production [92]."@en .
8548
+
8549
+ sparql:InversePath a rdfs:Class ;
8550
+ rdfs:label "Inverse path"@en ;
8551
+ rdfs:comment "An inverse property path (^elt). SPARQL 1.2 grammar production [95]."@en .
8552
+
8553
+ sparql:ZeroOrMorePath a rdfs:Class ;
8554
+ rdfs:label "Zero-or-more path"@en ;
8555
+ rdfs:comment "A property path with the * modifier. SPARQL 1.2 grammar production [96]."@en .
8556
+
8557
+ sparql:OneOrMorePath a rdfs:Class ;
8558
+ rdfs:label "One-or-more path"@en ;
8559
+ rdfs:comment "A property path with the + modifier. SPARQL 1.2 grammar production [96]."@en .
8560
+
8561
+ sparql:ZeroOrOnePath a rdfs:Class ;
8562
+ rdfs:label "Zero-or-one path"@en ;
8563
+ rdfs:comment "A property path with the ? modifier. SPARQL 1.2 grammar production [96]."@en .
8564
+
8565
+ sparql:NegatedPath a rdfs:Class ;
8566
+ rdfs:label "Negated property set"@en ;
8567
+ rdfs:comment "A negated property set (!iri or !(iri1 | ^iri2 | ...)). SPARQL 1.2 grammar production [98]."@en .
8568
+
8569
+ # ==========================================
8570
+ # Expressions
8571
+ # ==========================================
8572
+
8573
+ sparql:Expression a rdfs:Class ;
8574
+ rdfs:label "Expression"@en ;
8575
+ rdfs:comment "Abstract superclass of all compound SPARQL expressions. Atomic expressions (variables, IRIs, literals) appear directly as terms."@en .
8576
+
8577
+ sparql:Or a rdfs:Class ;
8578
+ rdfs:subClassOf sparql:Expression ;
8579
+ rdfs:label "Logical or"@en ;
8580
+ rdfs:comment "A logical || expression."@en .
8581
+
8582
+ sparql:And a rdfs:Class ;
8583
+ rdfs:subClassOf sparql:Expression ;
8584
+ rdfs:label "Logical and"@en ;
8585
+ rdfs:comment "A logical && expression."@en .
8586
+
8587
+ sparql:Eq a rdfs:Class ;
8588
+ rdfs:subClassOf sparql:Expression ;
8589
+ rdfs:label "Equal"@en ;
8590
+ rdfs:comment "An = comparison."@en .
8591
+
8592
+ sparql:Neq a rdfs:Class ;
8593
+ rdfs:subClassOf sparql:Expression ;
8594
+ rdfs:label "Not equal"@en ;
8595
+ rdfs:comment "A != comparison."@en .
8596
+
8597
+ sparql:Lt a rdfs:Class ;
8598
+ rdfs:subClassOf sparql:Expression ;
8599
+ rdfs:label "Less than"@en ;
8600
+ rdfs:comment "A < comparison."@en .
8601
+
8602
+ sparql:Gt a rdfs:Class ;
8603
+ rdfs:subClassOf sparql:Expression ;
8604
+ rdfs:label "Greater than"@en ;
8605
+ rdfs:comment "A > comparison."@en .
8606
+
8607
+ sparql:Leq a rdfs:Class ;
8608
+ rdfs:subClassOf sparql:Expression ;
8609
+ rdfs:label "Less than or equal"@en ;
8610
+ rdfs:comment "A <= comparison."@en .
8611
+
8612
+ sparql:Geq a rdfs:Class ;
8613
+ rdfs:subClassOf sparql:Expression ;
8614
+ rdfs:label "Greater than or equal"@en ;
8615
+ rdfs:comment "A >= comparison."@en .
8616
+
8617
+ sparql:In a rdfs:Class ;
8618
+ rdfs:subClassOf sparql:Expression ;
8619
+ rdfs:label "IN"@en ;
8620
+ rdfs:comment "An IN expression; sparql:arg1 holds the tested expression, sparql:args the list of candidates."@en .
8621
+
8622
+ sparql:NotIn a rdfs:Class ;
8623
+ rdfs:subClassOf sparql:Expression ;
8624
+ rdfs:label "NOT IN"@en ;
8625
+ rdfs:comment "A NOT IN expression; sparql:arg1 holds the tested expression, sparql:args the list of candidates."@en .
8626
+
8627
+ sparql:Addition a rdfs:Class ;
8628
+ rdfs:subClassOf sparql:Expression ;
8629
+ rdfs:label "Addition"@en ;
8630
+ rdfs:comment "An arithmetic + expression."@en .
8631
+
8632
+ sparql:Subtraction a rdfs:Class ;
8633
+ rdfs:subClassOf sparql:Expression ;
8634
+ rdfs:label "Subtraction"@en ;
8635
+ rdfs:comment "An arithmetic - expression."@en .
8636
+
8637
+ sparql:Multiplication a rdfs:Class ;
8638
+ rdfs:subClassOf sparql:Expression ;
8639
+ rdfs:label "Multiplication"@en ;
8640
+ rdfs:comment "An arithmetic * expression."@en .
8641
+
8642
+ sparql:Division a rdfs:Class ;
8643
+ rdfs:subClassOf sparql:Expression ;
8644
+ rdfs:label "Division"@en ;
8645
+ rdfs:comment "An arithmetic / expression."@en .
8646
+
8647
+ sparql:UnaryNot a rdfs:Class ;
8648
+ rdfs:subClassOf sparql:Expression ;
8649
+ rdfs:label "Unary not"@en ;
8650
+ rdfs:comment "A unary ! expression."@en .
8651
+
8652
+ sparql:UnaryPlus a rdfs:Class ;
8653
+ rdfs:subClassOf sparql:Expression ;
8654
+ rdfs:label "Unary plus"@en ;
8655
+ rdfs:comment "A unary + expression."@en .
8656
+
8657
+ sparql:UnaryMinus a rdfs:Class ;
8658
+ rdfs:subClassOf sparql:Expression ;
8659
+ rdfs:label "Unary minus"@en ;
8660
+ rdfs:comment "A unary - expression."@en .
8661
+
8662
+ sparql:FunctionCall a rdfs:Class ;
8663
+ rdfs:subClassOf sparql:Expression ;
8664
+ rdfs:label "Function call"@en ;
8665
+ rdfs:comment "A call of a custom function identified by IRI. SPARQL 1.2 grammar production [73]."@en .
8666
+
8667
+ sparql:BuiltInCall a rdfs:Class ;
8668
+ rdfs:subClassOf sparql:Expression ;
8669
+ rdfs:label "Built-in call"@en ;
8670
+ rdfs:comment "A call of a SPARQL built-in function; sparql:function points to the built-in function individual. SPARQL 1.2 grammar production [131]."@en .
8671
+
8672
+ sparql:BuiltInFunction a rdfs:Class ;
8673
+ rdfs:label "Built-in function"@en ;
8674
+ rdfs:comment "The class of SPARQL built-in function individuals."@en .
8675
+
8676
+ # ==========================================
8677
+ # Aggregates
8678
+ # ==========================================
8679
+
8680
+ sparql:Aggregate a rdfs:Class ;
8681
+ rdfs:subClassOf sparql:Expression ;
8682
+ rdfs:label "Aggregate"@en ;
8683
+ rdfs:comment "Abstract superclass of the SPARQL aggregates. SPARQL 1.2 grammar production [137]."@en .
8684
+
8685
+ sparql:Count a rdfs:Class ;
8686
+ rdfs:subClassOf sparql:Aggregate ;
8687
+ rdfs:label "COUNT"@en .
8688
+
8689
+ sparql:Sum a rdfs:Class ;
8690
+ rdfs:subClassOf sparql:Aggregate ;
8691
+ rdfs:label "SUM"@en .
8692
+
8693
+ sparql:Min a rdfs:Class ;
8694
+ rdfs:subClassOf sparql:Aggregate ;
8695
+ rdfs:label "MIN"@en .
8696
+
8697
+ sparql:Max a rdfs:Class ;
8698
+ rdfs:subClassOf sparql:Aggregate ;
8699
+ rdfs:label "MAX"@en .
8700
+
8701
+ sparql:Avg a rdfs:Class ;
8702
+ rdfs:subClassOf sparql:Aggregate ;
8703
+ rdfs:label "AVG"@en .
8704
+
8705
+ sparql:Sample a rdfs:Class ;
8706
+ rdfs:subClassOf sparql:Aggregate ;
8707
+ rdfs:label "SAMPLE"@en .
8708
+
8709
+ sparql:GroupConcat a rdfs:Class ;
8710
+ rdfs:subClassOf sparql:Aggregate ;
8711
+ rdfs:label "GROUP_CONCAT"@en .
8712
+
8713
+ # ==========================================
8714
+ # Miscellaneous structure
8715
+ # ==========================================
8716
+
8717
+ sparql:Alias a rdfs:Class ;
8718
+ rdfs:label "Alias"@en ;
8719
+ rdfs:comment "An (expression AS ?variable) alias in a SELECT clause or GROUP BY condition."@en .
8720
+
8721
+ sparql:Asc a rdfs:Class ;
8722
+ rdfs:label "Ascending"@en ;
8723
+ rdfs:comment "An explicit ASC(...) order condition."@en .
8724
+
8725
+ sparql:Desc a rdfs:Class ;
8726
+ rdfs:label "Descending"@en ;
8727
+ rdfs:comment "A DESC(...) order condition."@en .
8728
+
8729
+ # ==========================================
8730
+ # Named individuals
8731
+ # ==========================================
8732
+
8733
+ sparql:undef a rdfs:Resource ;
8734
+ rdfs:label "UNDEF"@en ;
8735
+ rdfs:comment "The UNDEF marker in a VALUES binding row."@en .
8736
+
8737
+ sparql:DefaultGraph a rdfs:Resource ;
8738
+ rdfs:label "DEFAULT"@en ;
8739
+ rdfs:comment "The default graph as target of an update operation (DEFAULT keyword)."@en .
8740
+
8741
+ sparql:NamedGraphs a rdfs:Resource ;
8742
+ rdfs:label "NAMED"@en ;
8743
+ rdfs:comment "All named graphs as target of CLEAR or DROP (NAMED keyword)."@en .
8744
+
8745
+ sparql:AllGraphs a rdfs:Resource ;
8746
+ rdfs:label "ALL"@en ;
8747
+ rdfs:comment "All graphs as target of CLEAR or DROP (ALL keyword)."@en .
8748
+
8749
+ # ==========================================
8750
+ # Properties
8751
+ # ==========================================
8752
+
8753
+ sparql:version a rdf:Property ;
8754
+ rdfs:label "version"@en ;
8755
+ rdfs:comment "The version string of a VERSION declaration. SPARQL 1.2 grammar production [7]."@en ;
8756
+ rdfs:range xsd:string .
8757
+
8758
+ sparql:where a rdf:Property ;
8759
+ rdfs:label "where"@en ;
8760
+ rdfs:comment "The WHERE clause of a query, sub-select, DELETE/INSERT or DELETE WHERE operation: an rdf:List of graph pattern elements."@en ;
8761
+ rdfs:range rdf:List .
8762
+
8763
+ sparql:projection a rdf:Property ;
8764
+ rdfs:label "projection"@en ;
8765
+ rdfs:comment "The projection of a SELECT query: an rdf:List of sparql:Variable or sparql:Alias nodes."@en ;
8766
+ rdfs:range rdf:List .
8767
+
8768
+ sparql:star a rdf:Property ;
8769
+ rdfs:label "star"@en ;
8770
+ rdfs:comment "True if the query uses SELECT * or DESCRIBE *."@en ;
8771
+ rdfs:range xsd:boolean .
8772
+
8773
+ sparql:distinct a rdf:Property ;
8774
+ rdfs:label "distinct"@en ;
8775
+ rdfs:comment "True if the SELECT clause, aggregate or argument list carries the DISTINCT modifier."@en ;
8776
+ rdfs:range xsd:boolean .
8777
+
8778
+ sparql:reduced a rdf:Property ;
8779
+ rdfs:label "reduced"@en ;
8780
+ rdfs:comment "True if the SELECT clause carries the REDUCED modifier."@en ;
8781
+ rdfs:domain sparql:SelectQuery ;
8782
+ rdfs:range xsd:boolean .
8783
+
8784
+ sparql:template a rdf:Property ;
8785
+ rdfs:label "template"@en ;
8786
+ rdfs:comment "The template of a CONSTRUCT query: an rdf:List of sparql:TriplePattern nodes."@en ;
8787
+ rdfs:domain sparql:ConstructQuery ;
8788
+ rdfs:range rdf:List .
8789
+
8790
+ sparql:describeTargets a rdf:Property ;
8791
+ rdfs:label "describe targets"@en ;
8792
+ rdfs:comment "The targets of a DESCRIBE query: an rdf:List of sparql:Variable nodes or IRIs."@en ;
8793
+ rdfs:domain sparql:DescribeQuery ;
8794
+ rdfs:range rdf:List .
8795
+
8796
+ sparql:from a rdf:Property ;
8797
+ rdfs:label "from"@en ;
8798
+ rdfs:comment "A FROM dataset clause IRI (repeated for multiple clauses)."@en .
8799
+
8800
+ sparql:fromNamed a rdf:Property ;
8801
+ rdfs:label "from named"@en ;
8802
+ rdfs:comment "A FROM NAMED dataset clause IRI (repeated for multiple clauses)."@en .
8803
+
8804
+ sparql:subject a rdf:Property ;
8805
+ rdfs:label "subject"@en ;
8806
+ rdfs:comment "The subject of a triple pattern or triple term."@en .
8807
+
8808
+ sparql:predicate a rdf:Property ;
8809
+ rdfs:label "predicate"@en ;
8810
+ rdfs:comment "The predicate of a triple pattern or triple term: an IRI, sparql:Variable, or property path node."@en .
8811
+
8812
+ sparql:object a rdf:Property ;
8813
+ rdfs:label "object"@en ;
8814
+ rdfs:comment "The object of a triple pattern or triple term."@en .
8815
+
8816
+ sparql:elements a rdf:Property ;
8817
+ rdfs:label "elements"@en ;
8818
+ rdfs:comment "The ordered elements of a group, OPTIONAL, MINUS, GRAPH, SERVICE, EXISTS, NOT EXISTS or UNION: an rdf:List."@en ;
8819
+ rdfs:range rdf:List .
8820
+
8821
+ sparql:graph a rdf:Property ;
8822
+ rdfs:label "graph"@en ;
8823
+ rdfs:comment "The graph name (variable or IRI) of a GRAPH pattern or graph block, or the IRI of a CREATE or GRAPH reference."@en .
8824
+
8825
+ sparql:endpoint a rdf:Property ;
8826
+ rdfs:label "endpoint"@en ;
8827
+ rdfs:comment "The endpoint (variable or IRI) of a SERVICE pattern."@en ;
8828
+ rdfs:domain sparql:Service .
8829
+
8830
+ sparql:silent a rdf:Property ;
8831
+ rdfs:label "silent"@en ;
8832
+ rdfs:comment "True if the operation or SERVICE pattern carries the SILENT modifier."@en ;
8833
+ rdfs:range xsd:boolean .
8834
+
8835
+ sparql:expression a rdf:Property ;
8836
+ rdfs:label "expression"@en ;
8837
+ rdfs:comment "The expression of a FILTER, BIND, alias, order condition or aggregate."@en .
8838
+
8839
+ sparql:variable a rdf:Property ;
8840
+ rdfs:label "variable"@en ;
8841
+ rdfs:comment "The target variable of a BIND or alias."@en ;
8842
+ rdfs:range sparql:Variable .
8843
+
8844
+ sparql:varName a rdf:Property ;
8845
+ rdfs:label "variable name"@en ;
8846
+ rdfs:comment "The name of a variable, without the ? or $ sigil."@en ;
8847
+ rdfs:domain sparql:Variable ;
8848
+ rdfs:range xsd:string .
8849
+
8850
+ sparql:label a rdf:Property ;
8851
+ rdfs:label "label"@en ;
8852
+ rdfs:comment "The label of a syntactic blank node, without the _: prefix. Absent for anonymous blank nodes."@en ;
8853
+ rdfs:domain sparql:BlankNode ;
8854
+ rdfs:range xsd:string .
8855
+
8856
+ sparql:arg a rdf:Property ;
8857
+ rdfs:label "argument"@en ;
8858
+ rdfs:comment "The operand of a unary operator expression."@en .
8859
+
8860
+ sparql:arg1 a rdf:Property ;
8861
+ rdfs:label "first argument"@en ;
8862
+ rdfs:comment "The left operand of a binary operator expression."@en .
8863
+
8864
+ sparql:arg2 a rdf:Property ;
8865
+ rdfs:label "second argument"@en ;
8866
+ rdfs:comment "The right operand of a binary operator expression."@en .
8867
+
8868
+ sparql:args a rdf:Property ;
8869
+ rdfs:label "arguments"@en ;
8870
+ rdfs:comment "The ordered arguments of a function call, built-in call, or IN/NOT IN expression: an rdf:List."@en ;
8871
+ rdfs:range rdf:List .
8872
+
8873
+ sparql:function a rdf:Property ;
8874
+ rdfs:label "function"@en ;
8875
+ rdfs:comment "The function of a call: an IRI for custom functions, a sparql:BuiltInFunction individual for built-ins."@en .
8876
+
8877
+ sparql:groupBy a rdf:Property ;
8878
+ rdfs:label "group by"@en ;
8879
+ rdfs:comment "The GROUP BY conditions: an rdf:List of variables, expressions or sparql:Alias nodes."@en ;
8880
+ rdfs:range rdf:List .
8881
+
8882
+ sparql:having a rdf:Property ;
8883
+ rdfs:label "having"@en ;
8884
+ rdfs:comment "The HAVING conditions: an rdf:List of expressions."@en ;
8885
+ rdfs:range rdf:List .
8886
+
8887
+ sparql:orderBy a rdf:Property ;
8888
+ rdfs:label "order by"@en ;
8889
+ rdfs:comment "The ORDER BY conditions: an rdf:List of variables, expressions, or sparql:Asc/sparql:Desc nodes."@en ;
8890
+ rdfs:range rdf:List .
8891
+
8892
+ sparql:limit a rdf:Property ;
8893
+ rdfs:label "limit"@en ;
8894
+ rdfs:comment "The LIMIT of a query."@en ;
8895
+ rdfs:range xsd:integer .
8896
+
8897
+ sparql:offset a rdf:Property ;
8898
+ rdfs:label "offset"@en ;
8899
+ rdfs:comment "The OFFSET of a query."@en ;
8900
+ rdfs:range xsd:integer .
8901
+
8902
+ sparql:values a rdf:Property ;
8903
+ rdfs:label "values"@en ;
8904
+ rdfs:comment "The trailing VALUES clause of a query or sub-select."@en ;
8905
+ rdfs:range sparql:Values .
8906
+
8907
+ sparql:variables a rdf:Property ;
8908
+ rdfs:label "variables"@en ;
8909
+ rdfs:comment "The variables of a VALUES block: an rdf:List of sparql:Variable nodes."@en ;
8910
+ rdfs:domain sparql:Values ;
8911
+ rdfs:range rdf:List .
8912
+
8913
+ sparql:bindings a rdf:Property ;
8914
+ rdfs:label "bindings"@en ;
8915
+ rdfs:comment "The binding rows of a VALUES block: an rdf:List of rows, each row an rdf:List of terms or sparql:undef."@en ;
8916
+ rdfs:domain sparql:Values ;
8917
+ rdfs:range rdf:List .
8918
+
8919
+ sparql:pathElements a rdf:Property ;
8920
+ rdfs:label "path elements"@en ;
8921
+ rdfs:comment "The ordered sub-paths of a sequence, alternative or negated property path: an rdf:List."@en ;
8922
+ rdfs:range rdf:List .
8923
+
8924
+ sparql:path a rdf:Property ;
8925
+ rdfs:label "path"@en ;
8926
+ rdfs:comment "The sub-path of an inverse or modified property path."@en .
8927
+
8928
+ sparql:countStar a rdf:Property ;
8929
+ rdfs:label "count star"@en ;
8930
+ rdfs:comment "True for COUNT(*)."@en ;
8931
+ rdfs:domain sparql:Count ;
8932
+ rdfs:range xsd:boolean .
8933
+
8934
+ sparql:separator a rdf:Property ;
8935
+ rdfs:label "separator"@en ;
8936
+ rdfs:comment "The SEPARATOR of a GROUP_CONCAT aggregate."@en ;
8937
+ rdfs:domain sparql:GroupConcat ;
8938
+ rdfs:range xsd:string .
8939
+
8940
+ sparql:operations a rdf:Property ;
8941
+ rdfs:label "operations"@en ;
8942
+ rdfs:comment "The ordered update operations of an update request: an rdf:List."@en ;
8943
+ rdfs:domain sparql:Update ;
8944
+ rdfs:range rdf:List .
8945
+
8946
+ sparql:source a rdf:Property ;
8947
+ rdfs:label "source"@en ;
8948
+ rdfs:comment "The source document IRI of a LOAD operation."@en ;
8949
+ rdfs:domain sparql:Load .
8950
+
8951
+ sparql:into a rdf:Property ;
8952
+ rdfs:label "into"@en ;
8953
+ rdfs:comment "The target graph IRI of a LOAD ... INTO GRAPH operation."@en ;
8954
+ rdfs:domain sparql:Load .
8955
+
8956
+ sparql:graphTarget a rdf:Property ;
8957
+ rdfs:label "graph target"@en ;
8958
+ rdfs:comment "The target of a CLEAR or DROP operation: a graph IRI, sparql:DefaultGraph, sparql:NamedGraphs or sparql:AllGraphs."@en .
8959
+
8960
+ sparql:fromGraph a rdf:Property ;
8961
+ rdfs:label "from graph"@en ;
8962
+ rdfs:comment "The source graph of an ADD, MOVE or COPY operation: a graph IRI or sparql:DefaultGraph."@en .
8963
+
8964
+ sparql:toGraph a rdf:Property ;
8965
+ rdfs:label "to graph"@en ;
8966
+ rdfs:comment "The target graph of an ADD, MOVE or COPY operation: a graph IRI or sparql:DefaultGraph."@en .
8967
+
8968
+ sparql:data a rdf:Property ;
8969
+ rdfs:label "data"@en ;
8970
+ rdfs:comment "The quad data of an INSERT DATA or DELETE DATA operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes."@en ;
8971
+ rdfs:range rdf:List .
8972
+
8973
+ sparql:deleteTemplate a rdf:Property ;
8974
+ rdfs:label "delete template"@en ;
8975
+ rdfs:comment "The DELETE template of a DELETE/INSERT operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes."@en ;
8976
+ rdfs:domain sparql:Modify ;
8977
+ rdfs:range rdf:List .
8978
+
8979
+ sparql:insertTemplate a rdf:Property ;
8980
+ rdfs:label "insert template"@en ;
8981
+ rdfs:comment "The INSERT template of a DELETE/INSERT operation: an rdf:List of sparql:TriplePattern and sparql:Graph nodes."@en ;
8982
+ rdfs:domain sparql:Modify ;
8983
+ rdfs:range rdf:List .
8984
+
8985
+ sparql:withGraph a rdf:Property ;
8986
+ rdfs:label "with graph"@en ;
8987
+ rdfs:comment "The WITH graph IRI of a DELETE/INSERT operation."@en ;
8988
+ rdfs:domain sparql:Modify .
8989
+
8990
+ sparql:using a rdf:Property ;
8991
+ rdfs:label "using"@en ;
8992
+ rdfs:comment "A USING clause IRI of a DELETE/INSERT operation (repeated for multiple clauses)."@en ;
8993
+ rdfs:domain sparql:Modify .
8994
+
8995
+ sparql:usingNamed a rdf:Property ;
8996
+ rdfs:label "using named"@en ;
8997
+ rdfs:comment "A USING NAMED clause IRI of a DELETE/INSERT operation (repeated for multiple clauses)."@en ;
8998
+ rdfs:domain sparql:Modify .
8999
+
9000
+ # ==========================================
9001
+ # Built-in function individuals
9002
+ # ==========================================
9003
+
9004
+ sparql:STR a sparql:BuiltInFunction ; rdfs:label "STR" .
9005
+ sparql:LANG a sparql:BuiltInFunction ; rdfs:label "LANG" .
9006
+ sparql:LANGMATCHES a sparql:BuiltInFunction ; rdfs:label "LANGMATCHES" .
9007
+ sparql:LANGDIR a sparql:BuiltInFunction ; rdfs:label "LANGDIR" .
9008
+ sparql:DATATYPE a sparql:BuiltInFunction ; rdfs:label "DATATYPE" .
9009
+ sparql:IRI a sparql:BuiltInFunction ; rdfs:label "IRI" .
9010
+ sparql:URI a sparql:BuiltInFunction ; rdfs:label "URI" .
9011
+ sparql:BNODE a sparql:BuiltInFunction ; rdfs:label "BNODE" .
9012
+ sparql:BOUND a sparql:BuiltInFunction ; rdfs:label "BOUND" .
9013
+ sparql:STRLEN a sparql:BuiltInFunction ; rdfs:label "STRLEN" .
9014
+ sparql:UCASE a sparql:BuiltInFunction ; rdfs:label "UCASE" .
9015
+ sparql:LCASE a sparql:BuiltInFunction ; rdfs:label "LCASE" .
9016
+ sparql:ENCODE_FOR_URI a sparql:BuiltInFunction ; rdfs:label "ENCODE_FOR_URI" .
9017
+ sparql:CONTAINS a sparql:BuiltInFunction ; rdfs:label "CONTAINS" .
9018
+ sparql:STRSTARTS a sparql:BuiltInFunction ; rdfs:label "STRSTARTS" .
9019
+ sparql:CONCAT a sparql:BuiltInFunction ; rdfs:label "CONCAT" .
9020
+ sparql:STRENDS a sparql:BuiltInFunction ; rdfs:label "STRENDS" .
9021
+ sparql:STRBEFORE a sparql:BuiltInFunction ; rdfs:label "STRBEFORE" .
9022
+ sparql:STRAFTER a sparql:BuiltInFunction ; rdfs:label "STRAFTER" .
9023
+ sparql:STRLANG a sparql:BuiltInFunction ; rdfs:label "STRLANG" .
9024
+ sparql:STRLANGDIR a sparql:BuiltInFunction ; rdfs:label "STRLANGDIR" .
9025
+ sparql:STRDT a sparql:BuiltInFunction ; rdfs:label "STRDT" .
9026
+ sparql:ABS a sparql:BuiltInFunction ; rdfs:label "ABS" .
9027
+ sparql:CEIL a sparql:BuiltInFunction ; rdfs:label "CEIL" .
9028
+ sparql:FLOOR a sparql:BuiltInFunction ; rdfs:label "FLOOR" .
9029
+ sparql:ROUND a sparql:BuiltInFunction ; rdfs:label "ROUND" .
9030
+ sparql:RAND a sparql:BuiltInFunction ; rdfs:label "RAND" .
9031
+ sparql:YEAR a sparql:BuiltInFunction ; rdfs:label "YEAR" .
9032
+ sparql:MONTH a sparql:BuiltInFunction ; rdfs:label "MONTH" .
9033
+ sparql:DAY a sparql:BuiltInFunction ; rdfs:label "DAY" .
9034
+ sparql:HOURS a sparql:BuiltInFunction ; rdfs:label "HOURS" .
9035
+ sparql:MINUTES a sparql:BuiltInFunction ; rdfs:label "MINUTES" .
9036
+ sparql:SECONDS a sparql:BuiltInFunction ; rdfs:label "SECONDS" .
9037
+ sparql:TIMEZONE a sparql:BuiltInFunction ; rdfs:label "TIMEZONE" .
9038
+ sparql:TZ a sparql:BuiltInFunction ; rdfs:label "TZ" .
9039
+ sparql:NOW a sparql:BuiltInFunction ; rdfs:label "NOW" .
9040
+ sparql:MD5 a sparql:BuiltInFunction ; rdfs:label "MD5" .
9041
+ sparql:SHA1 a sparql:BuiltInFunction ; rdfs:label "SHA1" .
9042
+ sparql:SHA256 a sparql:BuiltInFunction ; rdfs:label "SHA256" .
9043
+ sparql:SHA384 a sparql:BuiltInFunction ; rdfs:label "SHA384" .
9044
+ sparql:SHA512 a sparql:BuiltInFunction ; rdfs:label "SHA512" .
9045
+ sparql:sameTerm a sparql:BuiltInFunction ; rdfs:label "sameTerm" .
9046
+ sparql:isIRI a sparql:BuiltInFunction ; rdfs:label "isIRI" .
9047
+ sparql:isURI a sparql:BuiltInFunction ; rdfs:label "isURI" .
9048
+ sparql:isBLANK a sparql:BuiltInFunction ; rdfs:label "isBLANK" .
9049
+ sparql:isLITERAL a sparql:BuiltInFunction ; rdfs:label "isLITERAL" .
9050
+ sparql:isNUMERIC a sparql:BuiltInFunction ; rdfs:label "isNUMERIC" .
9051
+ sparql:COALESCE a sparql:BuiltInFunction ; rdfs:label "COALESCE" .
9052
+ sparql:IF a sparql:BuiltInFunction ; rdfs:label "IF" .
9053
+ sparql:UUID a sparql:BuiltInFunction ; rdfs:label "UUID" .
9054
+ sparql:STRUUID a sparql:BuiltInFunction ; rdfs:label "STRUUID" .
9055
+ sparql:isTRIPLE a sparql:BuiltInFunction ; rdfs:label "isTRIPLE" .
9056
+ sparql:TRIPLE a sparql:BuiltInFunction ; rdfs:label "TRIPLE" .
9057
+ sparql:SUBJECT a sparql:BuiltInFunction ; rdfs:label "SUBJECT" .
9058
+ sparql:PREDICATE a sparql:BuiltInFunction ; rdfs:label "PREDICATE" .
9059
+ sparql:OBJECT a sparql:BuiltInFunction ; rdfs:label "OBJECT" .
9060
+ sparql:hasLANG a sparql:BuiltInFunction ; rdfs:label "hasLANG" .
9061
+ sparql:hasLANGDIR a sparql:BuiltInFunction ; rdfs:label "hasLANGDIR" .
9062
+ sparql:REGEX a sparql:BuiltInFunction ; rdfs:label "REGEX" .
9063
+ sparql:SUBSTR a sparql:BuiltInFunction ; rdfs:label "SUBSTR" .
9064
+ sparql:REPLACE a sparql:BuiltInFunction ; rdfs:label "REPLACE" .
9065
+ `;
7212
9066
  var xsd2 = `@prefix owl: <http://www.w3.org/2002/07/owl#> .
7213
9067
  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
7214
9068
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@@ -7394,7 +9248,8 @@ var Store = class {
7394
9248
  this._graphVersions.set(graphUri, (this._graphVersions.get(graphUri) ?? 0) + 1);
7395
9249
  }
7396
9250
  /**
7397
- * Loads a set of W3C Standard ontologies into the store (RDF, RDFA, RDFS, OWL, SKOS, SHACL, XSD).
9251
+ * Loads a set of W3C Standard ontologies into the store (RDF, RDFA, RDFS, OWL, SKOS, SHACL, XSD)
9252
+ * and the SPARQL Syntax Vocabulary.
7398
9253
  */
7399
9254
  async loadFrameworkOntologies(executeInference = true) {
7400
9255
  this.loadTurtle(rdf2, _RDF, executeInference);
@@ -7403,6 +9258,7 @@ var Store = class {
7403
9258
  this.loadTurtle(owl2, _OWL, executeInference);
7404
9259
  this.loadTurtle(sh2, _SH, executeInference);
7405
9260
  this.loadTurtle(skos2, _SKOS, executeInference);
9261
+ this.loadTurtle(sparql2, _SPARQL, executeInference);
7406
9262
  this.loadTurtle(xsd2, _XSD, executeInference);
7407
9263
  }
7408
9264
  /**
@@ -7637,7 +9493,18 @@ var Store = class {
7637
9493
  const list = listUri.includes(":") ? this.dataFactory.namedNode(listUri) : this.dataFactory.blankNode(listUri);
7638
9494
  return this._getListItems(graphUris, list).map((t) => t.value);
7639
9495
  }
7640
- _getListItems(graphUris, subject) {
9496
+ /**
9497
+ * Recursively collect the items of an ordered list.
9498
+ * @param graphUris Optional graph URI or array of graph URIs to query.
9499
+ * @param subject The list node to collect the items from.
9500
+ * @param visited Set of list nodes that have already been visited.
9501
+ * @returns An array of the items in the list.
9502
+ */
9503
+ _getListItems(graphUris, subject, visited = /* @__PURE__ */ new Set()) {
9504
+ if (visited.has(subject.value)) {
9505
+ return [];
9506
+ }
9507
+ visited.add(subject.value);
7641
9508
  const first = Array.from(this.matchAll(graphUris, subject, rdf.first, null));
7642
9509
  if (!first.length) {
7643
9510
  return [];
@@ -7645,10 +9512,10 @@ var Store = class {
7645
9512
  const rest = Array.from(this.matchAll(graphUris, subject, rdf.rest, null));
7646
9513
  const firstItem = first[0].object;
7647
9514
  const restList = rest[0]?.object;
7648
- if (restList.value === RDF.nil) {
9515
+ if (!restList || restList.value === RDF.nil) {
7649
9516
  return [firstItem];
7650
9517
  } else {
7651
- const restItems = this._getListItems(graphUris, restList);
9518
+ const restItems = this._getListItems(graphUris, restList, visited);
7652
9519
  return [firstItem, ...restItems];
7653
9520
  }
7654
9521
  }
@@ -7917,6 +9784,7 @@ export {
7917
9784
  SH,
7918
9785
  SKOS,
7919
9786
  SKOS_XL,
9787
+ SPARQL,
7920
9788
  ShapeRepository,
7921
9789
  Store,
7922
9790
  TripleNotFoundError,
@@ -7932,6 +9800,7 @@ export {
7932
9800
  _SH,
7933
9801
  _SKOS,
7934
9802
  _SKOS_XL,
9803
+ _SPARQL,
7935
9804
  _XSD,
7936
9805
  _dcat,
7937
9806
  _owl,
@@ -7941,6 +9810,7 @@ export {
7941
9810
  _sh,
7942
9811
  _skos,
7943
9812
  _skos_xl,
9813
+ _sparql,
7944
9814
  _xsd,
7945
9815
  dataFactory,
7946
9816
  dcat,
@@ -7951,6 +9821,7 @@ export {
7951
9821
  sh,
7952
9822
  skos,
7953
9823
  skos_xl,
9824
+ sparql,
7954
9825
  xsd
7955
9826
  };
7956
9827
  //# sourceMappingURL=index.js.map