@comunica/utils-expression-evaluator 4.4.0 → 4.4.2-alpha.49.0

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.
Files changed (58) hide show
  1. package/lib/expressions/Aggregate.d.ts +1 -1
  2. package/lib/expressions/Aggregate.js +0 -0
  3. package/lib/expressions/Aggregate.js.map +1 -1
  4. package/lib/expressions/Existence.d.ts +1 -1
  5. package/lib/expressions/Existence.js +0 -0
  6. package/lib/expressions/Existence.js.map +1 -1
  7. package/lib/expressions/Expressions.d.ts +0 -0
  8. package/lib/expressions/Expressions.js +0 -0
  9. package/lib/expressions/Expressions.js.map +0 -0
  10. package/lib/expressions/Operator.d.ts +0 -0
  11. package/lib/expressions/Operator.js +0 -0
  12. package/lib/expressions/Operator.js.map +0 -0
  13. package/lib/expressions/Term.d.ts +9 -1
  14. package/lib/expressions/Term.js +21 -11
  15. package/lib/expressions/Term.js.map +1 -1
  16. package/lib/expressions/Variable.d.ts +0 -0
  17. package/lib/expressions/Variable.js +0 -0
  18. package/lib/expressions/Variable.js.map +0 -0
  19. package/lib/expressions/index.d.ts +0 -0
  20. package/lib/expressions/index.js +0 -0
  21. package/lib/expressions/index.js.map +0 -0
  22. package/lib/functions/Helpers.d.ts +2 -0
  23. package/lib/functions/Helpers.js +8 -1
  24. package/lib/functions/Helpers.js.map +1 -1
  25. package/lib/functions/OverloadTree.d.ts +0 -0
  26. package/lib/functions/OverloadTree.js +0 -0
  27. package/lib/functions/OverloadTree.js.map +0 -0
  28. package/lib/index.d.ts +0 -0
  29. package/lib/index.js +0 -0
  30. package/lib/index.js.map +0 -0
  31. package/lib/transformers/TermTransformer.d.ts +2 -2
  32. package/lib/transformers/TermTransformer.js +6 -3
  33. package/lib/transformers/TermTransformer.js.map +1 -1
  34. package/lib/util/Consts.d.ts +5 -0
  35. package/lib/util/Consts.js +5 -0
  36. package/lib/util/Consts.js.map +1 -1
  37. package/lib/util/Context.d.ts +0 -0
  38. package/lib/util/Context.js +0 -0
  39. package/lib/util/Context.js.map +0 -0
  40. package/lib/util/DateTimeHelpers.d.ts +0 -0
  41. package/lib/util/DateTimeHelpers.js +0 -0
  42. package/lib/util/DateTimeHelpers.js.map +0 -0
  43. package/lib/util/Errors.d.ts +5 -0
  44. package/lib/util/Errors.js +9 -1
  45. package/lib/util/Errors.js.map +1 -1
  46. package/lib/util/Parsing.d.ts +0 -0
  47. package/lib/util/Parsing.js +0 -0
  48. package/lib/util/Parsing.js.map +0 -0
  49. package/lib/util/Serialization.d.ts +0 -0
  50. package/lib/util/Serialization.js +0 -0
  51. package/lib/util/Serialization.js.map +0 -0
  52. package/lib/util/SpecAlgos.d.ts +0 -0
  53. package/lib/util/SpecAlgos.js +0 -0
  54. package/lib/util/SpecAlgos.js.map +0 -0
  55. package/lib/util/TypeHandling.d.ts +0 -0
  56. package/lib/util/TypeHandling.js +1 -0
  57. package/lib/util/TypeHandling.js.map +1 -1
  58. package/package.json +7 -7
@@ -1,6 +1,6 @@
1
1
  import type { AggregateExpression } from '@comunica/types';
2
2
  import { ExpressionType } from '@comunica/types';
3
- import type { Algebra as Alg } from 'sparqlalgebrajs';
3
+ import type { Algebra as Alg } from '@comunica/utils-algebra';
4
4
  export declare class Aggregate implements AggregateExpression {
5
5
  name: string;
6
6
  expression: Alg.AggregateExpression;
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"Aggregate.js","sourceRoot":"","sources":["Aggregate.ts"],"names":[],"mappings":";;;AACA,2CAAiD;AAGjD,MAAa,SAAS;IAGpB,YACS,IAAY,EACZ,UAAmC;QADnC,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAyB;QAJrC,mBAAc,GAA6B,sBAAc,CAAC,SAAS,CAAC;IAKxE,CAAC;CACL;AAPD,8BAOC","sourcesContent":["import type { AggregateExpression } from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\n\nexport class Aggregate implements AggregateExpression {\n public expressionType: ExpressionType.Aggregate = ExpressionType.Aggregate;\n\n public constructor(\n public name: string,\n public expression: Alg.AggregateExpression,\n ) {}\n}\n"]}
1
+ {"version":3,"file":"Aggregate.js","sourceRoot":"","sources":["Aggregate.ts"],"names":[],"mappings":";;;AACA,2CAAiD;AAGjD,MAAa,SAAS;IAGpB,YACS,IAAY,EACZ,UAAmC;QADnC,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAyB;QAJrC,mBAAc,GAA6B,sBAAc,CAAC,SAAS,CAAC;IAKxE,CAAC;CACL;AAPD,8BAOC","sourcesContent":["import type { AggregateExpression } from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\nimport type { Algebra as Alg } from '@comunica/utils-algebra';\n\nexport class Aggregate implements AggregateExpression {\n public expressionType: ExpressionType.Aggregate = ExpressionType.Aggregate;\n\n public constructor(\n public name: string,\n public expression: Alg.AggregateExpression,\n ) {}\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { ExistenceExpression } from '@comunica/types';
2
2
  import { ExpressionType } from '@comunica/types';
3
- import type { Algebra as Alg } from 'sparqlalgebrajs';
3
+ import type { Algebra as Alg } from '@comunica/utils-algebra';
4
4
  export declare class Existence implements ExistenceExpression {
5
5
  expression: Alg.ExistenceExpression;
6
6
  expressionType: ExpressionType.Existence;
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"Existence.js","sourceRoot":"","sources":["Existence.ts"],"names":[],"mappings":";;;AACA,2CAAiD;AAGjD,MAAa,SAAS;IAEpB,YAA0B,UAAmC;QAAnC,eAAU,GAAV,UAAU,CAAyB;QADtD,mBAAc,GAA6B,sBAAc,CAAC,SAAS,CAAC;IACX,CAAC;CAClE;AAHD,8BAGC","sourcesContent":["import type { ExistenceExpression } from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\n\nexport class Existence implements ExistenceExpression {\n public expressionType: ExpressionType.Existence = ExpressionType.Existence;\n public constructor(public expression: Alg.ExistenceExpression) {}\n}\n"]}
1
+ {"version":3,"file":"Existence.js","sourceRoot":"","sources":["Existence.ts"],"names":[],"mappings":";;;AACA,2CAAiD;AAGjD,MAAa,SAAS;IAEpB,YAA0B,UAAmC;QAAnC,eAAU,GAAV,UAAU,CAAyB;QADtD,mBAAc,GAA6B,sBAAc,CAAC,SAAS,CAAC;IACX,CAAC;CAClE;AAHD,8BAGC","sourcesContent":["import type { ExistenceExpression } from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\nimport type { Algebra as Alg } from '@comunica/utils-algebra';\n\nexport class Existence implements ExistenceExpression {\n public expressionType: ExpressionType.Existence = ExpressionType.Existence;\n public constructor(public expression: Alg.ExistenceExpression) {}\n}\n"]}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -46,14 +46,16 @@ export declare class Literal<T extends ISerializable> extends Term {
46
46
  dataType: string;
47
47
  strValue?: string | undefined;
48
48
  language?: string | undefined;
49
+ direction?: "ltr" | "rtl" | undefined;
49
50
  termType: "literal";
50
51
  /**
51
52
  * @param typedValue internal representation of this literal's value
52
53
  * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI
53
54
  * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.
54
55
  * @param language the language, mainly for language enabled strings like RDF_LANG_STRING
56
+ * @param direction the base direction, mainly for directional language enabled strings like RDF_DIR_LANG_STRING
55
57
  */
56
- constructor(typedValue: T, dataType: string, strValue?: string | undefined, language?: string | undefined);
58
+ constructor(typedValue: T, dataType: string, strValue?: string | undefined, language?: string | undefined, direction?: "ltr" | "rtl" | undefined);
57
59
  toRDF(dataFactory: ComunicaDataFactory): RDF.Literal;
58
60
  str(): string;
59
61
  }
@@ -107,6 +109,12 @@ export declare class LangStringLiteral extends Literal<string> {
107
109
  constructor(typedValue: string, language: string, dataType?: string);
108
110
  coerceEBV(): boolean;
109
111
  }
112
+ export declare class DirLangStringLiteral extends Literal<string> {
113
+ typedValue: string;
114
+ language: string;
115
+ direction: 'ltr' | 'rtl';
116
+ constructor(typedValue: string, language: string, direction: 'ltr' | 'rtl', dataType?: string);
117
+ }
110
118
  export declare class StringLiteral extends Literal<string> {
111
119
  typedValue: string;
112
120
  /**
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isNonLexicalLiteral = exports.NonLexicalLiteral = exports.YearMonthDurationLiteral = exports.DayTimeDurationLiteral = exports.DurationLiteral = exports.DateLiteral = exports.TimeLiteral = exports.DateTimeLiteral = exports.StringLiteral = exports.LangStringLiteral = exports.BooleanLiteral = exports.DoubleLiteral = exports.FloatLiteral = exports.DecimalLiteral = exports.IntegerLiteral = exports.NumericLiteral = exports.Literal = exports.isLiteralTermExpression = exports.DefaultGraph = exports.Quad = exports.BlankNode = exports.NamedNode = exports.Term = void 0;
3
+ exports.isNonLexicalLiteral = exports.NonLexicalLiteral = exports.YearMonthDurationLiteral = exports.DayTimeDurationLiteral = exports.DurationLiteral = exports.DateLiteral = exports.TimeLiteral = exports.DateTimeLiteral = exports.StringLiteral = exports.DirLangStringLiteral = exports.LangStringLiteral = exports.BooleanLiteral = exports.DoubleLiteral = exports.FloatLiteral = exports.DecimalLiteral = exports.IntegerLiteral = exports.NumericLiteral = exports.Literal = exports.isLiteralTermExpression = exports.DefaultGraph = exports.Quad = exports.BlankNode = exports.NamedNode = exports.Term = void 0;
4
4
  const types_1 = require("@comunica/types");
5
5
  const C = require("../util/Consts");
6
6
  const Consts_1 = require("../util/Consts");
7
7
  const Err = require("../util/Errors");
8
8
  const Serialization_1 = require("../util/Serialization");
9
- const TypeHandling_1 = require("../util/TypeHandling");
10
9
  class Term {
11
10
  constructor() {
12
11
  this.expressionType = types_1.ExpressionType.Term;
@@ -91,17 +90,21 @@ class Literal extends Term {
91
90
  * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI
92
91
  * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.
93
92
  * @param language the language, mainly for language enabled strings like RDF_LANG_STRING
93
+ * @param direction the base direction, mainly for directional language enabled strings like RDF_DIR_LANG_STRING
94
94
  */
95
- constructor(typedValue, dataType, strValue, language) {
95
+ constructor(typedValue, dataType, strValue, language, direction) {
96
96
  super();
97
97
  this.typedValue = typedValue;
98
98
  this.dataType = dataType;
99
99
  this.strValue = strValue;
100
100
  this.language = language;
101
+ this.direction = direction;
101
102
  this.termType = 'literal';
102
103
  }
103
104
  toRDF(dataFactory) {
104
- return dataFactory.literal(this.strValue ?? this.str(), this.language ?? dataFactory.namedNode(this.dataType));
105
+ return dataFactory.literal(this.strValue ?? this.str(), this.direction && this.language ?
106
+ { language: this.language, direction: this.direction } :
107
+ this.language ?? dataFactory.namedNode(this.dataType));
105
108
  }
106
109
  str() {
107
110
  return this.strValue ?? this.typedValue.toString();
@@ -215,10 +218,20 @@ class LangStringLiteral extends Literal {
215
218
  this.language = language;
216
219
  }
217
220
  coerceEBV() {
218
- return this.str().length > 0;
221
+ // Throws in [SPARQL 1.2](https://www.w3.org/TR/sparql12-query/#ebv), and [1.1](https://www.w3.org/TR/sparql11-query/#ebv)
222
+ return super.coerceEBV();
219
223
  }
220
224
  }
221
225
  exports.LangStringLiteral = LangStringLiteral;
226
+ class DirLangStringLiteral extends Literal {
227
+ constructor(typedValue, language, direction, dataType) {
228
+ super(typedValue, dataType ?? Consts_1.TypeURL.RDF_DIR_LANG_STRING, typedValue, language, direction);
229
+ this.typedValue = typedValue;
230
+ this.language = language;
231
+ this.direction = direction;
232
+ }
233
+ }
234
+ exports.DirLangStringLiteral = DirLangStringLiteral;
222
235
  // https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal
223
236
  // https://www.w3.org/TR/sparql11-query/#defn_SimpleLiteral
224
237
  // https://www.w3.org/TR/sparql11-query/#func-strings
@@ -323,12 +336,9 @@ class NonLexicalLiteral extends Literal {
323
336
  this.openWorldType = openWorldType;
324
337
  }
325
338
  coerceEBV() {
326
- const isNumericOrBool = (0, TypeHandling_1.isSubTypeOf)(this.dataType, Consts_1.TypeURL.XSD_BOOLEAN, this.openWorldType) ||
327
- (0, TypeHandling_1.isSubTypeOf)(this.dataType, Consts_1.TypeAlias.SPARQL_NUMERIC, this.openWorldType);
328
- if (isNumericOrBool) {
329
- return false;
330
- }
331
- throw new Err.EBVCoercionError(this);
339
+ // Always throws in [SPARQL 1.2](https://www.w3.org/TR/sparql12-query/#ebv),
340
+ // and sometimes throws in [1.1](https://www.w3.org/TR/sparql11-query/#ebv)
341
+ return super.coerceEBV();
332
342
  }
333
343
  toRDF(dataFactory) {
334
344
  return dataFactory.literal(this.str(), this.language ?? dataFactory.namedNode(this.dataType));
@@ -1 +1 @@
1
- {"version":3,"file":"Term.js","sourceRoot":"","sources":["Term.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ComunicaDataFactory,\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ISuperTypeProvider,\n ITimeRepresentation,\n IYearMonthDurationRepresentation,\n TermExpression,\n TermType,\n} from '@comunica/types';\nimport { ExpressionType,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport * as C from '../util/Consts';\nimport { TypeAlias, TypeURL } from '../util/Consts';\n\nimport * as Err from '../util/Errors';\nimport { serializeDate, serializeDateTime, serializeDuration, serializeTime } from '../util/Serialization';\nimport { isSubTypeOf } from '../util/TypeHandling';\n\nexport abstract class Term implements TermExpression {\n public expressionType: ExpressionType.Term = ExpressionType.Term;\n public abstract termType: TermType;\n\n public abstract toRDF(dataFactory: ComunicaDataFactory): RDF.Term;\n\n public str(): string {\n throw new Err.InvalidArgumentTypes([ this ], C.SparqlOperator.STR);\n }\n\n public coerceEBV(): boolean {\n throw new Err.EBVCoercionError(this);\n }\n}\n\n// NamedNodes -----------------------------------------------------------------\nexport class NamedNode extends Term {\n public termType: TermType = 'namedNode';\n public constructor(public value: string) {\n super();\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.Term {\n return dataFactory.namedNode(this.value);\n }\n\n public override str(): string {\n return this.value;\n }\n}\n\n// BlankNodes -----------------------------------------------------------------\n\nexport class BlankNode extends Term {\n public value: RDF.BlankNode | string;\n public termType: TermType = 'blankNode';\n\n public constructor(value: RDF.BlankNode | string) {\n super();\n this.value = value;\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.Term {\n return typeof this.value === 'string' ? dataFactory.blankNode(this.value) : this.value;\n }\n}\n\n// Quads -----------------------------------------------------------------\nexport class Quad extends Term {\n public termType: TermType = 'quad';\n\n public constructor(\n public readonly subject: Term,\n public readonly predicate: Term,\n public readonly object: Term,\n public readonly graph: Term,\n ) {\n super();\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.BaseQuad {\n return dataFactory.quad(\n <RDF.Quad_Subject> this.subject.toRDF(dataFactory),\n <RDF.Quad_Predicate> this.predicate.toRDF(dataFactory),\n <RDF.Quad_Object> this.object.toRDF(dataFactory),\n <RDF.Quad_Graph> this.graph.toRDF(dataFactory),\n );\n }\n\n public override str(): string {\n return `Quad: [${this.subject.str()}, ${this.predicate.str()}, ${this.object.str()}, ${this.graph.str()}]`;\n }\n}\n\nexport class DefaultGraph extends Term {\n public termType: TermType = 'defaultGraph';\n\n public constructor() {\n super();\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.DefaultGraph {\n return dataFactory.defaultGraph();\n }\n\n public override str(): string {\n return 'DefaultGraph';\n }\n}\n\n// Literals-- -----------------------------------------------------------------\nexport function isLiteralTermExpression(expr: TermExpression): Literal<any> | undefined {\n if (expr.termType === 'literal') {\n return <Literal<any>> expr;\n }\n return undefined;\n}\n\nexport interface ISerializable {\n toString: () => string;\n}\n\nexport class Literal<T extends ISerializable> extends Term {\n public termType = <const> 'literal';\n /**\n * @param typedValue internal representation of this literal's value\n * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI\n * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.\n * @param language the language, mainly for language enabled strings like RDF_LANG_STRING\n */\n public constructor(\n public typedValue: T,\n public dataType: string,\n public strValue?: string,\n public language?: string,\n ) {\n super();\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.Literal {\n return dataFactory.literal(\n this.strValue ?? this.str(),\n this.language ?? dataFactory.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? this.typedValue.toString();\n }\n}\n\nexport abstract class NumericLiteral extends Literal<number> {\n protected constructor(\n public override typedValue: number,\n dataType: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType, strValue, language);\n }\n\n protected abstract specificFormatter(val: number): string;\n\n public override coerceEBV(): boolean {\n return Boolean(this.typedValue);\n }\n\n public override toRDF(dataFactory: ComunicaDataFactory): RDF.Literal {\n const term = super.toRDF(dataFactory);\n if (!Number.isFinite(this.typedValue)) {\n term.value = term.value.replace('Infinity', 'INF');\n }\n return term;\n }\n\n public override str(): string {\n return this.strValue ??\n this.specificFormatter(this.typedValue);\n }\n}\n\nexport class IntegerLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_INTEGER, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toFixed(0);\n }\n}\n\nexport class DecimalLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DECIMAL, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class FloatLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_FLOAT, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class DoubleLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DOUBLE, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n if (!Number.isFinite(val)) {\n if (val > 0) {\n return 'INF';\n }\n if (val < 0) {\n return '-INF';\n }\n return 'NaN';\n }\n\n const jsExponential = val.toExponential();\n const [ jsMantisse, jsExponent ] = jsExponential.split('e');\n\n // Leading + must be removed for integer\n // https://www.w3.org/TR/xmlschema-2/#integer\n const exponent = jsExponent.replace(/\\+/u, '');\n\n // SPARQL test suite prefers trailing zero's\n const mantisse = jsMantisse.includes('.') ?\n jsMantisse :\n `${jsMantisse}.0`;\n\n return `${mantisse}E${exponent}`;\n }\n}\n\nexport class BooleanLiteral extends Literal<boolean> {\n public constructor(public override typedValue: boolean, public override strValue?: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_BOOLEAN, strValue);\n }\n\n public override coerceEBV(): boolean {\n return this.typedValue;\n }\n}\n\nexport class LangStringLiteral extends Literal<string> {\n public constructor(public override typedValue: string, public override language: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.RDF_LANG_STRING, typedValue, language);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\n// https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal\n// https://www.w3.org/TR/sparql11-query/#defn_SimpleLiteral\n// https://www.w3.org/TR/sparql11-query/#func-strings\n// This does not include language tagged literals\nexport class StringLiteral extends Literal<string> {\n /**\n * @param typedValue\n * @param dataType Should be type that implements XSD_STRING\n */\n public constructor(public override typedValue: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_STRING, typedValue);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\nexport class DateTimeLiteral extends Literal<IDateTimeRepresentation> {\n public constructor(\n public override typedValue: IDateTimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE_TIME, strValue);\n }\n\n public override str(): string {\n return serializeDateTime(this.typedValue);\n }\n}\n\nexport class TimeLiteral extends Literal<ITimeRepresentation> {\n public constructor(\n public override typedValue: ITimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_TIME, strValue);\n }\n\n public override str(): string {\n return serializeTime(this.typedValue);\n }\n}\n\nexport class DateLiteral extends Literal<IDateRepresentation> {\n public constructor(\n public override typedValue: IDateRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE, strValue);\n }\n\n public override str(): string {\n return serializeDate(this.typedValue);\n }\n}\n\nexport class DurationLiteral extends Literal<Partial<IDurationRepresentation>> {\n public constructor(\n public override typedValue: Partial<IDurationRepresentation>,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue);\n }\n}\n\nexport class DayTimeDurationLiteral extends DurationLiteral {\n public constructor(\n public override typedValue: Partial<IDurationRepresentation>,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, strValue, dataType ?? TypeURL.XSD_DAY_TIME_DURATION);\n }\n}\n\nexport class YearMonthDurationLiteral extends Literal<Partial<IYearMonthDurationRepresentation>> {\n public constructor(\n public override typedValue: Partial<IYearMonthDurationRepresentation>,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_YEAR_MONTH_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue, 'P0M');\n }\n}\n\n/**\n * This class is used when a literal is parsed, and it's value is\n * an invalid lexical form for it's datatype. The spec defines value with\n * invalid lexical form are still valid terms, and as such we can not error\n * immediately. This class makes sure that the typedValue will remain undefined,\n * and the category 'nonlexical'. This way, only when operators apply to the\n * 'nonlexical' category, they will keep working, otherwise they will throw a\n * type error.\n * This seems to match the spec, except maybe for functions that accept\n * non-lexical values for their datatype.\n *\n * See:\n * - https://www.w3.org/TR/xquery/#dt-type-error\n * - https://www.w3.org/TR/rdf-concepts/#section-Literal-Value\n * - https://www.w3.org/TR/xquery/#dt-ebv\n * - ... some other more precise thing i can't find...\n */\nexport class NonLexicalLiteral extends Literal<{ toString: () => 'undefined' }> {\n public constructor(\n typedValue: undefined,\n dataType: string,\n private readonly openWorldType: ISuperTypeProvider,\n strValue?: string,\n language?: string,\n ) {\n super({ toString: () => 'undefined' }, dataType, strValue, language);\n }\n\n public override coerceEBV(): boolean {\n const isNumericOrBool =\n isSubTypeOf(this.dataType, TypeURL.XSD_BOOLEAN, this.openWorldType) ||\n isSubTypeOf(this.dataType, TypeAlias.SPARQL_NUMERIC, this.openWorldType);\n if (isNumericOrBool) {\n return false;\n }\n throw new Err.EBVCoercionError(this);\n }\n\n public override toRDF(dataFactory: ComunicaDataFactory): RDF.Literal {\n return dataFactory.literal(\n this.str(),\n this.language ?? dataFactory.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? '';\n }\n}\n\nexport function isNonLexicalLiteral(lit: Literal<any>): NonLexicalLiteral | undefined {\n if (lit instanceof NonLexicalLiteral) {\n return lit;\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"Term.js","sourceRoot":"","sources":["Term.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ComunicaDataFactory,\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ISuperTypeProvider,\n ITimeRepresentation,\n IYearMonthDurationRepresentation,\n TermExpression,\n TermType,\n} from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { serializeDate, serializeDateTime, serializeDuration, serializeTime } from '../util/Serialization';\n\nexport abstract class Term implements TermExpression {\n public expressionType: ExpressionType.Term = ExpressionType.Term;\n public abstract termType: TermType;\n\n public abstract toRDF(dataFactory: ComunicaDataFactory): RDF.Term;\n\n public str(): string {\n throw new Err.InvalidArgumentTypes([ this ], C.SparqlOperator.STR);\n }\n\n public coerceEBV(): boolean {\n throw new Err.EBVCoercionError(this);\n }\n}\n\n// NamedNodes -----------------------------------------------------------------\nexport class NamedNode extends Term {\n public termType: TermType = 'namedNode';\n public constructor(public value: string) {\n super();\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.Term {\n return dataFactory.namedNode(this.value);\n }\n\n public override str(): string {\n return this.value;\n }\n}\n\n// BlankNodes -----------------------------------------------------------------\n\nexport class BlankNode extends Term {\n public value: RDF.BlankNode | string;\n public termType: TermType = 'blankNode';\n\n public constructor(value: RDF.BlankNode | string) {\n super();\n this.value = value;\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.Term {\n return typeof this.value === 'string' ? dataFactory.blankNode(this.value) : this.value;\n }\n}\n\n// Quads -----------------------------------------------------------------\nexport class Quad extends Term {\n public termType: TermType = 'quad';\n\n public constructor(\n public readonly subject: Term,\n public readonly predicate: Term,\n public readonly object: Term,\n public readonly graph: Term,\n ) {\n super();\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.BaseQuad {\n return dataFactory.quad(\n <RDF.Quad_Subject> this.subject.toRDF(dataFactory),\n <RDF.Quad_Predicate> this.predicate.toRDF(dataFactory),\n <RDF.Quad_Object> this.object.toRDF(dataFactory),\n <RDF.Quad_Graph> this.graph.toRDF(dataFactory),\n );\n }\n\n public override str(): string {\n return `Quad: [${this.subject.str()}, ${this.predicate.str()}, ${this.object.str()}, ${this.graph.str()}]`;\n }\n}\n\nexport class DefaultGraph extends Term {\n public termType: TermType = 'defaultGraph';\n\n public constructor() {\n super();\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.DefaultGraph {\n return dataFactory.defaultGraph();\n }\n\n public override str(): string {\n return 'DefaultGraph';\n }\n}\n\n// Literals-- -----------------------------------------------------------------\nexport function isLiteralTermExpression(expr: TermExpression): Literal<any> | undefined {\n if (expr.termType === 'literal') {\n return <Literal<any>> expr;\n }\n return undefined;\n}\n\nexport interface ISerializable {\n toString: () => string;\n}\n\nexport class Literal<T extends ISerializable> extends Term {\n public termType = <const> 'literal';\n /**\n * @param typedValue internal representation of this literal's value\n * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI\n * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.\n * @param language the language, mainly for language enabled strings like RDF_LANG_STRING\n * @param direction the base direction, mainly for directional language enabled strings like RDF_DIR_LANG_STRING\n */\n public constructor(\n public typedValue: T,\n public dataType: string,\n public strValue?: string,\n public language?: string,\n public direction?: 'ltr' | 'rtl',\n ) {\n super();\n }\n\n public toRDF(dataFactory: ComunicaDataFactory): RDF.Literal {\n return dataFactory.literal(\n this.strValue ?? this.str(),\n this.direction && this.language ?\n { language: this.language, direction: this.direction } :\n this.language ?? dataFactory.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? this.typedValue.toString();\n }\n}\n\nexport abstract class NumericLiteral extends Literal<number> {\n protected constructor(\n public override typedValue: number,\n dataType: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType, strValue, language);\n }\n\n protected abstract specificFormatter(val: number): string;\n\n public override coerceEBV(): boolean {\n return Boolean(this.typedValue);\n }\n\n public override toRDF(dataFactory: ComunicaDataFactory): RDF.Literal {\n const term = super.toRDF(dataFactory);\n if (!Number.isFinite(this.typedValue)) {\n term.value = term.value.replace('Infinity', 'INF');\n }\n return term;\n }\n\n public override str(): string {\n return this.strValue ??\n this.specificFormatter(this.typedValue);\n }\n}\n\nexport class IntegerLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_INTEGER, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toFixed(0);\n }\n}\n\nexport class DecimalLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DECIMAL, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class FloatLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_FLOAT, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n return val.toString();\n }\n}\n\nexport class DoubleLiteral extends NumericLiteral {\n public constructor(\n public override typedValue: number,\n dataType?: string,\n public override strValue?: string,\n public override language?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DOUBLE, strValue, language);\n }\n\n protected specificFormatter(val: number): string {\n if (!Number.isFinite(val)) {\n if (val > 0) {\n return 'INF';\n }\n if (val < 0) {\n return '-INF';\n }\n return 'NaN';\n }\n\n const jsExponential = val.toExponential();\n const [ jsMantisse, jsExponent ] = jsExponential.split('e');\n\n // Leading + must be removed for integer\n // https://www.w3.org/TR/xmlschema-2/#integer\n const exponent = jsExponent.replace(/\\+/u, '');\n\n // SPARQL test suite prefers trailing zero's\n const mantisse = jsMantisse.includes('.') ?\n jsMantisse :\n `${jsMantisse}.0`;\n\n return `${mantisse}E${exponent}`;\n }\n}\n\nexport class BooleanLiteral extends Literal<boolean> {\n public constructor(public override typedValue: boolean, public override strValue?: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_BOOLEAN, strValue);\n }\n\n public override coerceEBV(): boolean {\n return this.typedValue;\n }\n}\n\nexport class LangStringLiteral extends Literal<string> {\n public constructor(public override typedValue: string, public override language: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.RDF_LANG_STRING, typedValue, language);\n }\n\n public override coerceEBV(): boolean {\n // Throws in [SPARQL 1.2](https://www.w3.org/TR/sparql12-query/#ebv), and [1.1](https://www.w3.org/TR/sparql11-query/#ebv)\n return super.coerceEBV();\n }\n}\n\nexport class DirLangStringLiteral extends Literal<string> {\n public constructor(\n public override typedValue: string,\n public override language: string,\n public override direction: 'ltr' | 'rtl',\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.RDF_DIR_LANG_STRING, typedValue, language, direction);\n }\n}\n\n// https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal\n// https://www.w3.org/TR/sparql11-query/#defn_SimpleLiteral\n// https://www.w3.org/TR/sparql11-query/#func-strings\n// This does not include language tagged literals\nexport class StringLiteral extends Literal<string> {\n /**\n * @param typedValue\n * @param dataType Should be type that implements XSD_STRING\n */\n public constructor(public override typedValue: string, dataType?: string) {\n super(typedValue, dataType ?? TypeURL.XSD_STRING, typedValue);\n }\n\n public override coerceEBV(): boolean {\n return this.str().length > 0;\n }\n}\n\nexport class DateTimeLiteral extends Literal<IDateTimeRepresentation> {\n public constructor(\n public override typedValue: IDateTimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE_TIME, strValue);\n }\n\n public override str(): string {\n return serializeDateTime(this.typedValue);\n }\n}\n\nexport class TimeLiteral extends Literal<ITimeRepresentation> {\n public constructor(\n public override typedValue: ITimeRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_TIME, strValue);\n }\n\n public override str(): string {\n return serializeTime(this.typedValue);\n }\n}\n\nexport class DateLiteral extends Literal<IDateRepresentation> {\n public constructor(\n public override typedValue: IDateRepresentation,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DATE, strValue);\n }\n\n public override str(): string {\n return serializeDate(this.typedValue);\n }\n}\n\nexport class DurationLiteral extends Literal<Partial<IDurationRepresentation>> {\n public constructor(\n public override typedValue: Partial<IDurationRepresentation>,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue);\n }\n}\n\nexport class DayTimeDurationLiteral extends DurationLiteral {\n public constructor(\n public override typedValue: Partial<IDurationRepresentation>,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, strValue, dataType ?? TypeURL.XSD_DAY_TIME_DURATION);\n }\n}\n\nexport class YearMonthDurationLiteral extends Literal<Partial<IYearMonthDurationRepresentation>> {\n public constructor(\n public override typedValue: Partial<IYearMonthDurationRepresentation>,\n public override strValue?: string,\n dataType?: string,\n ) {\n super(typedValue, dataType ?? TypeURL.XSD_YEAR_MONTH_DURATION, strValue);\n }\n\n public override str(): string {\n return serializeDuration(this.typedValue, 'P0M');\n }\n}\n\n/**\n * This class is used when a literal is parsed, and it's value is\n * an invalid lexical form for it's datatype. The spec defines value with\n * invalid lexical form are still valid terms, and as such we can not error\n * immediately. This class makes sure that the typedValue will remain undefined,\n * and the category 'nonlexical'. This way, only when operators apply to the\n * 'nonlexical' category, they will keep working, otherwise they will throw a\n * type error.\n * This seems to match the spec, except maybe for functions that accept\n * non-lexical values for their datatype.\n *\n * See:\n * - https://www.w3.org/TR/xquery/#dt-type-error\n * - https://www.w3.org/TR/rdf-concepts/#section-Literal-Value\n * - https://www.w3.org/TR/xquery/#dt-ebv\n * - ... some other more precise thing i can't find...\n */\nexport class NonLexicalLiteral extends Literal<{ toString: () => 'undefined' }> {\n public constructor(\n typedValue: undefined,\n dataType: string,\n private readonly openWorldType: ISuperTypeProvider,\n strValue?: string,\n language?: string,\n ) {\n super({ toString: () => 'undefined' }, dataType, strValue, language);\n }\n\n public override coerceEBV(): boolean {\n // Always throws in [SPARQL 1.2](https://www.w3.org/TR/sparql12-query/#ebv),\n // and sometimes throws in [1.1](https://www.w3.org/TR/sparql11-query/#ebv)\n return super.coerceEBV();\n }\n\n public override toRDF(dataFactory: ComunicaDataFactory): RDF.Literal {\n return dataFactory.literal(\n this.str(),\n this.language ?? dataFactory.namedNode(this.dataType),\n );\n }\n\n public override str(): string {\n return this.strValue ?? '';\n }\n}\n\nexport function isNonLexicalLiteral(lit: Literal<any>): NonLexicalLiteral | undefined {\n if (lit instanceof NonLexicalLiteral) {\n return lit;\n }\n return undefined;\n}\n"]}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -38,6 +38,7 @@ export declare class Builder {
38
38
  onString1(op: (expressionEvaluator: IInternalEvaluator) => (lit: E.Literal<string>) => Term, addInvalidHandling?: boolean): Builder;
39
39
  onString1Typed(op: (expressionEvaluator: IInternalEvaluator) => (lit: string) => Term, addInvalidHandling?: boolean): Builder;
40
40
  onLangString1(op: (expressionEvaluator: IInternalEvaluator) => (lit: E.LangStringLiteral) => Term, addInvalidHandling?: boolean): Builder;
41
+ onDirLangString1(op: (expressionEvaluator: IInternalEvaluator) => (lit: E.DirLangStringLiteral) => Term, addInvalidHandling?: boolean): Builder;
41
42
  onStringly1(op: (expressionEvaluator: IInternalEvaluator) => (lit: E.Literal<string>) => Term, addInvalidHandling?: boolean): Builder;
42
43
  onStringly1Typed(op: (expressionEvaluator: IInternalEvaluator) => (lit: string) => Term, addInvalidHandling?: boolean): Builder;
43
44
  onNumeric1(op: (expressionEvaluator: IInternalEvaluator) => (val: E.NumericLiteral) => Term, addInvalidHandling?: boolean): Builder;
@@ -76,6 +77,7 @@ export declare function float(num: number): E.FloatLiteral;
76
77
  export declare function double(num: number): E.DoubleLiteral;
77
78
  export declare function string(str: string): E.StringLiteral;
78
79
  export declare function langString(str: string, lang: string): E.LangStringLiteral;
80
+ export declare function dirLangString(str: string, lang: string, direction: 'ltr' | 'rtl'): E.DirLangStringLiteral;
79
81
  export declare function dateTime(date: IDateTimeRepresentation, str: string): E.DateTimeLiteral;
80
82
  export declare function expressionToVar(dataFactory: ComunicaDataFactory, variableExpression: VariableExpression): RDF.Variable;
81
83
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.expressionToVar = exports.dateTime = exports.langString = exports.string = exports.double = exports.float = exports.decimal = exports.integer = exports.bool = exports.Builder = exports.declare = void 0;
3
+ exports.expressionToVar = exports.dateTime = exports.dirLangString = exports.langString = exports.string = exports.double = exports.float = exports.decimal = exports.integer = exports.bool = exports.Builder = exports.declare = void 0;
4
4
  /**
5
5
  * These helpers provide a (albeit inflexible) DSL for writing function
6
6
  * definitions for the SPARQL functions.
@@ -98,6 +98,9 @@ class Builder {
98
98
  onLangString1(op, addInvalidHandling = true) {
99
99
  return this.set([C.TypeURL.RDF_LANG_STRING], expressionEvaluator => ([lit]) => op(expressionEvaluator)(lit), addInvalidHandling);
100
100
  }
101
+ onDirLangString1(op, addInvalidHandling = true) {
102
+ return this.set([C.TypeURL.RDF_DIR_LANG_STRING], expressionEvaluator => ([lit]) => op(expressionEvaluator)(lit), addInvalidHandling);
103
+ }
101
104
  onStringly1(op, addInvalidHandling = true) {
102
105
  return this.set([C.TypeAlias.SPARQL_STRINGLY], expressionEvaluator => ([lit]) => op(expressionEvaluator)(lit), addInvalidHandling);
103
106
  }
@@ -207,6 +210,10 @@ function langString(str, lang) {
207
210
  return new E.LangStringLiteral(str, lang);
208
211
  }
209
212
  exports.langString = langString;
213
+ function dirLangString(str, lang, direction) {
214
+ return new E.DirLangStringLiteral(str, lang, direction);
215
+ }
216
+ exports.dirLangString = dirLangString;
210
217
  function dateTime(date, str) {
211
218
  return new E.DateTimeLiteral(date, str);
212
219
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Helpers.js","sourceRoot":"","sources":["Helpers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * These helpers provide a (albeit inflexible) DSL for writing function\n * definitions for the SPARQL functions.\n */\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type {\n ComunicaDataFactory,\n IDateTimeRepresentation,\n IInternalEvaluator,\n ImplementationFunction,\n ImplementationFunctionTuple,\n TermExpression,\n VariableExpression,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { ISerializable, Literal, Quad } from '../expressions';\nimport * as E from '../expressions';\nimport { NonLexicalLiteral } from '../expressions';\nimport * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport type {\n ArgumentType,\n} from './OverloadTree';\nimport { OverloadTree } from './OverloadTree';\n\ntype Term = TermExpression;\n\nexport function declare(identifier: string): Builder {\n return new Builder(identifier);\n}\n\nexport class Builder {\n private readonly overloadTree: OverloadTree;\n private collected: boolean;\n\n public constructor(identifier: string) {\n this.overloadTree = new OverloadTree(identifier);\n this.collected = false;\n }\n\n public collect(): OverloadTree {\n if (this.collected) {\n // Only 1 time allowed because we can't copy a tree. (And we don't need this).\n throw new Error('Builders can only be collected once!');\n }\n this.collected = true;\n return this.overloadTree;\n }\n\n private static wrapInvalidLexicalProtected(func: ImplementationFunction): ImplementationFunction {\n return (expressionEvaluator: IInternalEvaluator) => (args: TermExpression[]) => {\n for (const [ index, arg ] of args.entries()) {\n if (arg instanceof NonLexicalLiteral) {\n throw new Err.InvalidLexicalForm(\n args[index].toRDF(expressionEvaluator.context.getSafe(KeysInitQuery.dataFactory)),\n );\n }\n }\n return func(expressionEvaluator)(args);\n };\n }\n\n public set(\n argTypes: [],\n func: ImplementationFunctionTuple<[]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<T1 extends TermExpression>(\n argTypes: [ArgumentType],\n func: ImplementationFunctionTuple<[T1]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<T1 extends TermExpression, T2 extends TermExpression>(\n argTypes: [ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<T1 extends TermExpression, T2 extends TermExpression, T3 extends TermExpression>(\n argTypes: [ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<\n T1 extends TermExpression,\n T2 extends TermExpression,\n T3 extends TermExpression,\n T4 extends TermExpression,\n >(\n argTypes: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3, T4]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling?: boolean): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling = true): Builder {\n this.overloadTree.addOverload(argTypes, addInvalidHandling ? Builder.wrapInvalidLexicalProtected(func) : func);\n return this;\n }\n\n public copy({ from, to }: { from: ArgumentType[]; to: ArgumentType[] }): Builder {\n const impl = this.overloadTree.getImplementationExact(from);\n if (!impl) {\n throw new Err.UnexpectedError(\n 'Tried to copy implementation, but types not found',\n { from, to },\n );\n }\n return this.set(to, impl);\n }\n\n public onUnary<T extends Term>(type: ArgumentType, op: (expressionEvaluator: IInternalEvaluator) =>\n (val: T) => Term, addInvalidHandling = true): Builder {\n return this.set([ type ], expressionEvaluator =>\n ([ val ]: [T]) => op(expressionEvaluator)(val), addInvalidHandling);\n }\n\n public onUnaryTyped<T extends ISerializable>(\n type: ArgumentType,\n op: (expressionEvaluator: IInternalEvaluator) => (val: T) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set([ type ], expressionEvaluator => ([ val ]: [E.Literal<T>]) =>\n op(expressionEvaluator)(val.typedValue), addInvalidHandling);\n }\n\n public onBinary<L extends Term, R extends Term>(\n types: [ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ):\n Builder {\n return this.set(types, expressionEvaluator =>\n ([ left, right ]: [L, R]) => op(expressionEvaluator)(left, right), addInvalidHandling);\n }\n\n public onBinaryTyped<L extends ISerializable, R extends ISerializable>(\n types: [ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ):\n Builder {\n return this.set(\n types,\n expressionEvaluator =>\n ([ left, right ]: [E.Literal<L>, E.Literal<R>]) => op(expressionEvaluator)(left.typedValue, right.typedValue),\n addInvalidHandling,\n );\n }\n\n public onTernaryTyped<A1 extends ISerializable, A2 extends ISerializable, A3 extends ISerializable>(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator)\n => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, expressionEvaluator => ([ a1, a2, a3 ]: [E.Literal<A1>, E.Literal<A2>, E.Literal<A3>]) =>\n op(expressionEvaluator)(a1.typedValue, a2.typedValue, a3.typedValue), addInvalidHandling);\n }\n\n public onTernary<A1 extends Term, A2 extends Term, A3 extends Term>(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator) =>\n (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, expressionEvaluator =>\n ([ a1, a2, a3 ]: [A1, A2, A3]) => op(expressionEvaluator)(a1, a2, a3), addInvalidHandling);\n }\n\n public onQuaternaryTyped<\n A1 extends ISerializable,\nA2 extends ISerializable,\nA3 extends ISerializable,\nA4 extends ISerializable,\n>(\n types: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator) => (a1: A1, a2: A2, a3: A3, a4: A4) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, expressionEvaluator =>\n ([ a1, a2, a3, a4 ]: [E.Literal<A1>, E.Literal<A2>, E.Literal<A3>, E.Literal<A4>]) =>\n op(expressionEvaluator)(a1.typedValue, a2.typedValue, a3.typedValue, a4.typedValue), addInvalidHandling);\n }\n\n public onTerm1<T extends Term>(\n op: (expressionEvaluator: IInternalEvaluator) =>\n (term: T) => Term,\naddInvalidHandling = false,\n ): Builder {\n return this.set(\n [ 'term' ],\n expressionEvaluator => ([ term ]: [T]) => op(expressionEvaluator)(term),\n addInvalidHandling,\n );\n }\n\n public onTerm3(op: (expressionEvaluator: IInternalEvaluator) => (t1: Term, t2: Term, t3: Term) => Term):\n Builder {\n return this.set(\n [ 'term', 'term', 'term' ],\n expressionEvaluator => ([ t1, t2, t3 ]: [Term, Term, Term]) => op(expressionEvaluator)(t1, t2, t3),\n );\n }\n\n public onQuad1(op: (expressionEvaluator: IInternalEvaluator) => (term: Term & Quad) => Term): Builder {\n return this.set([ 'quad' ], expressionEvaluator => ([ term ]: [Term & Quad]) => op(expressionEvaluator)(term));\n }\n\n public onLiteral1<T extends ISerializable>(\n op: (expressionEvaluator: IInternalEvaluator) =>\n (lit: E.Literal<T>) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ 'literal' ],\n expressionEvaluator => ([ term ]: [E.Literal<T>]) => op(expressionEvaluator)(term),\n addInvalidHandling,\n );\n }\n\n public onBoolean1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.BooleanLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n expressionEvaluator => ([ lit ]: [E.BooleanLiteral]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onBoolean1Typed(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: boolean) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n expressionEvaluator => ([ lit ]: [E.BooleanLiteral]) => op(expressionEvaluator)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onString1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.Literal<string>) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n expressionEvaluator => ([ lit ]: [E.Literal<string>]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onString1Typed(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n expressionEvaluator => ([ lit ]: [E.Literal<string>]) => op(expressionEvaluator)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onLangString1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.LangStringLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.RDF_LANG_STRING ],\n expressionEvaluator => ([ lit ]: [E.LangStringLiteral]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.Literal<string>) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n expressionEvaluator => ([ lit ]: [E.Literal<string>]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1Typed(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n expressionEvaluator => ([ lit ]: [E.Literal<string>]) => op(expressionEvaluator)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onNumeric1(\n op: (expressionEvaluator: IInternalEvaluator) => (val: E.NumericLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_NUMERIC ],\n expressionEvaluator => ([ val ]: [E.NumericLiteral]) => op(expressionEvaluator)(val),\n addInvalidHandling,\n );\n }\n\n public onDateTime1(\n op: (expressionEvaluator: IInternalEvaluator) => (date: E.DateTimeLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME ],\n expressionEvaluator => ([ val ]: [E.DateTimeLiteral]) => op(expressionEvaluator)(val),\n addInvalidHandling,\n );\n }\n\n /**\n * We return the base types and not the provided types because we don't want to create invalid terms.\n * Providing negative number to a function unary - for example should not\n * return a term of type negative number having a positive value.\n * @param op the numeric operator performed\n * @param addInvalidHandling whether to add invalid handling,\n * whether to add @param op in @see wrapInvalidLexicalProtected\n */\n public numericConverter(\n op: (expressionEvaluator: IInternalEvaluator) => (val: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (expressionEvaluator: IInternalEvaluator) => (arg: Term): number =>\n op(expressionEvaluator)((<Literal<number>>arg).typedValue);\n return this.onUnary(TypeURL.XSD_INTEGER, expressionEvaluator => arg =>\n integer(evalHelper(expressionEvaluator)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DECIMAL, expressionEvaluator => arg =>\n decimal(evalHelper(expressionEvaluator)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_FLOAT, expressionEvaluator => arg =>\n float(evalHelper(expressionEvaluator)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DOUBLE, expressionEvaluator => arg =>\n double(evalHelper(expressionEvaluator)(arg)), addInvalidHandling);\n }\n\n /**\n * !!! Be aware when using this function, it will create different overloads with different return types !!!\n * Arithmetic operators take 2 numeric arguments, and return a single numerical\n * value. The type of the return value is heavily dependent on the types of the\n * input arguments. In JS everything is a double, but in SPARQL it is not.\n *\n * The different arguments are handled by type promotion and subtype substitution.\n * The way numeric function arguments work is described here:\n * https://www.w3.org/TR/xpath20/#mapping\n * Above url is referenced in the sparql spec: https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\n public arithmetic(\n op: (expressionEvaluator: IInternalEvaluator) => (left: number, right: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (expressionEvaluator: IInternalEvaluator) => (left: Term, right: Term): number =>\n op(expressionEvaluator)((<Literal<number>>left).typedValue, (<Literal<number>>right).typedValue);\n return this.onBinary([ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ], expressionEvaluator => (left, right) =>\n integer(evalHelper(expressionEvaluator)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DECIMAL, TypeURL.XSD_DECIMAL ], expressionEvaluator => (left, right) =>\n decimal(evalHelper(expressionEvaluator)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_FLOAT, TypeURL.XSD_FLOAT ], expressionEvaluator => (left, right) =>\n float(evalHelper(expressionEvaluator)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DOUBLE, TypeURL.XSD_DOUBLE ], expressionEvaluator => (left, right) =>\n double(evalHelper(expressionEvaluator)(left, right)), addInvalidHandling);\n }\n\n public numberTest(\n test: (expressionEvaluator: IInternalEvaluator) => (left: number, right: number) => boolean,\n ): Builder {\n return this.numeric(expressionEvaluator => ([ left, right ]: E.NumericLiteral[]) => {\n const result = test(expressionEvaluator)(left.typedValue, right.typedValue);\n return bool(result);\n });\n }\n\n public stringTest(\n test: (expressionEvaluator: IInternalEvaluator) => (left: string, right: string) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_STRING, C.TypeURL.XSD_STRING ],\n expressionEvaluator => ([ left, right ]: E.StringLiteral[]) => {\n const result = test(expressionEvaluator)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public booleanTest(\n test: (expressionEvaluator: IInternalEvaluator) => (left: boolean, right: boolean) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_BOOLEAN, C.TypeURL.XSD_BOOLEAN ],\n expressionEvaluator => ([ left, right ]: E.BooleanLiteral[]) => {\n const result = test(expressionEvaluator)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public dateTimeTest(test: (expressionEvaluator: IInternalEvaluator)\n => (left: IDateTimeRepresentation, right: IDateTimeRepresentation) => boolean, addInvalidHandling = true): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME, C.TypeURL.XSD_DATE_TIME ],\n expressionEvaluator => ([ left, right ]: E.DateTimeLiteral[]) => {\n const result = test(expressionEvaluator)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public numeric<T extends TermExpression>(op: ImplementationFunctionTuple<[T, T]>): Builder {\n return this.set([ C.TypeAlias.SPARQL_NUMERIC, C.TypeAlias.SPARQL_NUMERIC ], op);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Literal Construction helpers\n// ----------------------------------------------------------------------------\n\nexport function bool(val: boolean): E.BooleanLiteral {\n return new E.BooleanLiteral(val);\n}\n\nexport function integer(num: number): E.IntegerLiteral {\n return new E.IntegerLiteral(num);\n}\n\nexport function decimal(num: number): E.DecimalLiteral {\n return new E.DecimalLiteral(num);\n}\n\nexport function float(num: number): E.FloatLiteral {\n return new E.FloatLiteral(num);\n}\n\nexport function double(num: number): E.DoubleLiteral {\n return new E.DoubleLiteral(num);\n}\n\nexport function string(str: string): E.StringLiteral {\n return new E.StringLiteral(str);\n}\n\nexport function langString(str: string, lang: string): E.LangStringLiteral {\n return new E.LangStringLiteral(str, lang);\n}\n\nexport function dateTime(date: IDateTimeRepresentation, str: string): E.DateTimeLiteral {\n return new E.DateTimeLiteral(date, str);\n}\n\nexport function expressionToVar(\n dataFactory: ComunicaDataFactory,\n variableExpression: VariableExpression,\n): RDF.Variable {\n return dataFactory.variable(variableExpression.name.slice(1));\n}\n"]}
1
+ {"version":3,"file":"Helpers.js","sourceRoot":"","sources":["Helpers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * These helpers provide a (albeit inflexible) DSL for writing function\n * definitions for the SPARQL functions.\n */\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type {\n ComunicaDataFactory,\n IDateTimeRepresentation,\n IInternalEvaluator,\n ImplementationFunction,\n ImplementationFunctionTuple,\n TermExpression,\n VariableExpression,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { ISerializable, Literal, Quad } from '../expressions';\nimport * as E from '../expressions';\nimport { NonLexicalLiteral } from '../expressions';\nimport * as C from '../util/Consts';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport type {\n ArgumentType,\n} from './OverloadTree';\nimport { OverloadTree } from './OverloadTree';\n\ntype Term = TermExpression;\n\nexport function declare(identifier: string): Builder {\n return new Builder(identifier);\n}\n\nexport class Builder {\n private readonly overloadTree: OverloadTree;\n private collected: boolean;\n\n public constructor(identifier: string) {\n this.overloadTree = new OverloadTree(identifier);\n this.collected = false;\n }\n\n public collect(): OverloadTree {\n if (this.collected) {\n // Only 1 time allowed because we can't copy a tree. (And we don't need this).\n throw new Error('Builders can only be collected once!');\n }\n this.collected = true;\n return this.overloadTree;\n }\n\n private static wrapInvalidLexicalProtected(func: ImplementationFunction): ImplementationFunction {\n return (expressionEvaluator: IInternalEvaluator) => (args: TermExpression[]) => {\n for (const [ index, arg ] of args.entries()) {\n if (arg instanceof NonLexicalLiteral) {\n throw new Err.InvalidLexicalForm(\n args[index].toRDF(expressionEvaluator.context.getSafe(KeysInitQuery.dataFactory)),\n );\n }\n }\n return func(expressionEvaluator)(args);\n };\n }\n\n public set(\n argTypes: [],\n func: ImplementationFunctionTuple<[]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<T1 extends TermExpression>(\n argTypes: [ArgumentType],\n func: ImplementationFunctionTuple<[T1]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<T1 extends TermExpression, T2 extends TermExpression>(\n argTypes: [ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<T1 extends TermExpression, T2 extends TermExpression, T3 extends TermExpression>(\n argTypes: [ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set<\n T1 extends TermExpression,\n T2 extends TermExpression,\n T3 extends TermExpression,\n T4 extends TermExpression,\n >(\n argTypes: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n func: ImplementationFunctionTuple<[T1, T2, T3, T4]>,\n addInvalidHandling?: boolean,\n ): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling?: boolean): Builder;\n public set(argTypes: ArgumentType[], func: ImplementationFunction, addInvalidHandling = true): Builder {\n this.overloadTree.addOverload(argTypes, addInvalidHandling ? Builder.wrapInvalidLexicalProtected(func) : func);\n return this;\n }\n\n public copy({ from, to }: { from: ArgumentType[]; to: ArgumentType[] }): Builder {\n const impl = this.overloadTree.getImplementationExact(from);\n if (!impl) {\n throw new Err.UnexpectedError(\n 'Tried to copy implementation, but types not found',\n { from, to },\n );\n }\n return this.set(to, impl);\n }\n\n public onUnary<T extends Term>(type: ArgumentType, op: (expressionEvaluator: IInternalEvaluator) =>\n (val: T) => Term, addInvalidHandling = true): Builder {\n return this.set([ type ], expressionEvaluator =>\n ([ val ]: [T]) => op(expressionEvaluator)(val), addInvalidHandling);\n }\n\n public onUnaryTyped<T extends ISerializable>(\n type: ArgumentType,\n op: (expressionEvaluator: IInternalEvaluator) => (val: T) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set([ type ], expressionEvaluator => ([ val ]: [E.Literal<T>]) =>\n op(expressionEvaluator)(val.typedValue), addInvalidHandling);\n }\n\n public onBinary<L extends Term, R extends Term>(\n types: [ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ):\n Builder {\n return this.set(types, expressionEvaluator =>\n ([ left, right ]: [L, R]) => op(expressionEvaluator)(left, right), addInvalidHandling);\n }\n\n public onBinaryTyped<L extends ISerializable, R extends ISerializable>(\n types: [ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator) => (left: L, right: R) => Term,\naddInvalidHandling = true,\n ):\n Builder {\n return this.set(\n types,\n expressionEvaluator =>\n ([ left, right ]: [E.Literal<L>, E.Literal<R>]) => op(expressionEvaluator)(left.typedValue, right.typedValue),\n addInvalidHandling,\n );\n }\n\n public onTernaryTyped<A1 extends ISerializable, A2 extends ISerializable, A3 extends ISerializable>(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator)\n => (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, expressionEvaluator => ([ a1, a2, a3 ]: [E.Literal<A1>, E.Literal<A2>, E.Literal<A3>]) =>\n op(expressionEvaluator)(a1.typedValue, a2.typedValue, a3.typedValue), addInvalidHandling);\n }\n\n public onTernary<A1 extends Term, A2 extends Term, A3 extends Term>(\n types: [ArgumentType, ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator) =>\n (a1: A1, a2: A2, a3: A3) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, expressionEvaluator =>\n ([ a1, a2, a3 ]: [A1, A2, A3]) => op(expressionEvaluator)(a1, a2, a3), addInvalidHandling);\n }\n\n public onQuaternaryTyped<\n A1 extends ISerializable,\nA2 extends ISerializable,\nA3 extends ISerializable,\nA4 extends ISerializable,\n>(\n types: [ArgumentType, ArgumentType, ArgumentType, ArgumentType],\n op: (expressionEvaluator: IInternalEvaluator) => (a1: A1, a2: A2, a3: A3, a4: A4) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(types, expressionEvaluator =>\n ([ a1, a2, a3, a4 ]: [E.Literal<A1>, E.Literal<A2>, E.Literal<A3>, E.Literal<A4>]) =>\n op(expressionEvaluator)(a1.typedValue, a2.typedValue, a3.typedValue, a4.typedValue), addInvalidHandling);\n }\n\n public onTerm1<T extends Term>(\n op: (expressionEvaluator: IInternalEvaluator) =>\n (term: T) => Term,\naddInvalidHandling = false,\n ): Builder {\n return this.set(\n [ 'term' ],\n expressionEvaluator => ([ term ]: [T]) => op(expressionEvaluator)(term),\n addInvalidHandling,\n );\n }\n\n public onTerm3(op: (expressionEvaluator: IInternalEvaluator) => (t1: Term, t2: Term, t3: Term) => Term):\n Builder {\n return this.set(\n [ 'term', 'term', 'term' ],\n expressionEvaluator => ([ t1, t2, t3 ]: [Term, Term, Term]) => op(expressionEvaluator)(t1, t2, t3),\n );\n }\n\n public onQuad1(op: (expressionEvaluator: IInternalEvaluator) => (term: Term & Quad) => Term): Builder {\n return this.set([ 'quad' ], expressionEvaluator => ([ term ]: [Term & Quad]) => op(expressionEvaluator)(term));\n }\n\n public onLiteral1<T extends ISerializable>(\n op: (expressionEvaluator: IInternalEvaluator) =>\n (lit: E.Literal<T>) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ 'literal' ],\n expressionEvaluator => ([ term ]: [E.Literal<T>]) => op(expressionEvaluator)(term),\n addInvalidHandling,\n );\n }\n\n public onBoolean1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.BooleanLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n expressionEvaluator => ([ lit ]: [E.BooleanLiteral]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onBoolean1Typed(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: boolean) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_BOOLEAN ],\n expressionEvaluator => ([ lit ]: [E.BooleanLiteral]) => op(expressionEvaluator)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onString1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.Literal<string>) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n expressionEvaluator => ([ lit ]: [E.Literal<string>]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onString1Typed(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.XSD_STRING ],\n expressionEvaluator => ([ lit ]: [E.Literal<string>]) => op(expressionEvaluator)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onLangString1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.LangStringLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.RDF_LANG_STRING ],\n expressionEvaluator => ([ lit ]: [E.LangStringLiteral]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onDirLangString1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.DirLangStringLiteral) => Term,\n addInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeURL.RDF_DIR_LANG_STRING ],\n expressionEvaluator => ([ lit ]: [E.DirLangStringLiteral]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: E.Literal<string>) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n expressionEvaluator => ([ lit ]: [E.Literal<string>]) => op(expressionEvaluator)(lit),\n addInvalidHandling,\n );\n }\n\n public onStringly1Typed(\n op: (expressionEvaluator: IInternalEvaluator) => (lit: string) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY ],\n expressionEvaluator => ([ lit ]: [E.Literal<string>]) => op(expressionEvaluator)(lit.typedValue),\n addInvalidHandling,\n );\n }\n\n public onNumeric1(\n op: (expressionEvaluator: IInternalEvaluator) => (val: E.NumericLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_NUMERIC ],\n expressionEvaluator => ([ val ]: [E.NumericLiteral]) => op(expressionEvaluator)(val),\n addInvalidHandling,\n );\n }\n\n public onDateTime1(\n op: (expressionEvaluator: IInternalEvaluator) => (date: E.DateTimeLiteral) => Term,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME ],\n expressionEvaluator => ([ val ]: [E.DateTimeLiteral]) => op(expressionEvaluator)(val),\n addInvalidHandling,\n );\n }\n\n /**\n * We return the base types and not the provided types because we don't want to create invalid terms.\n * Providing negative number to a function unary - for example should not\n * return a term of type negative number having a positive value.\n * @param op the numeric operator performed\n * @param addInvalidHandling whether to add invalid handling,\n * whether to add @param op in @see wrapInvalidLexicalProtected\n */\n public numericConverter(\n op: (expressionEvaluator: IInternalEvaluator) => (val: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (expressionEvaluator: IInternalEvaluator) => (arg: Term): number =>\n op(expressionEvaluator)((<Literal<number>>arg).typedValue);\n return this.onUnary(TypeURL.XSD_INTEGER, expressionEvaluator => arg =>\n integer(evalHelper(expressionEvaluator)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DECIMAL, expressionEvaluator => arg =>\n decimal(evalHelper(expressionEvaluator)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_FLOAT, expressionEvaluator => arg =>\n float(evalHelper(expressionEvaluator)(arg)), addInvalidHandling)\n .onUnary(TypeURL.XSD_DOUBLE, expressionEvaluator => arg =>\n double(evalHelper(expressionEvaluator)(arg)), addInvalidHandling);\n }\n\n /**\n * !!! Be aware when using this function, it will create different overloads with different return types !!!\n * Arithmetic operators take 2 numeric arguments, and return a single numerical\n * value. The type of the return value is heavily dependent on the types of the\n * input arguments. In JS everything is a double, but in SPARQL it is not.\n *\n * The different arguments are handled by type promotion and subtype substitution.\n * The way numeric function arguments work is described here:\n * https://www.w3.org/TR/xpath20/#mapping\n * Above url is referenced in the sparql spec: https://www.w3.org/TR/sparql11-query/#OperatorMapping\n */\n public arithmetic(\n op: (expressionEvaluator: IInternalEvaluator) => (left: number, right: number) => number,\naddInvalidHandling = true,\n ): Builder {\n const evalHelper = (expressionEvaluator: IInternalEvaluator) => (left: Term, right: Term): number =>\n op(expressionEvaluator)((<Literal<number>>left).typedValue, (<Literal<number>>right).typedValue);\n return this.onBinary([ TypeURL.XSD_INTEGER, TypeURL.XSD_INTEGER ], expressionEvaluator => (left, right) =>\n integer(evalHelper(expressionEvaluator)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DECIMAL, TypeURL.XSD_DECIMAL ], expressionEvaluator => (left, right) =>\n decimal(evalHelper(expressionEvaluator)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_FLOAT, TypeURL.XSD_FLOAT ], expressionEvaluator => (left, right) =>\n float(evalHelper(expressionEvaluator)(left, right)), addInvalidHandling)\n .onBinary([ TypeURL.XSD_DOUBLE, TypeURL.XSD_DOUBLE ], expressionEvaluator => (left, right) =>\n double(evalHelper(expressionEvaluator)(left, right)), addInvalidHandling);\n }\n\n public numberTest(\n test: (expressionEvaluator: IInternalEvaluator) => (left: number, right: number) => boolean,\n ): Builder {\n return this.numeric(expressionEvaluator => ([ left, right ]: E.NumericLiteral[]) => {\n const result = test(expressionEvaluator)(left.typedValue, right.typedValue);\n return bool(result);\n });\n }\n\n public stringTest(\n test: (expressionEvaluator: IInternalEvaluator) => (left: string, right: string) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_STRING, C.TypeURL.XSD_STRING ],\n expressionEvaluator => ([ left, right ]: E.StringLiteral[]) => {\n const result = test(expressionEvaluator)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public booleanTest(\n test: (expressionEvaluator: IInternalEvaluator) => (left: boolean, right: boolean) => boolean,\naddInvalidHandling = true,\n ): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_BOOLEAN, C.TypeURL.XSD_BOOLEAN ],\n expressionEvaluator => ([ left, right ]: E.BooleanLiteral[]) => {\n const result = test(expressionEvaluator)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public dateTimeTest(test: (expressionEvaluator: IInternalEvaluator)\n => (left: IDateTimeRepresentation, right: IDateTimeRepresentation) => boolean, addInvalidHandling = true): Builder {\n return this\n .set(\n [ C.TypeURL.XSD_DATE_TIME, C.TypeURL.XSD_DATE_TIME ],\n expressionEvaluator => ([ left, right ]: E.DateTimeLiteral[]) => {\n const result = test(expressionEvaluator)(left.typedValue, right.typedValue);\n return bool(result);\n },\n addInvalidHandling,\n );\n }\n\n public numeric<T extends TermExpression>(op: ImplementationFunctionTuple<[T, T]>): Builder {\n return this.set([ C.TypeAlias.SPARQL_NUMERIC, C.TypeAlias.SPARQL_NUMERIC ], op);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Literal Construction helpers\n// ----------------------------------------------------------------------------\n\nexport function bool(val: boolean): E.BooleanLiteral {\n return new E.BooleanLiteral(val);\n}\n\nexport function integer(num: number): E.IntegerLiteral {\n return new E.IntegerLiteral(num);\n}\n\nexport function decimal(num: number): E.DecimalLiteral {\n return new E.DecimalLiteral(num);\n}\n\nexport function float(num: number): E.FloatLiteral {\n return new E.FloatLiteral(num);\n}\n\nexport function double(num: number): E.DoubleLiteral {\n return new E.DoubleLiteral(num);\n}\n\nexport function string(str: string): E.StringLiteral {\n return new E.StringLiteral(str);\n}\n\nexport function langString(str: string, lang: string): E.LangStringLiteral {\n return new E.LangStringLiteral(str, lang);\n}\n\nexport function dirLangString(str: string, lang: string, direction: 'ltr' | 'rtl'): E.DirLangStringLiteral {\n return new E.DirLangStringLiteral(str, lang, direction);\n}\n\nexport function dateTime(date: IDateTimeRepresentation, str: string): E.DateTimeLiteral {\n return new E.DateTimeLiteral(date, str);\n}\n\nexport function expressionToVar(\n dataFactory: ComunicaDataFactory,\n variableExpression: VariableExpression,\n): RDF.Variable {\n return dataFactory.variable(variableExpression.name.slice(1));\n}\n"]}
File without changes
File without changes
File without changes
package/lib/index.d.ts CHANGED
File without changes
package/lib/index.js CHANGED
File without changes
package/lib/index.js.map CHANGED
File without changes
@@ -1,6 +1,6 @@
1
1
  import type { Expression, ISuperTypeProvider } from '@comunica/types';
2
+ import { Algebra } from '@comunica/utils-algebra';
2
3
  import type * as RDF from '@rdfjs/types';
3
- import type { Algebra as Alg } from 'sparqlalgebrajs';
4
4
  import * as E from '../expressions';
5
5
  export interface ITermTransformer {
6
6
  transformRDFTermUnsafe: (term: RDF.Term) => E.Term;
@@ -16,7 +16,7 @@ export declare class TermTransformer implements ITermTransformer {
16
16
  * @param term RDF term to transform into internal representation of a term
17
17
  */
18
18
  transformRDFTermUnsafe(term: RDF.Term): E.Term;
19
- protected transformTerm(term: Alg.TermExpression): Expression;
19
+ protected transformTerm(term: Algebra.TermExpression): Expression;
20
20
  /**
21
21
  * @param lit the rdf literal we want to transform to an internal Literal expression.
22
22
  */
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TermTransformer = void 0;
4
+ const utils_algebra_1 = require("@comunica/utils-algebra");
4
5
  const RDFString = require("rdf-string");
5
- const sparqlalgebrajs_1 = require("sparqlalgebrajs");
6
6
  const E = require("../expressions");
7
7
  const Consts_1 = require("../util/Consts");
8
8
  const Err = require("../util/Errors");
@@ -23,8 +23,8 @@ class TermTransformer {
23
23
  transformRDFTermUnsafe(term) {
24
24
  return this.transformTerm({
25
25
  term,
26
- type: sparqlalgebrajs_1.Algebra.types.EXPRESSION,
27
- expressionType: sparqlalgebrajs_1.Algebra.expressionTypes.TERM,
26
+ type: utils_algebra_1.Algebra.Types.EXPRESSION,
27
+ subType: utils_algebra_1.Algebra.ExpressionTypes.TERM,
28
28
  });
29
29
  }
30
30
  transformTerm(term) {
@@ -68,6 +68,9 @@ class TermTransformer {
68
68
  if (Consts_1.TypeURL.RDF_LANG_STRING in superTypeDict) {
69
69
  return new E.LangStringLiteral(lit.value, lit.language);
70
70
  }
71
+ if (Consts_1.TypeURL.RDF_DIR_LANG_STRING in superTypeDict) {
72
+ return new E.DirLangStringLiteral(lit.value, lit.language, lit.direction);
73
+ }
71
74
  if (Consts_1.TypeURL.XSD_YEAR_MONTH_DURATION in superTypeDict) {
72
75
  return new E.YearMonthDurationLiteral((0, Parsing_1.parseYearMonthDuration)(lit.value), lit.value, dataType);
73
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TermTransformer.js","sourceRoot":"","sources":["TermTransformer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Expression, GeneralSuperTypeDict, ISuperTypeProvider } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport * as RDFString from 'rdf-string';\nimport type { Algebra as Alg } from 'sparqlalgebrajs';\nimport { Algebra } from 'sparqlalgebrajs';\nimport * as E from '../expressions';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { isExpressionError } from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n} from '../util/Parsing';\nimport * as P from '../util/Parsing';\nimport { getSuperTypeDict } from '../util/TypeHandling';\n\nexport interface ITermTransformer {\n transformRDFTermUnsafe: (term: RDF.Term) => E.Term;\n transformLiteral: (lit: RDF.Literal) => E.Literal<any>;\n}\n\nexport class TermTransformer implements ITermTransformer {\n public constructor(protected readonly superTypeProvider: ISuperTypeProvider) {}\n\n /**\n * Transforms an RDF term to the internal representation of a term,\n * assuming it is not a variable, which would be an expression (internally).\n *\n * @param term RDF term to transform into internal representation of a term\n */\n public transformRDFTermUnsafe(term: RDF.Term): E.Term {\n return <E.Term> this.transformTerm({\n term,\n type: Algebra.types.EXPRESSION,\n expressionType: Algebra.expressionTypes.TERM,\n });\n }\n\n protected transformTerm(term: Alg.TermExpression): Expression {\n if (!term.term) {\n throw new Err.InvalidExpression(term);\n }\n\n switch (term.term.termType) {\n case 'Variable':\n return new E.Variable(RDFString.termToString(term.term));\n case 'Literal':\n return this.transformLiteral(term.term);\n case 'NamedNode':\n return new E.NamedNode(term.term.value);\n case 'BlankNode':\n return new E.BlankNode(term.term.value);\n case 'Quad':\n return new E.Quad(\n this.transformRDFTermUnsafe(term.term.subject),\n this.transformRDFTermUnsafe(term.term.predicate),\n this.transformRDFTermUnsafe(term.term.object),\n this.transformRDFTermUnsafe(term.term.graph),\n );\n case 'DefaultGraph':\n return new E.DefaultGraph();\n }\n }\n\n /**\n * @param lit the rdf literal we want to transform to an internal Literal expression.\n */\n public transformLiteral(lit: RDF.Literal): E.Literal<any> {\n // Both here and within the switch we transform to LangStringLiteral or StringLiteral.\n // We do this when we detect a simple literal being used.\n // Original issue regarding this behaviour: https://github.com/w3c/sparql-12/issues/112\n if (!lit.datatype || [ null, undefined, '' ].includes(lit.datatype.value)) {\n return lit.language ?\n new E.LangStringLiteral(lit.value, lit.language) :\n new E.StringLiteral(lit.value);\n }\n\n const dataType = lit.datatype.value;\n const superTypeDict: GeneralSuperTypeDict = getSuperTypeDict(dataType, this.superTypeProvider);\n\n // The order of checking matters! Check most specific types first!\n try {\n if (TypeURL.XSD_STRING in superTypeDict) {\n return new E.StringLiteral(lit.value, dataType);\n }\n if (TypeURL.RDF_LANG_STRING in superTypeDict) {\n return new E.LangStringLiteral(lit.value, lit.language);\n }\n if (TypeURL.XSD_YEAR_MONTH_DURATION in superTypeDict) {\n return new E.YearMonthDurationLiteral(parseYearMonthDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DAY_TIME_DURATION in superTypeDict) {\n return new E.DayTimeDurationLiteral(parseDayTimeDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DURATION in superTypeDict) {\n return new E.DurationLiteral(parseDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE_TIME in superTypeDict) {\n const dateVal: Date = new Date(lit.value);\n if (Number.isNaN(dateVal.getTime())) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.DateTimeLiteral(parseDateTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE in superTypeDict) {\n return new E.DateLiteral(parseDate(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_TIME in superTypeDict) {\n return new E.TimeLiteral(parseTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_BOOLEAN in superTypeDict) {\n if (lit.value !== 'true' && lit.value !== 'false' && lit.value !== '1' && lit.value !== '0') {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.BooleanLiteral(lit.value === 'true' || lit.value === '1', lit.value);\n }\n if (TypeURL.XSD_DECIMAL in superTypeDict) {\n const intVal: number | undefined = P.parseXSDDecimal(lit.value);\n if (intVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (TypeURL.XSD_INTEGER in superTypeDict) {\n return new E.IntegerLiteral(intVal, dataType, lit.value);\n }\n // If type is not an integer it's just a decimal.\n return new E.DecimalLiteral(intVal, dataType, lit.value);\n }\n const isFloat = TypeURL.XSD_FLOAT in superTypeDict;\n const isDouble = TypeURL.XSD_DOUBLE in superTypeDict;\n if (isFloat || isDouble) {\n const doubleVal: number | undefined = P.parseXSDFloat(lit.value);\n if (doubleVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (isFloat) {\n return new E.FloatLiteral(doubleVal, dataType, lit.value);\n }\n return new E.DoubleLiteral(doubleVal, dataType, lit.value);\n }\n\n return new E.Literal<string>(lit.value, dataType, lit.value);\n } catch (error: unknown) {\n if (isExpressionError(<Error> error)) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n throw error;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TermTransformer.js","sourceRoot":"","sources":["TermTransformer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Expression, GeneralSuperTypeDict, ISuperTypeProvider } from '@comunica/types';\nimport { Algebra } from '@comunica/utils-algebra';\nimport type * as RDF from '@rdfjs/types';\nimport * as RDFString from 'rdf-string';\nimport * as E from '../expressions';\nimport { TypeURL } from '../util/Consts';\nimport * as Err from '../util/Errors';\nimport { isExpressionError } from '../util/Errors';\nimport {\n parseDate,\n parseDateTime,\n parseDayTimeDuration,\n parseDuration,\n parseTime,\n parseYearMonthDuration,\n} from '../util/Parsing';\nimport * as P from '../util/Parsing';\nimport { getSuperTypeDict } from '../util/TypeHandling';\n\nexport interface ITermTransformer {\n transformRDFTermUnsafe: (term: RDF.Term) => E.Term;\n transformLiteral: (lit: RDF.Literal) => E.Literal<any>;\n}\n\nexport class TermTransformer implements ITermTransformer {\n public constructor(protected readonly superTypeProvider: ISuperTypeProvider) {}\n\n /**\n * Transforms an RDF term to the internal representation of a term,\n * assuming it is not a variable, which would be an expression (internally).\n *\n * @param term RDF term to transform into internal representation of a term\n */\n public transformRDFTermUnsafe(term: RDF.Term): E.Term {\n return <E.Term> this.transformTerm({\n term,\n type: Algebra.Types.EXPRESSION,\n subType: Algebra.ExpressionTypes.TERM,\n });\n }\n\n protected transformTerm(term: Algebra.TermExpression): Expression {\n if (!term.term) {\n throw new Err.InvalidExpression(term);\n }\n\n switch (term.term.termType) {\n case 'Variable':\n return new E.Variable(RDFString.termToString(term.term));\n case 'Literal':\n return this.transformLiteral(term.term);\n case 'NamedNode':\n return new E.NamedNode(term.term.value);\n case 'BlankNode':\n return new E.BlankNode(term.term.value);\n case 'Quad':\n return new E.Quad(\n this.transformRDFTermUnsafe(term.term.subject),\n this.transformRDFTermUnsafe(term.term.predicate),\n this.transformRDFTermUnsafe(term.term.object),\n this.transformRDFTermUnsafe(term.term.graph),\n );\n case 'DefaultGraph':\n return new E.DefaultGraph();\n }\n }\n\n /**\n * @param lit the rdf literal we want to transform to an internal Literal expression.\n */\n public transformLiteral(lit: RDF.Literal): E.Literal<any> {\n // Both here and within the switch we transform to LangStringLiteral or StringLiteral.\n // We do this when we detect a simple literal being used.\n // Original issue regarding this behaviour: https://github.com/w3c/sparql-12/issues/112\n if (!lit.datatype || [ null, undefined, '' ].includes(lit.datatype.value)) {\n return lit.language ?\n new E.LangStringLiteral(lit.value, lit.language) :\n new E.StringLiteral(lit.value);\n }\n\n const dataType = lit.datatype.value;\n const superTypeDict: GeneralSuperTypeDict = getSuperTypeDict(dataType, this.superTypeProvider);\n\n // The order of checking matters! Check most specific types first!\n try {\n if (TypeURL.XSD_STRING in superTypeDict) {\n return new E.StringLiteral(lit.value, dataType);\n }\n if (TypeURL.RDF_LANG_STRING in superTypeDict) {\n return new E.LangStringLiteral(lit.value, lit.language);\n }\n if (TypeURL.RDF_DIR_LANG_STRING in superTypeDict) {\n return new E.DirLangStringLiteral(lit.value, lit.language, <'ltr' | 'rtl'> lit.direction);\n }\n if (TypeURL.XSD_YEAR_MONTH_DURATION in superTypeDict) {\n return new E.YearMonthDurationLiteral(parseYearMonthDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DAY_TIME_DURATION in superTypeDict) {\n return new E.DayTimeDurationLiteral(parseDayTimeDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DURATION in superTypeDict) {\n return new E.DurationLiteral(parseDuration(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE_TIME in superTypeDict) {\n const dateVal: Date = new Date(lit.value);\n if (Number.isNaN(dateVal.getTime())) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.DateTimeLiteral(parseDateTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_DATE in superTypeDict) {\n return new E.DateLiteral(parseDate(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_TIME in superTypeDict) {\n return new E.TimeLiteral(parseTime(lit.value), lit.value, dataType);\n }\n if (TypeURL.XSD_BOOLEAN in superTypeDict) {\n if (lit.value !== 'true' && lit.value !== 'false' && lit.value !== '1' && lit.value !== '0') {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n return new E.BooleanLiteral(lit.value === 'true' || lit.value === '1', lit.value);\n }\n if (TypeURL.XSD_DECIMAL in superTypeDict) {\n const intVal: number | undefined = P.parseXSDDecimal(lit.value);\n if (intVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (TypeURL.XSD_INTEGER in superTypeDict) {\n return new E.IntegerLiteral(intVal, dataType, lit.value);\n }\n // If type is not an integer it's just a decimal.\n return new E.DecimalLiteral(intVal, dataType, lit.value);\n }\n const isFloat = TypeURL.XSD_FLOAT in superTypeDict;\n const isDouble = TypeURL.XSD_DOUBLE in superTypeDict;\n if (isFloat || isDouble) {\n const doubleVal: number | undefined = P.parseXSDFloat(lit.value);\n if (doubleVal === undefined) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n if (isFloat) {\n return new E.FloatLiteral(doubleVal, dataType, lit.value);\n }\n return new E.DoubleLiteral(doubleVal, dataType, lit.value);\n }\n\n return new E.Literal<string>(lit.value, dataType, lit.value);\n } catch (error: unknown) {\n if (isExpressionError(<Error> error)) {\n return new E.NonLexicalLiteral(undefined, dataType, this.superTypeProvider, lit.value);\n }\n throw error;\n }\n }\n}\n"]}
@@ -16,6 +16,7 @@ export declare enum TypeURL {
16
16
  XSD_ANY_URI = "http://www.w3.org/2001/XMLSchema#anyURI",
17
17
  XSD_STRING = "http://www.w3.org/2001/XMLSchema#string",
18
18
  RDF_LANG_STRING = "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString",
19
+ RDF_DIR_LANG_STRING = "http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString",
19
20
  XSD_BOOLEAN = "http://www.w3.org/2001/XMLSchema#boolean",
20
21
  XSD_DATE_TIME = "http://www.w3.org/2001/XMLSchema#dateTime",
21
22
  XSD_DATE_TIME_STAMP = "http://www.w3.org/2001/XMLSchema#dateTimeStamp",
@@ -82,14 +83,18 @@ export declare enum SparqlOperator {
82
83
  IS_BLANK = "isblank",
83
84
  IS_LITERAL = "isliteral",
84
85
  IS_NUMERIC = "isnumeric",
86
+ HAS_LANG = "haslang",
87
+ HAS_LANGDIR = "haslangdir",
85
88
  STR = "str",
86
89
  LANG = "lang",
90
+ LANGDIR = "langdir",
87
91
  DATATYPE = "datatype",
88
92
  IRI = "iri",
89
93
  URI = "uri",
90
94
  BNODE = "bnode",
91
95
  STRDT = "strdt",
92
96
  STRLANG = "strlang",
97
+ STRLANGDIR = "strlangdir",
93
98
  UUID = "uuid",
94
99
  STRUUID = "struuid",
95
100
  STRLEN = "strlen",
@@ -25,6 +25,7 @@ var TypeURL;
25
25
  TypeURL["XSD_ANY_URI"] = "http://www.w3.org/2001/XMLSchema#anyURI";
26
26
  TypeURL["XSD_STRING"] = "http://www.w3.org/2001/XMLSchema#string";
27
27
  TypeURL["RDF_LANG_STRING"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString";
28
+ TypeURL["RDF_DIR_LANG_STRING"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString";
28
29
  TypeURL["XSD_BOOLEAN"] = "http://www.w3.org/2001/XMLSchema#boolean";
29
30
  TypeURL["XSD_DATE_TIME"] = "http://www.w3.org/2001/XMLSchema#dateTime";
30
31
  TypeURL["XSD_DATE_TIME_STAMP"] = "http://www.w3.org/2001/XMLSchema#dateTimeStamp";
@@ -102,14 +103,18 @@ var SparqlOperator;
102
103
  SparqlOperator["IS_BLANK"] = "isblank";
103
104
  SparqlOperator["IS_LITERAL"] = "isliteral";
104
105
  SparqlOperator["IS_NUMERIC"] = "isnumeric";
106
+ SparqlOperator["HAS_LANG"] = "haslang";
107
+ SparqlOperator["HAS_LANGDIR"] = "haslangdir";
105
108
  SparqlOperator["STR"] = "str";
106
109
  SparqlOperator["LANG"] = "lang";
110
+ SparqlOperator["LANGDIR"] = "langdir";
107
111
  SparqlOperator["DATATYPE"] = "datatype";
108
112
  SparqlOperator["IRI"] = "iri";
109
113
  SparqlOperator["URI"] = "uri";
110
114
  SparqlOperator["BNODE"] = "bnode";
111
115
  SparqlOperator["STRDT"] = "strdt";
112
116
  SparqlOperator["STRLANG"] = "strlang";
117
+ SparqlOperator["STRLANGDIR"] = "strlangdir";
113
118
  SparqlOperator["UUID"] = "uuid";
114
119
  SparqlOperator["STRUUID"] = "struuid";
115
120
  // Functions on strings
@@ -1 +1 @@
1
- {"version":3,"file":"Consts.js","sourceRoot":"","sources":["Consts.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\n\nexport type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since utils-expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nconst DF = new DataFactory();\n\nexport function typedLiteral(value: string, type: TypeURL): RDF.Literal {\n return DF.literal(value, DF.namedNode(type));\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n XSD_UNTYPED_ATOMIC = 'http://www.w3.org/2001/XMLSchema#untypedAtomic',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type GeneralOperator = KnownOperator | string;\n\nexport type KnownOperator = SparqlOperator | NamedOperator;\n\n// TODO: Remove unneeded double typing\nexport enum SparqlOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n STR = 'str',\n LANG = 'lang',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n BNODE = 'bnode',\n STRDT = 'strdt',\n STRLANG = 'strlang',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n CONCAT = 'concat',\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n}\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n"]}
1
+ {"version":3,"file":"Consts.js","sourceRoot":"","sources":["Consts.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\n\nexport type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since utils-expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nconst DF = new DataFactory();\n\nexport function typedLiteral(value: string, type: TypeURL): RDF.Literal {\n return DF.literal(value, DF.namedNode(type));\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n RDF_DIR_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n XSD_UNTYPED_ATOMIC = 'http://www.w3.org/2001/XMLSchema#untypedAtomic',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type GeneralOperator = KnownOperator | string;\n\nexport type KnownOperator = SparqlOperator | NamedOperator;\n\n// TODO: Remove unneeded double typing\nexport enum SparqlOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n HAS_LANG = 'haslang',\n HAS_LANGDIR = 'haslangdir',\n STR = 'str',\n LANG = 'lang',\n LANGDIR = 'langdir',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n BNODE = 'bnode',\n STRDT = 'strdt',\n STRLANG = 'strlang',\n STRLANGDIR = 'strlangdir',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n CONCAT = 'concat',\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n}\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n"]}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -99,6 +99,11 @@ export declare class IncompatibleLanguageOperation extends ExpressionError {
99
99
  arg2: E.LangStringLiteral;
100
100
  constructor(arg1: E.LangStringLiteral, arg2: E.LangStringLiteral);
101
101
  }
102
+ export declare class IncompatibleDirectionalLanguageOperation extends ExpressionError {
103
+ arg1: E.DirLangStringLiteral;
104
+ arg2: E.DirLangStringLiteral;
105
+ constructor(arg1: E.DirLangStringLiteral, arg2: E.DirLangStringLiteral);
106
+ }
102
107
  export declare class EmptyAggregateError extends ExpressionError {
103
108
  constructor();
104
109
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NoAggregator = exports.ExtensionFunctionError = exports.InvalidExpression = exports.InvalidArity = exports.UnexpectedError = exports.ParseError = exports.EmptyAggregateError = exports.IncompatibleLanguageOperation = exports.InvalidTimezoneCall = exports.CastError = exports.InvalidArgumentTypes = exports.InError = exports.CoalesceError = exports.RDFEqualTypeError = exports.EBVCoercionError = exports.UnboundVariableError = exports.InvalidLexicalForm = exports.isExpressionError = exports.ExpressionError = void 0;
3
+ exports.NoAggregator = exports.ExtensionFunctionError = exports.InvalidExpression = exports.InvalidArity = exports.UnexpectedError = exports.ParseError = exports.EmptyAggregateError = exports.IncompatibleDirectionalLanguageOperation = exports.IncompatibleLanguageOperation = exports.InvalidTimezoneCall = exports.CastError = exports.InvalidArgumentTypes = exports.InError = exports.CoalesceError = exports.RDFEqualTypeError = exports.EBVCoercionError = exports.UnboundVariableError = exports.InvalidLexicalForm = exports.isExpressionError = exports.ExpressionError = void 0;
4
4
  /**
5
5
  * This class of error will be thrown when an expression errors.
6
6
  * Various reasons this could happen are:
@@ -132,6 +132,14 @@ class IncompatibleLanguageOperation extends ExpressionError {
132
132
  }
133
133
  }
134
134
  exports.IncompatibleLanguageOperation = IncompatibleLanguageOperation;
135
+ class IncompatibleDirectionalLanguageOperation extends ExpressionError {
136
+ constructor(arg1, arg2) {
137
+ super(`Operation on incompatible directional language literals '${pp(arg1)}' and '${pp(arg2)}'`);
138
+ this.arg1 = arg1;
139
+ this.arg2 = arg2;
140
+ }
141
+ }
142
+ exports.IncompatibleDirectionalLanguageOperation = IncompatibleDirectionalLanguageOperation;
135
143
  class EmptyAggregateError extends ExpressionError {
136
144
  constructor() {
137
145
  super('Empty aggregate expression');
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.js","sourceRoot":"","sources":["Errors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Expression } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type * as E from '../expressions';\nimport type * as C from './Consts';\n\n/**\n * This class of error will be thrown when an expression errors.\n * Various reasons this could happen are:\n * - invalid types for the given operator\n * - unbound variables\n * - invalid lexical forms\n * - ...\n *\n * The distinction is made so that one can catch this specific type\n * and handle it accordingly to the SPARQL spec (relevant for e.g. FILTER, EXTEND),\n * while others (programming errors) can be re-thrown.\n *\n * @see isExpressionError\n */\nexport class ExpressionError extends Error {}\n\n/**\n * Checks whether a given error is an {@link ExpressionError}.\n * Also useful for mocking in tests for covering all branches.\n *\n * @see ExpressionError\n */\nexport function isExpressionError(error: Error): boolean {\n return error instanceof ExpressionError;\n}\n\n/**\n * A literal has an invalid lexical form for the datatype it is accompanied by.\n * This error is only thrown when the term is as function argument that requires\n * a valid lexical form.\n */\nexport class InvalidLexicalForm extends ExpressionError {\n public constructor(public arg: RDF.Term) {\n super(`Invalid lexical form '${pp(arg)}'`);\n }\n}\n\n/**\n * A variable in the expression was not bound.\n */\nexport class UnboundVariableError extends ExpressionError {\n public constructor(public variable: string, public bindings: RDF.Bindings) {\n super(`Unbound variable '${pp(variable)}'`);\n }\n}\n\n/**\n * An invalid term was being coerced to an Effective Boolean Value.\n *\n * See the {@link https://www.w3.org/TR/sparql11-query/#ebv | SPARQL docs}\n * on EBVs.\n */\nexport class EBVCoercionError extends ExpressionError {\n public constructor(public arg: E.Term) {\n super(`Cannot coerce term to EBV '${pp(arg)}'`);\n }\n}\n\n/**\n * An equality test was done on literals with unsupported datatypes.\n *\n * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.\n */\nexport class RDFEqualTypeError extends ExpressionError {\n public constructor(public args: Expression[]) {\n super('Equality test for literals with unsupported datatypes');\n }\n}\n\n/**\n * All the expressions in a COALESCE call threw errors.\n */\nexport class CoalesceError extends ExpressionError {\n public constructor(public errors: Error[]) {\n super('All COALESCE arguments threw errors');\n }\n}\n\n/**\n * No arguments to an IN call where equal, and at least one threw an error.\n */\nexport class InError extends ExpressionError {\n public constructor(public errors: (Error | false)[]) {\n super(\n `Some argument to IN errorred and none where equal. ${\n\n errors.map(err => `(${err.toString()}) `).join('and ')}`,\n );\n }\n}\n\n/**\n * Literals were passed to an operator that doesn't support their datatypes.\n */\nexport class InvalidArgumentTypes extends ExpressionError {\n public constructor(public args: Expression[], public op: C.GeneralOperator) {\n super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);\n }\n}\n\n/**\n * An invalid typecast happened.\n */\nexport class CastError<T> extends ExpressionError {\n public constructor(public arg: T, cast: C.TypeURL) {\n super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);\n }\n}\n\nexport class InvalidTimezoneCall extends ExpressionError {\n public constructor(public dateString: string) {\n super(`TIMEZONE call on ${dateString} which has no timezone`);\n }\n}\n\nexport class IncompatibleLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.LangStringLiteral, public arg2: E.LangStringLiteral) {\n super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class EmptyAggregateError extends ExpressionError {\n public constructor() {\n super('Empty aggregate expression');\n }\n}\n\nexport class ParseError extends ExpressionError {\n public constructor(str: string, type: string) {\n super(`Failed to parse \"${str}\" as ${type}.`);\n }\n}\n\n// Non Expression Errors ------------------------------------------------------\n\n/**\n * An error that arises when we detect a 'should-be-impossible' state.\n * Given that this error is thrown, it clearly wasn't impossible, and some\n * mistake has been made.\n */\nexport class UnexpectedError<T> extends Error {\n public constructor(message: string, public payload?: T) {\n super(`Programmer Error '${message}'`);\n }\n}\n\nexport class InvalidArity extends Error {\n public constructor(public args: Expression[], public op: C.GeneralOperator) {\n super(`The number of args does not match the arity of the operator '${pp(op)}'.`);\n }\n}\n\nexport class InvalidExpression<T> extends Error {\n public constructor(expr: T) {\n super(`Invalid SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class ExtensionFunctionError extends Error {\n public constructor(name: string, functionError: unknown) {\n if (functionError instanceof Error) {\n super(`Error thrown in ${name}: ${functionError.message}${functionError.stack ? `\\n${functionError.stack}` : ''}`);\n } else {\n super(`Error thrown in ${name}`);\n }\n }\n}\n\nexport class NoAggregator extends Error {\n public constructor(name?: string) {\n super(`Aggregate expression ${pp(name)} found, but no aggregate hook provided.`);\n }\n}\n\nfunction pp<T>(object: T): string {\n return JSON.stringify(object);\n}\n"]}
1
+ {"version":3,"file":"Errors.js","sourceRoot":"","sources":["Errors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Expression } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type * as E from '../expressions';\nimport type * as C from './Consts';\n\n/**\n * This class of error will be thrown when an expression errors.\n * Various reasons this could happen are:\n * - invalid types for the given operator\n * - unbound variables\n * - invalid lexical forms\n * - ...\n *\n * The distinction is made so that one can catch this specific type\n * and handle it accordingly to the SPARQL spec (relevant for e.g. FILTER, EXTEND),\n * while others (programming errors) can be re-thrown.\n *\n * @see isExpressionError\n */\nexport class ExpressionError extends Error {}\n\n/**\n * Checks whether a given error is an {@link ExpressionError}.\n * Also useful for mocking in tests for covering all branches.\n *\n * @see ExpressionError\n */\nexport function isExpressionError(error: Error): boolean {\n return error instanceof ExpressionError;\n}\n\n/**\n * A literal has an invalid lexical form for the datatype it is accompanied by.\n * This error is only thrown when the term is as function argument that requires\n * a valid lexical form.\n */\nexport class InvalidLexicalForm extends ExpressionError {\n public constructor(public arg: RDF.Term) {\n super(`Invalid lexical form '${pp(arg)}'`);\n }\n}\n\n/**\n * A variable in the expression was not bound.\n */\nexport class UnboundVariableError extends ExpressionError {\n public constructor(public variable: string, public bindings: RDF.Bindings) {\n super(`Unbound variable '${pp(variable)}'`);\n }\n}\n\n/**\n * An invalid term was being coerced to an Effective Boolean Value.\n *\n * See the {@link https://www.w3.org/TR/sparql11-query/#ebv | SPARQL docs}\n * on EBVs.\n */\nexport class EBVCoercionError extends ExpressionError {\n public constructor(public arg: E.Term) {\n super(`Cannot coerce term to EBV '${pp(arg)}'`);\n }\n}\n\n/**\n * An equality test was done on literals with unsupported datatypes.\n *\n * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.\n */\nexport class RDFEqualTypeError extends ExpressionError {\n public constructor(public args: Expression[]) {\n super('Equality test for literals with unsupported datatypes');\n }\n}\n\n/**\n * All the expressions in a COALESCE call threw errors.\n */\nexport class CoalesceError extends ExpressionError {\n public constructor(public errors: Error[]) {\n super('All COALESCE arguments threw errors');\n }\n}\n\n/**\n * No arguments to an IN call where equal, and at least one threw an error.\n */\nexport class InError extends ExpressionError {\n public constructor(public errors: (Error | false)[]) {\n super(\n `Some argument to IN errorred and none where equal. ${\n\n errors.map(err => `(${err.toString()}) `).join('and ')}`,\n );\n }\n}\n\n/**\n * Literals were passed to an operator that doesn't support their datatypes.\n */\nexport class InvalidArgumentTypes extends ExpressionError {\n public constructor(public args: Expression[], public op: C.GeneralOperator) {\n super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);\n }\n}\n\n/**\n * An invalid typecast happened.\n */\nexport class CastError<T> extends ExpressionError {\n public constructor(public arg: T, cast: C.TypeURL) {\n super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);\n }\n}\n\nexport class InvalidTimezoneCall extends ExpressionError {\n public constructor(public dateString: string) {\n super(`TIMEZONE call on ${dateString} which has no timezone`);\n }\n}\n\nexport class IncompatibleLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.LangStringLiteral, public arg2: E.LangStringLiteral) {\n super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class IncompatibleDirectionalLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.DirLangStringLiteral, public arg2: E.DirLangStringLiteral) {\n super(`Operation on incompatible directional language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class EmptyAggregateError extends ExpressionError {\n public constructor() {\n super('Empty aggregate expression');\n }\n}\n\nexport class ParseError extends ExpressionError {\n public constructor(str: string, type: string) {\n super(`Failed to parse \"${str}\" as ${type}.`);\n }\n}\n\n// Non Expression Errors ------------------------------------------------------\n\n/**\n * An error that arises when we detect a 'should-be-impossible' state.\n * Given that this error is thrown, it clearly wasn't impossible, and some\n * mistake has been made.\n */\nexport class UnexpectedError<T> extends Error {\n public constructor(message: string, public payload?: T) {\n super(`Programmer Error '${message}'`);\n }\n}\n\nexport class InvalidArity extends Error {\n public constructor(public args: Expression[], public op: C.GeneralOperator) {\n super(`The number of args does not match the arity of the operator '${pp(op)}'.`);\n }\n}\n\nexport class InvalidExpression<T> extends Error {\n public constructor(expr: T) {\n super(`Invalid SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class ExtensionFunctionError extends Error {\n public constructor(name: string, functionError: unknown) {\n if (functionError instanceof Error) {\n super(`Error thrown in ${name}: ${functionError.message}${functionError.stack ? `\\n${functionError.stack}` : ''}`);\n } else {\n super(`Error thrown in ${name}`);\n }\n }\n}\n\nexport class NoAggregator extends Error {\n public constructor(name?: string) {\n super(`Aggregate expression ${pp(name)} found, but no aggregate hook provided.`);\n }\n}\n\nfunction pp<T>(object: T): string {\n return JSON.stringify(object);\n}\n"]}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -19,6 +19,7 @@ exports.extensionTableInput = {
19
19
  [Consts_1.TypeURL.XSD_YEAR_MONTH_DURATION]: Consts_1.TypeURL.XSD_DURATION,
20
20
  // Stringly types
21
21
  [Consts_1.TypeURL.RDF_LANG_STRING]: Consts_1.TypeAlias.SPARQL_STRINGLY,
22
+ [Consts_1.TypeURL.RDF_DIR_LANG_STRING]: Consts_1.TypeAlias.SPARQL_STRINGLY,
22
23
  [Consts_1.TypeURL.XSD_STRING]: Consts_1.TypeAlias.SPARQL_STRINGLY,
23
24
  // String types
24
25
  [Consts_1.TypeURL.XSD_NORMALIZED_STRING]: Consts_1.TypeURL.XSD_STRING,
@@ -1 +1 @@
1
- {"version":3,"file":"TypeHandling.js","sourceRoot":"","sources":["TypeHandling.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GeneralSuperTypeDict, ISuperTypeProvider, TermExpression, TermType } from '@comunica/types';\nimport type * as E from '../expressions';\nimport { asTermType } from '../expressions';\nimport { double, float, string } from '../functions/Helpers';\nimport type { ArgumentType } from '../functions/OverloadTree';\nimport type { KnownLiteralTypes } from './Consts';\nimport { TypeAlias, TypeURL } from './Consts';\n\nexport type OverrideType = KnownLiteralTypes | 'term';\n\n/**\n * Types that are not mentioned just map to 'term'.\n * When editing this, make sure type promotion and substitution don't start interfering.\n * e.g. when saying something like string -> stringly -> anyUri -> term.\n * This would make substitution on types that promote to each other possible. We and the specs don't want that!\n * A DAG will be created based on this. Make sure it doesn't have any cycles!\n */\nexport const extensionTableInput: Record<KnownLiteralTypes, OverrideType> = {\n // Datetime types\n [TypeURL.XSD_DATE_TIME_STAMP]: TypeURL.XSD_DATE_TIME,\n\n // Duration types\n [TypeURL.XSD_DAY_TIME_DURATION]: TypeURL.XSD_DURATION,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: TypeURL.XSD_DURATION,\n\n // Stringly types\n [TypeURL.RDF_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.XSD_STRING]: TypeAlias.SPARQL_STRINGLY,\n\n // String types\n [TypeURL.XSD_NORMALIZED_STRING]: TypeURL.XSD_STRING,\n [TypeURL.XSD_TOKEN]: TypeURL.XSD_NORMALIZED_STRING,\n [TypeURL.XSD_LANGUAGE]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NM_TOKEN]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NAME]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NC_NAME]: TypeURL.XSD_NAME,\n [TypeURL.XSD_ENTITY]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID_REF]: TypeURL.XSD_NC_NAME,\n // https://www.w3.org/TR/xpath-31/#dt-function-conversion\n // \"Each item in the atomic sequence that is of type xs:untypedAtomic is cast\n // to the expected generalized atomic type.\"\n // So then I looked in the specs for something about casting:\n // https://www.w3.org/TR/xpath-functions-31/#casting-from-strings\n // \"If the value is xs:untypedAtomic, it is treated in exactly the same way as a string\n // containing the same sequence of characters.\"\n // So it's not really a subtype by definition, but it works this way.\n [TypeURL.XSD_UNTYPED_ATOMIC]: TypeURL.XSD_STRING,\n\n // Numeric types\n // https://www.w3.org/TR/sparql11-query/#operandDataTypes\n // > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double\n [TypeURL.XSD_DOUBLE]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_FLOAT]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_DECIMAL]: TypeAlias.SPARQL_NUMERIC,\n\n // Decimal types\n [TypeURL.XSD_INTEGER]: TypeURL.XSD_DECIMAL,\n\n [TypeURL.XSD_NON_POSITIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_NEGATIVE_INTEGER]: TypeURL.XSD_NON_POSITIVE_INTEGER,\n\n [TypeURL.XSD_LONG]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_INT]: TypeURL.XSD_LONG,\n [TypeURL.XSD_SHORT]: TypeURL.XSD_INT,\n [TypeURL.XSD_BYTE]: TypeURL.XSD_SHORT,\n\n [TypeURL.XSD_NON_NEGATIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_POSITIVE_INTEGER]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_LONG]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_INT]: TypeURL.XSD_UNSIGNED_LONG,\n [TypeURL.XSD_UNSIGNED_SHORT]: TypeURL.XSD_UNSIGNED_INT,\n [TypeURL.XSD_UNSIGNED_BYTE]: TypeURL.XSD_UNSIGNED_SHORT,\n\n [TypeURL.XSD_DATE_TIME]: 'term',\n [TypeURL.XSD_BOOLEAN]: 'term',\n [TypeURL.XSD_DATE]: 'term',\n [TypeURL.XSD_G_MONTH]: 'term',\n [TypeURL.XSD_G_MONTHDAY]: 'term',\n [TypeURL.XSD_G_YEAR]: 'term',\n [TypeURL.XSD_G_YEAR_MONTH]: 'term',\n [TypeURL.XSD_TIME]: 'term',\n [TypeURL.XSD_G_DAY]: 'term',\n [TypeURL.XSD_DURATION]: 'term',\n [TypeAlias.SPARQL_NUMERIC]: 'term',\n [TypeAlias.SPARQL_STRINGLY]: 'term',\n [TypeURL.XSD_ANY_URI]: 'term',\n};\ntype SuperTypeDict = Record<KnownLiteralTypes, number> & { __depth: number };\ntype SuperTypeDictTable = Record<KnownLiteralTypes, SuperTypeDict>;\nexport const superTypeDictTable: SuperTypeDictTable = Object.create(null);\n\n/**\n * This will return the super types of a type and cache them.\n * @param type IRI we will decide the super types of.\n * @param openWorldType the enabler that provides a way to find super types.\n */\nexport function getSuperTypes(type: string, openWorldType: ISuperTypeProvider): GeneralSuperTypeDict {\n const cached = openWorldType.cache.get(type);\n if (cached) {\n return cached;\n }\n const value = openWorldType.discoverer(type);\n if (value === 'term') {\n const res: GeneralSuperTypeDict = Object.create(null);\n res.__depth = 0;\n res[type] = 0;\n openWorldType.cache.set(type, res);\n return res;\n }\n let subExtension: GeneralSuperTypeDict;\n const knownValue = asKnownLiteralType(value);\n if (knownValue) {\n subExtension = { ...superTypeDictTable[knownValue] };\n } else {\n subExtension = { ...getSuperTypes(value, openWorldType) };\n }\n subExtension.__depth++;\n subExtension[type] = subExtension.__depth;\n openWorldType.cache.set(type, subExtension);\n return subExtension;\n}\n\n// No circular structure allowed! & No other keys allowed!\nexport function extensionTableInit(): void {\n for (const [ _key, value ] of Object.entries(extensionTableInput)) {\n const key = <KnownLiteralTypes>_key;\n if (superTypeDictTable[key]) {\n continue;\n }\n extensionTableBuilderInitKey(key, value, superTypeDictTable);\n }\n}\nextensionTableInit();\n\nfunction extensionTableBuilderInitKey(key: KnownLiteralTypes, value: OverrideType, res: SuperTypeDictTable): void {\n if (value === 'term' || value === undefined) {\n const baseRes: SuperTypeDict = Object.create(null);\n baseRes.__depth = 0;\n baseRes[key] = 0;\n res[key] = baseRes;\n return;\n }\n if (!res[value]) {\n extensionTableBuilderInitKey(value, extensionTableInput[value], res);\n }\n res[key] = { ...res[value], [key]: res[value].__depth + 1, __depth: res[value].__depth + 1 };\n}\n\nexport const typeAliasCheck: Record<TypeAlias, boolean> = Object.create(null);\nfunction initTypeAliasCheck(): void {\n for (const val of Object.values(TypeAlias)) {\n typeAliasCheck[val] = true;\n }\n}\ninitTypeAliasCheck();\n\nexport function asTypeAlias(type: string): TypeAlias | undefined {\n if (type in typeAliasCheck) {\n return <TypeAlias> type;\n }\n return undefined;\n}\n\nexport function asKnownLiteralType(type: string): KnownLiteralTypes | undefined {\n if (type in superTypeDictTable) {\n return <KnownLiteralTypes> type;\n }\n return undefined;\n}\n\nexport function asOverrideType(type: string): OverrideType | undefined {\n if (asKnownLiteralType(type) ?? type === 'term') {\n return <OverrideType> type;\n }\n return undefined;\n}\n\nexport function asGeneralType(type: string): 'term' | TermType | undefined {\n if (type === 'term' || asTermType(type)) {\n return <'term' | TermType> type;\n }\n return undefined;\n}\n\n/**\n * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler\n */\nexport function isInternalSubType(baseType: OverrideType, argumentType: KnownLiteralTypes): boolean {\n return baseType !== 'term' &&\n (superTypeDictTable[baseType] && superTypeDictTable[baseType][argumentType] !== undefined);\n}\n\n/**\n * This function can be used to check the base type is a restriction on a type in the dict.\n * If we want to check if type x is a restriction on string we do this by calling:\n * 'http://www.w3.org/2001/XMLSchema#string' in getSuperTypeDict(X, superTypeProvider)\n * @param baseType\n * @param superTypeProvider\n */\nexport function getSuperTypeDict(baseType: string, superTypeProvider: ISuperTypeProvider): GeneralSuperTypeDict {\n const concreteType: KnownLiteralTypes | undefined = asKnownLiteralType(baseType);\n if (concreteType) {\n // Concrete dataType is known by utils-expression-evaluator.\n return superTypeDictTable[concreteType];\n }\n // Datatype is a custom datatype\n return getSuperTypes(baseType, superTypeProvider);\n}\n\n/**\n * This function needs to be O(1)! The execution time of this function is vital!\n * We define typeA isSubtypeOf typeA as true.\n * If you find yourself using this function a lot (e.g. in a case) please use getSuperTypeDict instead.\n * @param baseType type you want to provide.\n * @param argumentType type you want to provide @param baseType to.\n * @param superTypeProvider the enabler to discover super types of unknown types.\n */\nexport function isSubTypeOf(\n baseType: string,\n argumentType: KnownLiteralTypes,\n superTypeProvider: ISuperTypeProvider,\n): boolean {\n if (baseType === 'term') {\n return false;\n }\n return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;\n}\n\n// Defined by https://www.w3.org/TR/xpath-31/#promotion .\n// e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.\nexport const typePromotion: Partial<Record<ArgumentType, {\n typeToPromote: KnownLiteralTypes;\n conversionFunction: (arg: TermExpression) => TermExpression;\n}[]>> = {\n [TypeURL.XSD_STRING]: [\n { typeToPromote: TypeURL.XSD_ANY_URI, conversionFunction: arg => string(arg.str()) },\n ],\n [TypeURL.XSD_DOUBLE]: [\n { typeToPromote: TypeURL.XSD_FLOAT, conversionFunction: arg => double((<E.NumericLiteral>arg).typedValue) },\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => double((<E.NumericLiteral>arg).typedValue) },\n ],\n [TypeURL.XSD_FLOAT]: [\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => float((<E.NumericLiteral>arg).typedValue) },\n ],\n};\n"]}
1
+ {"version":3,"file":"TypeHandling.js","sourceRoot":"","sources":["TypeHandling.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GeneralSuperTypeDict, ISuperTypeProvider, TermExpression, TermType } from '@comunica/types';\nimport type * as E from '../expressions';\nimport { asTermType } from '../expressions';\nimport { double, float, string } from '../functions/Helpers';\nimport type { ArgumentType } from '../functions/OverloadTree';\nimport type { KnownLiteralTypes } from './Consts';\nimport { TypeAlias, TypeURL } from './Consts';\n\nexport type OverrideType = KnownLiteralTypes | 'term';\n\n/**\n * Types that are not mentioned just map to 'term'.\n * When editing this, make sure type promotion and substitution don't start interfering.\n * e.g. when saying something like string -> stringly -> anyUri -> term.\n * This would make substitution on types that promote to each other possible. We and the specs don't want that!\n * A DAG will be created based on this. Make sure it doesn't have any cycles!\n */\nexport const extensionTableInput: Record<KnownLiteralTypes, OverrideType> = {\n // Datetime types\n [TypeURL.XSD_DATE_TIME_STAMP]: TypeURL.XSD_DATE_TIME,\n\n // Duration types\n [TypeURL.XSD_DAY_TIME_DURATION]: TypeURL.XSD_DURATION,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: TypeURL.XSD_DURATION,\n\n // Stringly types\n [TypeURL.RDF_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.RDF_DIR_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.XSD_STRING]: TypeAlias.SPARQL_STRINGLY,\n\n // String types\n [TypeURL.XSD_NORMALIZED_STRING]: TypeURL.XSD_STRING,\n [TypeURL.XSD_TOKEN]: TypeURL.XSD_NORMALIZED_STRING,\n [TypeURL.XSD_LANGUAGE]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NM_TOKEN]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NAME]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NC_NAME]: TypeURL.XSD_NAME,\n [TypeURL.XSD_ENTITY]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID_REF]: TypeURL.XSD_NC_NAME,\n // https://www.w3.org/TR/xpath-31/#dt-function-conversion\n // \"Each item in the atomic sequence that is of type xs:untypedAtomic is cast\n // to the expected generalized atomic type.\"\n // So then I looked in the specs for something about casting:\n // https://www.w3.org/TR/xpath-functions-31/#casting-from-strings\n // \"If the value is xs:untypedAtomic, it is treated in exactly the same way as a string\n // containing the same sequence of characters.\"\n // So it's not really a subtype by definition, but it works this way.\n [TypeURL.XSD_UNTYPED_ATOMIC]: TypeURL.XSD_STRING,\n\n // Numeric types\n // https://www.w3.org/TR/sparql11-query/#operandDataTypes\n // > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double\n [TypeURL.XSD_DOUBLE]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_FLOAT]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_DECIMAL]: TypeAlias.SPARQL_NUMERIC,\n\n // Decimal types\n [TypeURL.XSD_INTEGER]: TypeURL.XSD_DECIMAL,\n\n [TypeURL.XSD_NON_POSITIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_NEGATIVE_INTEGER]: TypeURL.XSD_NON_POSITIVE_INTEGER,\n\n [TypeURL.XSD_LONG]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_INT]: TypeURL.XSD_LONG,\n [TypeURL.XSD_SHORT]: TypeURL.XSD_INT,\n [TypeURL.XSD_BYTE]: TypeURL.XSD_SHORT,\n\n [TypeURL.XSD_NON_NEGATIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_POSITIVE_INTEGER]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_LONG]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_INT]: TypeURL.XSD_UNSIGNED_LONG,\n [TypeURL.XSD_UNSIGNED_SHORT]: TypeURL.XSD_UNSIGNED_INT,\n [TypeURL.XSD_UNSIGNED_BYTE]: TypeURL.XSD_UNSIGNED_SHORT,\n\n [TypeURL.XSD_DATE_TIME]: 'term',\n [TypeURL.XSD_BOOLEAN]: 'term',\n [TypeURL.XSD_DATE]: 'term',\n [TypeURL.XSD_G_MONTH]: 'term',\n [TypeURL.XSD_G_MONTHDAY]: 'term',\n [TypeURL.XSD_G_YEAR]: 'term',\n [TypeURL.XSD_G_YEAR_MONTH]: 'term',\n [TypeURL.XSD_TIME]: 'term',\n [TypeURL.XSD_G_DAY]: 'term',\n [TypeURL.XSD_DURATION]: 'term',\n [TypeAlias.SPARQL_NUMERIC]: 'term',\n [TypeAlias.SPARQL_STRINGLY]: 'term',\n [TypeURL.XSD_ANY_URI]: 'term',\n};\ntype SuperTypeDict = Record<KnownLiteralTypes, number> & { __depth: number };\ntype SuperTypeDictTable = Record<KnownLiteralTypes, SuperTypeDict>;\nexport const superTypeDictTable: SuperTypeDictTable = Object.create(null);\n\n/**\n * This will return the super types of a type and cache them.\n * @param type IRI we will decide the super types of.\n * @param openWorldType the enabler that provides a way to find super types.\n */\nexport function getSuperTypes(type: string, openWorldType: ISuperTypeProvider): GeneralSuperTypeDict {\n const cached = openWorldType.cache.get(type);\n if (cached) {\n return cached;\n }\n const value = openWorldType.discoverer(type);\n if (value === 'term') {\n const res: GeneralSuperTypeDict = Object.create(null);\n res.__depth = 0;\n res[type] = 0;\n openWorldType.cache.set(type, res);\n return res;\n }\n let subExtension: GeneralSuperTypeDict;\n const knownValue = asKnownLiteralType(value);\n if (knownValue) {\n subExtension = { ...superTypeDictTable[knownValue] };\n } else {\n subExtension = { ...getSuperTypes(value, openWorldType) };\n }\n subExtension.__depth++;\n subExtension[type] = subExtension.__depth;\n openWorldType.cache.set(type, subExtension);\n return subExtension;\n}\n\n// No circular structure allowed! & No other keys allowed!\nexport function extensionTableInit(): void {\n for (const [ _key, value ] of Object.entries(extensionTableInput)) {\n const key = <KnownLiteralTypes>_key;\n if (superTypeDictTable[key]) {\n continue;\n }\n extensionTableBuilderInitKey(key, value, superTypeDictTable);\n }\n}\nextensionTableInit();\n\nfunction extensionTableBuilderInitKey(key: KnownLiteralTypes, value: OverrideType, res: SuperTypeDictTable): void {\n if (value === 'term' || value === undefined) {\n const baseRes: SuperTypeDict = Object.create(null);\n baseRes.__depth = 0;\n baseRes[key] = 0;\n res[key] = baseRes;\n return;\n }\n if (!res[value]) {\n extensionTableBuilderInitKey(value, extensionTableInput[value], res);\n }\n res[key] = { ...res[value], [key]: res[value].__depth + 1, __depth: res[value].__depth + 1 };\n}\n\nexport const typeAliasCheck: Record<TypeAlias, boolean> = Object.create(null);\nfunction initTypeAliasCheck(): void {\n for (const val of Object.values(TypeAlias)) {\n typeAliasCheck[val] = true;\n }\n}\ninitTypeAliasCheck();\n\nexport function asTypeAlias(type: string): TypeAlias | undefined {\n if (type in typeAliasCheck) {\n return <TypeAlias> type;\n }\n return undefined;\n}\n\nexport function asKnownLiteralType(type: string): KnownLiteralTypes | undefined {\n if (type in superTypeDictTable) {\n return <KnownLiteralTypes> type;\n }\n return undefined;\n}\n\nexport function asOverrideType(type: string): OverrideType | undefined {\n if (asKnownLiteralType(type) ?? type === 'term') {\n return <OverrideType> type;\n }\n return undefined;\n}\n\nexport function asGeneralType(type: string): 'term' | TermType | undefined {\n if (type === 'term' || asTermType(type)) {\n return <'term' | TermType> type;\n }\n return undefined;\n}\n\n/**\n * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler\n */\nexport function isInternalSubType(baseType: OverrideType, argumentType: KnownLiteralTypes): boolean {\n return baseType !== 'term' &&\n (superTypeDictTable[baseType] && superTypeDictTable[baseType][argumentType] !== undefined);\n}\n\n/**\n * This function can be used to check the base type is a restriction on a type in the dict.\n * If we want to check if type x is a restriction on string we do this by calling:\n * 'http://www.w3.org/2001/XMLSchema#string' in getSuperTypeDict(X, superTypeProvider)\n * @param baseType\n * @param superTypeProvider\n */\nexport function getSuperTypeDict(baseType: string, superTypeProvider: ISuperTypeProvider): GeneralSuperTypeDict {\n const concreteType: KnownLiteralTypes | undefined = asKnownLiteralType(baseType);\n if (concreteType) {\n // Concrete dataType is known by utils-expression-evaluator.\n return superTypeDictTable[concreteType];\n }\n // Datatype is a custom datatype\n return getSuperTypes(baseType, superTypeProvider);\n}\n\n/**\n * This function needs to be O(1)! The execution time of this function is vital!\n * We define typeA isSubtypeOf typeA as true.\n * If you find yourself using this function a lot (e.g. in a case) please use getSuperTypeDict instead.\n * @param baseType type you want to provide.\n * @param argumentType type you want to provide @param baseType to.\n * @param superTypeProvider the enabler to discover super types of unknown types.\n */\nexport function isSubTypeOf(\n baseType: string,\n argumentType: KnownLiteralTypes,\n superTypeProvider: ISuperTypeProvider,\n): boolean {\n if (baseType === 'term') {\n return false;\n }\n return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;\n}\n\n// Defined by https://www.w3.org/TR/xpath-31/#promotion .\n// e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.\nexport const typePromotion: Partial<Record<ArgumentType, {\n typeToPromote: KnownLiteralTypes;\n conversionFunction: (arg: TermExpression) => TermExpression;\n}[]>> = {\n [TypeURL.XSD_STRING]: [\n { typeToPromote: TypeURL.XSD_ANY_URI, conversionFunction: arg => string(arg.str()) },\n ],\n [TypeURL.XSD_DOUBLE]: [\n { typeToPromote: TypeURL.XSD_FLOAT, conversionFunction: arg => double((<E.NumericLiteral>arg).typedValue) },\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => double((<E.NumericLiteral>arg).typedValue) },\n ],\n [TypeURL.XSD_FLOAT]: [\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => float((<E.NumericLiteral>arg).typedValue) },\n ],\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/utils-expression-evaluator",
3
- "version": "4.4.0",
3
+ "version": "4.4.2-alpha.49.0",
4
4
  "description": "A simple SPARQL expression evaluator",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -38,13 +38,13 @@
38
38
  "build": "node \"../../node_modules/typescript/bin/tsc\""
39
39
  },
40
40
  "dependencies": {
41
- "@comunica/context-entries": "^4.4.0",
42
- "@comunica/types": "^4.4.0",
41
+ "@comunica/context-entries": "4.4.2-alpha.49.0",
42
+ "@comunica/types": "4.4.2-alpha.49.0",
43
+ "@comunica/utils-algebra": "4.4.2-alpha.49.0",
43
44
  "@rdfjs/types": "*",
44
45
  "lru-cache": "^10.0.0",
45
- "rdf-data-factory": "^1.1.2",
46
- "rdf-string": "^1.6.3",
47
- "sparqlalgebrajs": "^4.3.8"
46
+ "rdf-data-factory": "^2.0.0",
47
+ "rdf-string": "^2.0.1"
48
48
  },
49
- "gitHead": "27acde56dfe0c1ff1162c1f46818ad752296ca88"
49
+ "gitHead": "ef6f96cfd8faf7c37955bb7e0fe9f6fc6a994bdf"
50
50
  }