@comunica/utils-expression-evaluator 4.5.0 → 5.0.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 +3 -1
  3. package/lib/expressions/Aggregate.js.map +1 -1
  4. package/lib/expressions/Existence.d.ts +1 -1
  5. package/lib/expressions/Existence.js +2 -1
  6. package/lib/expressions/Existence.js.map +1 -1
  7. package/lib/expressions/Expressions.d.ts +0 -0
  8. package/lib/expressions/Expressions.js +1 -2
  9. package/lib/expressions/Expressions.js.map +1 -1
  10. package/lib/expressions/Operator.d.ts +0 -0
  11. package/lib/expressions/Operator.js +4 -1
  12. package/lib/expressions/Operator.js.map +1 -1
  13. package/lib/expressions/Term.d.ts +9 -1
  14. package/lib/expressions/Term.js +76 -21
  15. package/lib/expressions/Term.js.map +1 -1
  16. package/lib/expressions/Variable.d.ts +0 -0
  17. package/lib/expressions/Variable.js +2 -1
  18. package/lib/expressions/Variable.js.map +1 -1
  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 +20 -11
  24. package/lib/functions/Helpers.js.map +1 -1
  25. package/lib/functions/OverloadTree.d.ts +0 -0
  26. package/lib/functions/OverloadTree.js +8 -0
  27. package/lib/functions/OverloadTree.js.map +1 -1
  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 +7 -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 +7 -3
  36. package/lib/util/Consts.js.map +1 -1
  37. package/lib/util/Context.d.ts +0 -0
  38. package/lib/util/Context.js +1 -2
  39. package/lib/util/Context.js.map +1 -1
  40. package/lib/util/DateTimeHelpers.d.ts +0 -0
  41. package/lib/util/DateTimeHelpers.js +15 -16
  42. package/lib/util/DateTimeHelpers.js.map +1 -1
  43. package/lib/util/Errors.d.ts +5 -0
  44. package/lib/util/Errors.js +28 -2
  45. package/lib/util/Errors.js.map +1 -1
  46. package/lib/util/Parsing.d.ts +0 -1
  47. package/lib/util/Parsing.js +8 -11
  48. package/lib/util/Parsing.js.map +1 -1
  49. package/lib/util/Serialization.d.ts +0 -0
  50. package/lib/util/Serialization.js +4 -5
  51. package/lib/util/Serialization.js.map +1 -1
  52. package/lib/util/SpecAlgos.d.ts +0 -0
  53. package/lib/util/SpecAlgos.js +3 -4
  54. package/lib/util/SpecAlgos.js.map +1 -1
  55. package/lib/util/TypeHandling.d.ts +0 -0
  56. package/lib/util/TypeHandling.js +11 -10
  57. package/lib/util/TypeHandling.js.map +1 -1
  58. package/package.json +8 -8
@@ -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;
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Aggregate = void 0;
4
4
  const types_1 = require("@comunica/types");
5
5
  class Aggregate {
6
+ name;
7
+ expression;
8
+ expressionType = types_1.ExpressionType.Aggregate;
6
9
  constructor(name, expression) {
7
10
  this.name = name;
8
11
  this.expression = expression;
9
- this.expressionType = types_1.ExpressionType.Aggregate;
10
12
  }
11
13
  }
12
14
  exports.Aggregate = Aggregate;
@@ -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;IAIX;IACA;IAJF,cAAc,GAA6B,sBAAc,CAAC,SAAS,CAAC;IAE3E,YACS,IAAY,EACZ,UAAmC;QADnC,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAyB;IACzC,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;
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Existence = void 0;
4
4
  const types_1 = require("@comunica/types");
5
5
  class Existence {
6
+ expression;
7
+ expressionType = types_1.ExpressionType.Existence;
6
8
  constructor(expression) {
7
9
  this.expression = expression;
8
- this.expressionType = types_1.ExpressionType.Existence;
9
10
  }
10
11
  }
11
12
  exports.Existence = Existence;
@@ -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;IAEM;IADnB,cAAc,GAA6B,sBAAc,CAAC,SAAS,CAAC;IAC3E,YAA0B,UAAmC;QAAnC,eAAU,GAAV,UAAU,CAAyB;IAAG,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
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.asTermType = void 0;
3
+ exports.asTermType = asTermType;
4
4
  function asTermType(type) {
5
5
  if (type === 'namedNode' || type === 'literal' || type === 'blankNode' || type === 'quad') {
6
6
  return type;
7
7
  }
8
8
  return undefined;
9
9
  }
10
- exports.asTermType = asTermType;
11
10
  //# sourceMappingURL=Expressions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Expressions.js","sourceRoot":"","sources":["Expressions.ts"],"names":[],"mappings":";;;AAGA,SAAgB,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AALD,gCAKC","sourcesContent":["// TODO: Create alias Term = TermExpression\nimport type { TermType } from '@comunica/types';\n\nexport function asTermType(type: string): TermType | undefined {\n if (type === 'namedNode' || type === 'literal' || type === 'blankNode' || type === 'quad') {\n return type;\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"Expressions.js","sourceRoot":"","sources":["Expressions.ts"],"names":[],"mappings":";;AAEA,gCAKC;AALD,SAAgB,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import type { TermType } from '@comunica/types';\n\nexport function asTermType(type: string): TermType | undefined {\n if (type === 'namedNode' || type === 'literal' || type === 'blankNode' || type === 'quad') {\n return type;\n }\n return undefined;\n}\n"]}
File without changes
@@ -3,11 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Operator = void 0;
4
4
  const types_1 = require("@comunica/types");
5
5
  class Operator {
6
+ name;
7
+ args;
8
+ apply;
9
+ expressionType = types_1.ExpressionType.Operator;
6
10
  constructor(name, args, apply) {
7
11
  this.name = name;
8
12
  this.args = args;
9
13
  this.apply = apply;
10
- this.expressionType = types_1.ExpressionType.Operator;
11
14
  }
12
15
  }
13
16
  exports.Operator = Operator;
@@ -1 +1 @@
1
- {"version":3,"file":"Operator.js","sourceRoot":"","sources":["Operator.ts"],"names":[],"mappings":";;;AACA,2CAAiD;AAEjD,MAAa,QAAQ;IAGnB,YAA0B,IAAY,EAAS,IAAkB,EAAS,KAA0B;QAA1E,SAAI,GAAJ,IAAI,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAc;QAAS,UAAK,GAAL,KAAK,CAAqB;QAF7F,mBAAc,GAA4B,sBAAc,CAAC,QAAQ,CAAC;IAE8B,CAAC;CACzG;AAJD,4BAIC","sourcesContent":["import type { Expression, FunctionApplication, OperatorExpression } from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\n\nexport class Operator implements OperatorExpression {\n public expressionType: ExpressionType.Operator = ExpressionType.Operator;\n\n public constructor(public name: string, public args: Expression[], public apply: FunctionApplication) {}\n}\n"]}
1
+ {"version":3,"file":"Operator.js","sourceRoot":"","sources":["Operator.ts"],"names":[],"mappings":";;;AACA,2CAAiD;AAEjD,MAAa,QAAQ;IAGO;IAAqB;IAA2B;IAFnE,cAAc,GAA4B,sBAAc,CAAC,QAAQ,CAAC;IAEzE,YAA0B,IAAY,EAAS,IAAkB,EAAS,KAA0B;QAA1E,SAAI,GAAJ,IAAI,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAc;QAAS,UAAK,GAAL,KAAK,CAAqB;IAAG,CAAC;CACzG;AAJD,4BAIC","sourcesContent":["import type { Expression, FunctionApplication, OperatorExpression } from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\n\nexport class Operator implements OperatorExpression {\n public expressionType: ExpressionType.Operator = ExpressionType.Operator;\n\n public constructor(public name: string, public args: Expression[], public apply: FunctionApplication) {}\n}\n"]}
@@ -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,16 +1,15 @@
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.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.DefaultGraph = exports.Quad = exports.BlankNode = exports.NamedNode = exports.Term = void 0;
4
+ exports.isLiteralTermExpression = isLiteralTermExpression;
5
+ exports.isNonLexicalLiteral = isNonLexicalLiteral;
4
6
  const types_1 = require("@comunica/types");
5
7
  const C = require("../util/Consts");
6
8
  const Consts_1 = require("../util/Consts");
7
9
  const Err = require("../util/Errors");
8
10
  const Serialization_1 = require("../util/Serialization");
9
- const TypeHandling_1 = require("../util/TypeHandling");
10
11
  class Term {
11
- constructor() {
12
- this.expressionType = types_1.ExpressionType.Term;
13
- }
12
+ expressionType = types_1.ExpressionType.Term;
14
13
  str() {
15
14
  throw new Err.InvalidArgumentTypes([this], C.SparqlOperator.STR);
16
15
  }
@@ -21,10 +20,11 @@ class Term {
21
20
  exports.Term = Term;
22
21
  // NamedNodes -----------------------------------------------------------------
23
22
  class NamedNode extends Term {
23
+ value;
24
+ termType = 'namedNode';
24
25
  constructor(value) {
25
26
  super();
26
27
  this.value = value;
27
- this.termType = 'namedNode';
28
28
  }
29
29
  toRDF(dataFactory) {
30
30
  return dataFactory.namedNode(this.value);
@@ -36,9 +36,10 @@ class NamedNode extends Term {
36
36
  exports.NamedNode = NamedNode;
37
37
  // BlankNodes -----------------------------------------------------------------
38
38
  class BlankNode extends Term {
39
+ value;
40
+ termType = 'blankNode';
39
41
  constructor(value) {
40
42
  super();
41
- this.termType = 'blankNode';
42
43
  this.value = value;
43
44
  }
44
45
  toRDF(dataFactory) {
@@ -48,13 +49,17 @@ class BlankNode extends Term {
48
49
  exports.BlankNode = BlankNode;
49
50
  // Quads -----------------------------------------------------------------
50
51
  class Quad extends Term {
52
+ subject;
53
+ predicate;
54
+ object;
55
+ graph;
56
+ termType = 'quad';
51
57
  constructor(subject, predicate, object, graph) {
52
58
  super();
53
59
  this.subject = subject;
54
60
  this.predicate = predicate;
55
61
  this.object = object;
56
62
  this.graph = graph;
57
- this.termType = 'quad';
58
63
  }
59
64
  toRDF(dataFactory) {
60
65
  return dataFactory.quad(this.subject.toRDF(dataFactory), this.predicate.toRDF(dataFactory), this.object.toRDF(dataFactory), this.graph.toRDF(dataFactory));
@@ -65,9 +70,9 @@ class Quad extends Term {
65
70
  }
66
71
  exports.Quad = Quad;
67
72
  class DefaultGraph extends Term {
73
+ termType = 'defaultGraph';
68
74
  constructor() {
69
75
  super();
70
- this.termType = 'defaultGraph';
71
76
  }
72
77
  toRDF(dataFactory) {
73
78
  return dataFactory.defaultGraph();
@@ -84,24 +89,32 @@ function isLiteralTermExpression(expr) {
84
89
  }
85
90
  return undefined;
86
91
  }
87
- exports.isLiteralTermExpression = isLiteralTermExpression;
88
92
  class Literal extends Term {
93
+ typedValue;
94
+ dataType;
95
+ strValue;
96
+ language;
97
+ direction;
98
+ termType = 'literal';
89
99
  /**
90
100
  * @param typedValue internal representation of this literal's value
91
101
  * @param dataType a string representing the datatype. Can be of type @see LiteralTypes or any URI
92
102
  * @param strValue the string value of this literal. In other words, the string representing the RDF.literal value.
93
103
  * @param language the language, mainly for language enabled strings like RDF_LANG_STRING
104
+ * @param direction the base direction, mainly for directional language enabled strings like RDF_DIR_LANG_STRING
94
105
  */
95
- constructor(typedValue, dataType, strValue, language) {
106
+ constructor(typedValue, dataType, strValue, language, direction) {
96
107
  super();
97
108
  this.typedValue = typedValue;
98
109
  this.dataType = dataType;
99
110
  this.strValue = strValue;
100
111
  this.language = language;
101
- this.termType = 'literal';
112
+ this.direction = direction;
102
113
  }
103
114
  toRDF(dataFactory) {
104
- return dataFactory.literal(this.strValue ?? this.str(), this.language ?? dataFactory.namedNode(this.dataType));
115
+ return dataFactory.literal(this.strValue ?? this.str(), this.direction && this.language ?
116
+ { language: this.language, direction: this.direction } :
117
+ this.language ?? dataFactory.namedNode(this.dataType));
105
118
  }
106
119
  str() {
107
120
  return this.strValue ?? this.typedValue.toString();
@@ -109,6 +122,9 @@ class Literal extends Term {
109
122
  }
110
123
  exports.Literal = Literal;
111
124
  class NumericLiteral extends Literal {
125
+ typedValue;
126
+ strValue;
127
+ language;
112
128
  constructor(typedValue, dataType, strValue, language) {
113
129
  super(typedValue, dataType, strValue, language);
114
130
  this.typedValue = typedValue;
@@ -132,6 +148,9 @@ class NumericLiteral extends Literal {
132
148
  }
133
149
  exports.NumericLiteral = NumericLiteral;
134
150
  class IntegerLiteral extends NumericLiteral {
151
+ typedValue;
152
+ strValue;
153
+ language;
135
154
  constructor(typedValue, dataType, strValue, language) {
136
155
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_INTEGER, strValue, language);
137
156
  this.typedValue = typedValue;
@@ -144,6 +163,9 @@ class IntegerLiteral extends NumericLiteral {
144
163
  }
145
164
  exports.IntegerLiteral = IntegerLiteral;
146
165
  class DecimalLiteral extends NumericLiteral {
166
+ typedValue;
167
+ strValue;
168
+ language;
147
169
  constructor(typedValue, dataType, strValue, language) {
148
170
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_DECIMAL, strValue, language);
149
171
  this.typedValue = typedValue;
@@ -156,6 +178,9 @@ class DecimalLiteral extends NumericLiteral {
156
178
  }
157
179
  exports.DecimalLiteral = DecimalLiteral;
158
180
  class FloatLiteral extends NumericLiteral {
181
+ typedValue;
182
+ strValue;
183
+ language;
159
184
  constructor(typedValue, dataType, strValue, language) {
160
185
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_FLOAT, strValue, language);
161
186
  this.typedValue = typedValue;
@@ -168,6 +193,9 @@ class FloatLiteral extends NumericLiteral {
168
193
  }
169
194
  exports.FloatLiteral = FloatLiteral;
170
195
  class DoubleLiteral extends NumericLiteral {
196
+ typedValue;
197
+ strValue;
198
+ language;
171
199
  constructor(typedValue, dataType, strValue, language) {
172
200
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_DOUBLE, strValue, language);
173
201
  this.typedValue = typedValue;
@@ -198,6 +226,8 @@ class DoubleLiteral extends NumericLiteral {
198
226
  }
199
227
  exports.DoubleLiteral = DoubleLiteral;
200
228
  class BooleanLiteral extends Literal {
229
+ typedValue;
230
+ strValue;
201
231
  constructor(typedValue, strValue, dataType) {
202
232
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_BOOLEAN, strValue);
203
233
  this.typedValue = typedValue;
@@ -209,21 +239,37 @@ class BooleanLiteral extends Literal {
209
239
  }
210
240
  exports.BooleanLiteral = BooleanLiteral;
211
241
  class LangStringLiteral extends Literal {
242
+ typedValue;
243
+ language;
212
244
  constructor(typedValue, language, dataType) {
213
245
  super(typedValue, dataType ?? Consts_1.TypeURL.RDF_LANG_STRING, typedValue, language);
214
246
  this.typedValue = typedValue;
215
247
  this.language = language;
216
248
  }
217
249
  coerceEBV() {
218
- return this.str().length > 0;
250
+ // Throws in [SPARQL 1.2](https://www.w3.org/TR/sparql12-query/#ebv), and [1.1](https://www.w3.org/TR/sparql11-query/#ebv)
251
+ return super.coerceEBV();
219
252
  }
220
253
  }
221
254
  exports.LangStringLiteral = LangStringLiteral;
255
+ class DirLangStringLiteral extends Literal {
256
+ typedValue;
257
+ language;
258
+ direction;
259
+ constructor(typedValue, language, direction, dataType) {
260
+ super(typedValue, dataType ?? Consts_1.TypeURL.RDF_DIR_LANG_STRING, typedValue, language, direction);
261
+ this.typedValue = typedValue;
262
+ this.language = language;
263
+ this.direction = direction;
264
+ }
265
+ }
266
+ exports.DirLangStringLiteral = DirLangStringLiteral;
222
267
  // https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal
223
268
  // https://www.w3.org/TR/sparql11-query/#defn_SimpleLiteral
224
269
  // https://www.w3.org/TR/sparql11-query/#func-strings
225
270
  // This does not include language tagged literals
226
271
  class StringLiteral extends Literal {
272
+ typedValue;
227
273
  /**
228
274
  * @param typedValue
229
275
  * @param dataType Should be type that implements XSD_STRING
@@ -238,6 +284,8 @@ class StringLiteral extends Literal {
238
284
  }
239
285
  exports.StringLiteral = StringLiteral;
240
286
  class DateTimeLiteral extends Literal {
287
+ typedValue;
288
+ strValue;
241
289
  constructor(typedValue, strValue, dataType) {
242
290
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_DATE_TIME, strValue);
243
291
  this.typedValue = typedValue;
@@ -249,6 +297,8 @@ class DateTimeLiteral extends Literal {
249
297
  }
250
298
  exports.DateTimeLiteral = DateTimeLiteral;
251
299
  class TimeLiteral extends Literal {
300
+ typedValue;
301
+ strValue;
252
302
  constructor(typedValue, strValue, dataType) {
253
303
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_TIME, strValue);
254
304
  this.typedValue = typedValue;
@@ -260,6 +310,8 @@ class TimeLiteral extends Literal {
260
310
  }
261
311
  exports.TimeLiteral = TimeLiteral;
262
312
  class DateLiteral extends Literal {
313
+ typedValue;
314
+ strValue;
263
315
  constructor(typedValue, strValue, dataType) {
264
316
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_DATE, strValue);
265
317
  this.typedValue = typedValue;
@@ -271,6 +323,8 @@ class DateLiteral extends Literal {
271
323
  }
272
324
  exports.DateLiteral = DateLiteral;
273
325
  class DurationLiteral extends Literal {
326
+ typedValue;
327
+ strValue;
274
328
  constructor(typedValue, strValue, dataType) {
275
329
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_DURATION, strValue);
276
330
  this.typedValue = typedValue;
@@ -282,6 +336,8 @@ class DurationLiteral extends Literal {
282
336
  }
283
337
  exports.DurationLiteral = DurationLiteral;
284
338
  class DayTimeDurationLiteral extends DurationLiteral {
339
+ typedValue;
340
+ strValue;
285
341
  constructor(typedValue, strValue, dataType) {
286
342
  super(typedValue, strValue, dataType ?? Consts_1.TypeURL.XSD_DAY_TIME_DURATION);
287
343
  this.typedValue = typedValue;
@@ -290,6 +346,8 @@ class DayTimeDurationLiteral extends DurationLiteral {
290
346
  }
291
347
  exports.DayTimeDurationLiteral = DayTimeDurationLiteral;
292
348
  class YearMonthDurationLiteral extends Literal {
349
+ typedValue;
350
+ strValue;
293
351
  constructor(typedValue, strValue, dataType) {
294
352
  super(typedValue, dataType ?? Consts_1.TypeURL.XSD_YEAR_MONTH_DURATION, strValue);
295
353
  this.typedValue = typedValue;
@@ -318,17 +376,15 @@ exports.YearMonthDurationLiteral = YearMonthDurationLiteral;
318
376
  * - ... some other more precise thing i can't find...
319
377
  */
320
378
  class NonLexicalLiteral extends Literal {
379
+ openWorldType;
321
380
  constructor(typedValue, dataType, openWorldType, strValue, language) {
322
381
  super({ toString: () => 'undefined' }, dataType, strValue, language);
323
382
  this.openWorldType = openWorldType;
324
383
  }
325
384
  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);
385
+ // Always throws in [SPARQL 1.2](https://www.w3.org/TR/sparql12-query/#ebv),
386
+ // and sometimes throws in [1.1](https://www.w3.org/TR/sparql11-query/#ebv)
387
+ return super.coerceEBV();
332
388
  }
333
389
  toRDF(dataFactory) {
334
390
  return dataFactory.literal(this.str(), this.language ?? dataFactory.namedNode(this.dataType));
@@ -344,5 +400,4 @@ function isNonLexicalLiteral(lit) {
344
400
  }
345
401
  return undefined;
346
402
  }
347
- exports.isNonLexicalLiteral = isNonLexicalLiteral;
348
403
  //# sourceMappingURL=Term.js.map
@@ -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
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Variable = void 0;
4
4
  const types_1 = require("@comunica/types");
5
5
  class Variable {
6
+ expressionType = types_1.ExpressionType.Variable;
7
+ name;
6
8
  constructor(name) {
7
- this.expressionType = types_1.ExpressionType.Variable;
8
9
  this.name = name;
9
10
  }
10
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Variable.js","sourceRoot":"","sources":["Variable.ts"],"names":[],"mappings":";;;AACA,2CAAiD;AAEjD,MAAa,QAAQ;IAGnB,YAAmB,IAAY;QAFxB,mBAAc,GAA4B,sBAAc,CAAC,QAAQ,CAAC;QAGvE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAND,4BAMC","sourcesContent":["import type { VariableExpression } from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\n\nexport class Variable implements VariableExpression {\n public expressionType: ExpressionType.Variable = ExpressionType.Variable;\n public name: string;\n public constructor(name: string) {\n this.name = name;\n }\n}\n"]}
1
+ {"version":3,"file":"Variable.js","sourceRoot":"","sources":["Variable.ts"],"names":[],"mappings":";;;AACA,2CAAiD;AAEjD,MAAa,QAAQ;IACZ,cAAc,GAA4B,sBAAc,CAAC,QAAQ,CAAC;IAClE,IAAI,CAAS;IACpB,YAAmB,IAAY;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAND,4BAMC","sourcesContent":["import type { VariableExpression } from '@comunica/types';\nimport { ExpressionType } from '@comunica/types';\n\nexport class Variable implements VariableExpression {\n public expressionType: ExpressionType.Variable = ExpressionType.Variable;\n public name: string;\n public constructor(name: string) {\n this.name = name;\n }\n}\n"]}
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 {};