@comunica/utils-expression-evaluator 5.1.3 → 5.2.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.
- package/lib/expressions/Term.js +35 -2
- package/lib/expressions/Term.js.map +1 -1
- package/lib/functions/Helpers.d.ts +7 -1
- package/lib/functions/Helpers.js +80 -5
- package/lib/functions/Helpers.js.map +1 -1
- package/lib/transformers/TermTransformer.js +37 -4
- package/lib/transformers/TermTransformer.js.map +1 -1
- package/lib/util/Errors.d.ts +3 -8
- package/lib/util/Errors.js +1 -11
- package/lib/util/Errors.js.map +1 -1
- package/package.json +5 -5
package/lib/expressions/Term.js
CHANGED
|
@@ -1,12 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
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
37
|
exports.isLiteralTermExpression = isLiteralTermExpression;
|
|
5
38
|
exports.isNonLexicalLiteral = isNonLexicalLiteral;
|
|
6
39
|
const types_1 = require("@comunica/types");
|
|
7
|
-
const C = require("../util/Consts");
|
|
40
|
+
const C = __importStar(require("../util/Consts"));
|
|
8
41
|
const Consts_1 = require("../util/Consts");
|
|
9
|
-
const Err = require("../util/Errors");
|
|
42
|
+
const Err = __importStar(require("../util/Errors"));
|
|
10
43
|
const Serialization_1 = require("../util/Serialization");
|
|
11
44
|
class Term {
|
|
12
45
|
expressionType = types_1.ExpressionType.Term;
|
|
@@ -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 } 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"]}
|
|
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"]}
|
|
@@ -41,6 +41,12 @@ export declare class Builder {
|
|
|
41
41
|
onDirLangString1(op: (expressionEvaluator: IInternalEvaluator) => (lit: E.DirLangStringLiteral) => Term, addInvalidHandling?: boolean): Builder;
|
|
42
42
|
onStringly1(op: (expressionEvaluator: IInternalEvaluator) => (lit: E.Literal<string>) => Term, addInvalidHandling?: boolean): Builder;
|
|
43
43
|
onStringly1Typed(op: (expressionEvaluator: IInternalEvaluator) => (lit: string) => Term, addInvalidHandling?: boolean): Builder;
|
|
44
|
+
/**
|
|
45
|
+
* https://www.w3.org/TR/sparql12-query/#dfn-argument-compatible
|
|
46
|
+
*/
|
|
47
|
+
verifyCompatibility(litA: E.Literal<string> | E.LangStringLiteral | E.DirLangStringLiteral, litB: E.Literal<string> | E.LangStringLiteral | E.DirLangStringLiteral): void;
|
|
48
|
+
onCompatibleStringly2(op: (expressionEvaluator: IInternalEvaluator) => (litA: E.Literal<string>, litB: E.Literal<string>) => Term, addInvalidHandling?: boolean): Builder;
|
|
49
|
+
onCompatibleStringly2Typed(op: (expressionEvaluator: IInternalEvaluator) => (litA: string, litB: string) => Term, addInvalidHandling?: boolean): Builder;
|
|
44
50
|
onNumeric1(op: (expressionEvaluator: IInternalEvaluator) => (val: E.NumericLiteral) => Term, addInvalidHandling?: boolean): Builder;
|
|
45
51
|
onDateTime1(op: (expressionEvaluator: IInternalEvaluator) => (date: E.DateTimeLiteral) => Term, addInvalidHandling?: boolean): Builder;
|
|
46
52
|
/**
|
|
@@ -75,7 +81,7 @@ export declare function integer(num: number): E.IntegerLiteral;
|
|
|
75
81
|
export declare function decimal(num: number): E.DecimalLiteral;
|
|
76
82
|
export declare function float(num: number): E.FloatLiteral;
|
|
77
83
|
export declare function double(num: number): E.DoubleLiteral;
|
|
78
|
-
export declare function string(str: string): E.StringLiteral;
|
|
84
|
+
export declare function string(str: string, dataType?: string): E.StringLiteral;
|
|
79
85
|
export declare function langString(str: string, lang: string): E.LangStringLiteral;
|
|
80
86
|
export declare function dirLangString(str: string, lang: string, direction: 'ltr' | 'rtl'): E.DirLangStringLiteral;
|
|
81
87
|
export declare function dateTime(date: IDateTimeRepresentation, str: string): E.DateTimeLiteral;
|
package/lib/functions/Helpers.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.Builder = void 0;
|
|
4
37
|
exports.declare = declare;
|
|
@@ -17,11 +50,12 @@ exports.expressionToVar = expressionToVar;
|
|
|
17
50
|
* definitions for the SPARQL functions.
|
|
18
51
|
*/
|
|
19
52
|
const context_entries_1 = require("@comunica/context-entries");
|
|
20
|
-
const E = require("../expressions");
|
|
53
|
+
const E = __importStar(require("../expressions"));
|
|
21
54
|
const expressions_1 = require("../expressions");
|
|
22
|
-
const C = require("../util/Consts");
|
|
55
|
+
const C = __importStar(require("../util/Consts"));
|
|
23
56
|
const Consts_1 = require("../util/Consts");
|
|
24
|
-
const Err = require("../util/Errors");
|
|
57
|
+
const Err = __importStar(require("../util/Errors"));
|
|
58
|
+
const Errors_1 = require("../util/Errors");
|
|
25
59
|
const OverloadTree_1 = require("./OverloadTree");
|
|
26
60
|
function declare(identifier) {
|
|
27
61
|
return new Builder(identifier);
|
|
@@ -119,6 +153,47 @@ class Builder {
|
|
|
119
153
|
onStringly1Typed(op, addInvalidHandling = true) {
|
|
120
154
|
return this.set([C.TypeAlias.SPARQL_STRINGLY], expressionEvaluator => ([lit]) => op(expressionEvaluator)(lit.typedValue), addInvalidHandling);
|
|
121
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* https://www.w3.org/TR/sparql12-query/#dfn-argument-compatible
|
|
158
|
+
*/
|
|
159
|
+
verifyCompatibility(litA, litB) {
|
|
160
|
+
// The fact that it is stringly means that it is either xsd:string or a subType, or it is langDirStr or LanStr
|
|
161
|
+
const typeA = litA.dataType;
|
|
162
|
+
const typeB = litB.dataType;
|
|
163
|
+
if (typeA === Consts_1.TypeURL.RDF_DIR_LANG_STRING) {
|
|
164
|
+
if (typeB === Consts_1.TypeURL.RDF_LANG_STRING) {
|
|
165
|
+
throw new Errors_1.IncompatibleLanguageOperation(litA, litB);
|
|
166
|
+
}
|
|
167
|
+
if (typeB === Consts_1.TypeURL.RDF_DIR_LANG_STRING &&
|
|
168
|
+
!(litA.language === litB.language && litA.direction === litB.direction)) {
|
|
169
|
+
throw new Errors_1.IncompatibleLanguageOperation(litA, litB);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else if (typeA === Consts_1.TypeURL.RDF_LANG_STRING) {
|
|
173
|
+
if (typeB === Consts_1.TypeURL.RDF_DIR_LANG_STRING) {
|
|
174
|
+
throw new Errors_1.IncompatibleLanguageOperation(litA, litB);
|
|
175
|
+
}
|
|
176
|
+
if (typeB === Consts_1.TypeURL.RDF_LANG_STRING && litA.language !== litB.language) {
|
|
177
|
+
throw new Errors_1.IncompatibleLanguageOperation(litA, litB);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// We now know A is an xsd:string derived
|
|
181
|
+
if (typeA === Consts_1.TypeURL.XSD_STRING && (typeB === Consts_1.TypeURL.RDF_DIR_LANG_STRING || typeB === Consts_1.TypeURL.RDF_LANG_STRING)) {
|
|
182
|
+
throw new Errors_1.IncompatibleLanguageOperation(litA, litB);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
onCompatibleStringly2(op, addInvalidHandling = true) {
|
|
186
|
+
return this.set([C.TypeAlias.SPARQL_STRINGLY, C.TypeAlias.SPARQL_STRINGLY], expressionEvaluator => ([litA, litB]) => {
|
|
187
|
+
this.verifyCompatibility(litA, litB);
|
|
188
|
+
return op(expressionEvaluator)(litA, litB);
|
|
189
|
+
}, addInvalidHandling);
|
|
190
|
+
}
|
|
191
|
+
onCompatibleStringly2Typed(op, addInvalidHandling = true) {
|
|
192
|
+
return this.set([C.TypeAlias.SPARQL_STRINGLY, C.TypeAlias.SPARQL_STRINGLY], expressionEvaluator => ([litA, litB]) => {
|
|
193
|
+
this.verifyCompatibility(litA, litB);
|
|
194
|
+
return op(expressionEvaluator)(litA.typedValue, litB.typedValue);
|
|
195
|
+
}, addInvalidHandling);
|
|
196
|
+
}
|
|
122
197
|
onNumeric1(op, addInvalidHandling = true) {
|
|
123
198
|
return this.set([C.TypeAlias.SPARQL_NUMERIC], expressionEvaluator => ([val]) => op(expressionEvaluator)(val), addInvalidHandling);
|
|
124
199
|
}
|
|
@@ -209,8 +284,8 @@ function float(num) {
|
|
|
209
284
|
function double(num) {
|
|
210
285
|
return new E.DoubleLiteral(num);
|
|
211
286
|
}
|
|
212
|
-
function string(str) {
|
|
213
|
-
return new E.StringLiteral(str);
|
|
287
|
+
function string(str, dataType) {
|
|
288
|
+
return new E.StringLiteral(str, dataType);
|
|
214
289
|
}
|
|
215
290
|
function langString(str, lang) {
|
|
216
291
|
return new E.LangStringLiteral(str, lang);
|
|
@@ -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 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"]}
|
|
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 { IncompatibleLanguageOperation } 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 /**\n * https://www.w3.org/TR/sparql12-query/#dfn-argument-compatible\n */\n public verifyCompatibility(\n litA: E.Literal<string> | E.LangStringLiteral | E.DirLangStringLiteral,\n litB: E.Literal<string> | E.LangStringLiteral | E.DirLangStringLiteral,\n ): void {\n // The fact that it is stringly means that it is either xsd:string or a subType, or it is langDirStr or LanStr\n const typeA = litA.dataType;\n const typeB = litB.dataType;\n if (typeA === TypeURL.RDF_DIR_LANG_STRING) {\n if (typeB === TypeURL.RDF_LANG_STRING) {\n throw new IncompatibleLanguageOperation(litA, litB);\n }\n if (typeB === TypeURL.RDF_DIR_LANG_STRING &&\n !(litA.language === litB.language && litA.direction === litB.direction)) {\n throw new IncompatibleLanguageOperation(litA, litB);\n }\n } else if (typeA === TypeURL.RDF_LANG_STRING) {\n if (typeB === TypeURL.RDF_DIR_LANG_STRING) {\n throw new IncompatibleLanguageOperation(litA, litB);\n }\n if (typeB === TypeURL.RDF_LANG_STRING && litA.language !== litB.language) {\n throw new IncompatibleLanguageOperation(litA, litB);\n }\n }\n // We now know A is an xsd:string derived\n if (typeA === TypeURL.XSD_STRING && (typeB === TypeURL.RDF_DIR_LANG_STRING || typeB === TypeURL.RDF_LANG_STRING)) {\n throw new IncompatibleLanguageOperation(litA, litB);\n }\n }\n\n public onCompatibleStringly2(\n op: (expressionEvaluator: IInternalEvaluator) => (litA: E.Literal<string>, litB: E.Literal<string>) => Term,\n addInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY, C.TypeAlias.SPARQL_STRINGLY ],\n expressionEvaluator => ([ litA, litB ]: [\n E.Literal<string> | E.LangStringLiteral | E.DirLangStringLiteral,\n E.Literal<string> | E.LangStringLiteral | E.DirLangStringLiteral,\n ]) => {\n this.verifyCompatibility(litA, litB);\n return op(expressionEvaluator)(litA, litB);\n },\n addInvalidHandling,\n );\n }\n\n public onCompatibleStringly2Typed(\n op: (expressionEvaluator: IInternalEvaluator) => (litA: string, litB: string) => Term,\n addInvalidHandling = true,\n ): Builder {\n return this.set(\n [ C.TypeAlias.SPARQL_STRINGLY, C.TypeAlias.SPARQL_STRINGLY ],\n expressionEvaluator => ([ litA, litB ]: [\n E.Literal<string> | E.LangStringLiteral | E.DirLangStringLiteral,\n E.Literal<string> | E.LangStringLiteral | E.DirLangStringLiteral,\n ]) => {\n this.verifyCompatibility(litA, litB);\n return op(expressionEvaluator)(litA.typedValue, litB.typedValue);\n },\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, dataType?: string): E.StringLiteral {\n return new E.StringLiteral(str, dataType);\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"]}
|
|
@@ -1,14 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.TermTransformer = void 0;
|
|
4
37
|
const utils_algebra_1 = require("@comunica/utils-algebra");
|
|
5
|
-
const RDFString = require("rdf-string");
|
|
6
|
-
const E = require("../expressions");
|
|
38
|
+
const RDFString = __importStar(require("rdf-string"));
|
|
39
|
+
const E = __importStar(require("../expressions"));
|
|
7
40
|
const Consts_1 = require("../util/Consts");
|
|
8
|
-
const Err = require("../util/Errors");
|
|
41
|
+
const Err = __importStar(require("../util/Errors"));
|
|
9
42
|
const Errors_1 = require("../util/Errors");
|
|
10
43
|
const Parsing_1 = require("../util/Parsing");
|
|
11
|
-
const P = require("../util/Parsing");
|
|
44
|
+
const P = __importStar(require("../util/Parsing"));
|
|
12
45
|
const TypeHandling_1 = require("../util/TypeHandling");
|
|
13
46
|
class TermTransformer {
|
|
14
47
|
superTypeProvider;
|
|
@@ -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 { 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"]}
|
|
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"]}
|
package/lib/util/Errors.d.ts
CHANGED
|
@@ -95,14 +95,9 @@ export declare class InvalidTimezoneCall extends ExpressionError {
|
|
|
95
95
|
constructor(dateString: string);
|
|
96
96
|
}
|
|
97
97
|
export declare class IncompatibleLanguageOperation extends ExpressionError {
|
|
98
|
-
arg1: E.
|
|
99
|
-
arg2: E.
|
|
100
|
-
constructor(arg1: E.
|
|
101
|
-
}
|
|
102
|
-
export declare class IncompatibleDirectionalLanguageOperation extends ExpressionError {
|
|
103
|
-
arg1: E.DirLangStringLiteral;
|
|
104
|
-
arg2: E.DirLangStringLiteral;
|
|
105
|
-
constructor(arg1: E.DirLangStringLiteral, arg2: E.DirLangStringLiteral);
|
|
98
|
+
arg1: E.Literal<string>;
|
|
99
|
+
arg2: E.Literal<string>;
|
|
100
|
+
constructor(arg1: E.Literal<string>, arg2: E.Literal<string>);
|
|
106
101
|
}
|
|
107
102
|
export declare class EmptyAggregateError extends ExpressionError {
|
|
108
103
|
constructor();
|
package/lib/util/Errors.js
CHANGED
|
@@ -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.
|
|
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.ExpressionError = void 0;
|
|
4
4
|
exports.isExpressionError = isExpressionError;
|
|
5
5
|
/**
|
|
6
6
|
* This class of error will be thrown when an expression errors.
|
|
@@ -145,16 +145,6 @@ class IncompatibleLanguageOperation extends ExpressionError {
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
exports.IncompatibleLanguageOperation = IncompatibleLanguageOperation;
|
|
148
|
-
class IncompatibleDirectionalLanguageOperation extends ExpressionError {
|
|
149
|
-
arg1;
|
|
150
|
-
arg2;
|
|
151
|
-
constructor(arg1, arg2) {
|
|
152
|
-
super(`Operation on incompatible directional language literals '${pp(arg1)}' and '${pp(arg2)}'`);
|
|
153
|
-
this.arg1 = arg1;
|
|
154
|
-
this.arg2 = arg2;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
exports.IncompatibleDirectionalLanguageOperation = IncompatibleDirectionalLanguageOperation;
|
|
158
148
|
class EmptyAggregateError extends ExpressionError {
|
|
159
149
|
constructor() {
|
|
160
150
|
super('Empty aggregate expression');
|
package/lib/util/Errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Errors.js","sourceRoot":"","sources":["Errors.ts"],"names":[],"mappings":";;;AA2BA,8CAEC;AAxBD;;;;;;;;;;;;;GAaG;AACH,MAAa,eAAgB,SAAQ,KAAK;CAAG;AAA7C,0CAA6C;AAE7C;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAY;IAC5C,OAAO,KAAK,YAAY,eAAe,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,eAAe;IAC3B;IAA1B,YAA0B,GAAa;QACrC,KAAK,CAAC,yBAAyB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QADnB,QAAG,GAAH,GAAG,CAAU;IAEvC,CAAC;CACF;AAJD,gDAIC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,eAAe;IAC7B;IAAyB;IAAnD,YAA0B,QAAgB,EAAS,QAAsB;QACvE,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QADpB,aAAQ,GAAR,QAAQ,CAAQ;QAAS,aAAQ,GAAR,QAAQ,CAAc;IAEzE,CAAC;CACF;AAJD,oDAIC;AAED;;;;;GAKG;AACH,MAAa,gBAAiB,SAAQ,eAAe;IACzB;IAA1B,YAA0B,GAAW;QACnC,KAAK,CAAC,8BAA8B,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QADxB,QAAG,GAAH,GAAG,CAAQ;IAErC,CAAC;CACF;AAJD,4CAIC;AAED;;;;GAIG;AACH,MAAa,iBAAkB,SAAQ,eAAe;IAC1B;IAA1B,YAA0B,IAAkB;QAC1C,KAAK,CAAC,uDAAuD,CAAC,CAAC;QADvC,SAAI,GAAJ,IAAI,CAAc;IAE5C,CAAC;CACF;AAJD,8CAIC;AAED;;GAEG;AACH,MAAa,aAAc,SAAQ,eAAe;IACtB;IAA1B,YAA0B,MAAe;QACvC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QADrB,WAAM,GAAN,MAAM,CAAS;IAEzC,CAAC;CACF;AAJD,sCAIC;AAED;;GAEG;AACH,MAAa,OAAQ,SAAQ,eAAe;IAChB;IAA1B,YAA0B,MAAyB;QACjD,KAAK,CACH,sDAEE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC3D,CAAC;QALsB,WAAM,GAAN,MAAM,CAAmB;IAMnD,CAAC;CACF;AARD,0BAQC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,eAAe;IAC7B;IAA2B;IAArD,YAA0B,IAAkB,EAAS,EAAqB;QACxE,KAAK,CAAC,2CAA2C,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QADtD,SAAI,GAAJ,IAAI,CAAc;QAAS,OAAE,GAAF,EAAE,CAAmB;IAE1E,CAAC;CACF;AAJD,oDAIC;AAED;;GAEG;AACH,MAAa,SAAa,SAAQ,eAAe;IACrB;IAA1B,YAA0B,GAAM,EAAE,IAAe;QAC/C,KAAK,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAD7B,QAAG,GAAH,GAAG,CAAG;IAEhC,CAAC;CACF;AAJD,8BAIC;AAED,MAAa,mBAAoB,SAAQ,eAAe;IAC5B;IAA1B,YAA0B,UAAkB;QAC1C,KAAK,CAAC,oBAAoB,UAAU,wBAAwB,CAAC,CAAC;QADtC,eAAU,GAAV,UAAU,CAAQ;IAE5C,CAAC;CACF;AAJD,kDAIC;AAED,MAAa,6BAA8B,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"Errors.js","sourceRoot":"","sources":["Errors.ts"],"names":[],"mappings":";;;AA2BA,8CAEC;AAxBD;;;;;;;;;;;;;GAaG;AACH,MAAa,eAAgB,SAAQ,KAAK;CAAG;AAA7C,0CAA6C;AAE7C;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAY;IAC5C,OAAO,KAAK,YAAY,eAAe,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,eAAe;IAC3B;IAA1B,YAA0B,GAAa;QACrC,KAAK,CAAC,yBAAyB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QADnB,QAAG,GAAH,GAAG,CAAU;IAEvC,CAAC;CACF;AAJD,gDAIC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,eAAe;IAC7B;IAAyB;IAAnD,YAA0B,QAAgB,EAAS,QAAsB;QACvE,KAAK,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QADpB,aAAQ,GAAR,QAAQ,CAAQ;QAAS,aAAQ,GAAR,QAAQ,CAAc;IAEzE,CAAC;CACF;AAJD,oDAIC;AAED;;;;;GAKG;AACH,MAAa,gBAAiB,SAAQ,eAAe;IACzB;IAA1B,YAA0B,GAAW;QACnC,KAAK,CAAC,8BAA8B,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QADxB,QAAG,GAAH,GAAG,CAAQ;IAErC,CAAC;CACF;AAJD,4CAIC;AAED;;;;GAIG;AACH,MAAa,iBAAkB,SAAQ,eAAe;IAC1B;IAA1B,YAA0B,IAAkB;QAC1C,KAAK,CAAC,uDAAuD,CAAC,CAAC;QADvC,SAAI,GAAJ,IAAI,CAAc;IAE5C,CAAC;CACF;AAJD,8CAIC;AAED;;GAEG;AACH,MAAa,aAAc,SAAQ,eAAe;IACtB;IAA1B,YAA0B,MAAe;QACvC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QADrB,WAAM,GAAN,MAAM,CAAS;IAEzC,CAAC;CACF;AAJD,sCAIC;AAED;;GAEG;AACH,MAAa,OAAQ,SAAQ,eAAe;IAChB;IAA1B,YAA0B,MAAyB;QACjD,KAAK,CACH,sDAEE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC3D,CAAC;QALsB,WAAM,GAAN,MAAM,CAAmB;IAMnD,CAAC;CACF;AARD,0BAQC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,eAAe;IAC7B;IAA2B;IAArD,YAA0B,IAAkB,EAAS,EAAqB;QACxE,KAAK,CAAC,2CAA2C,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QADtD,SAAI,GAAJ,IAAI,CAAc;QAAS,OAAE,GAAF,EAAE,CAAmB;IAE1E,CAAC;CACF;AAJD,oDAIC;AAED;;GAEG;AACH,MAAa,SAAa,SAAQ,eAAe;IACrB;IAA1B,YAA0B,GAAM,EAAE,IAAe;QAC/C,KAAK,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAD7B,QAAG,GAAH,GAAG,CAAG;IAEhC,CAAC;CACF;AAJD,8BAIC;AAED,MAAa,mBAAoB,SAAQ,eAAe;IAC5B;IAA1B,YAA0B,UAAkB;QAC1C,KAAK,CAAC,oBAAoB,UAAU,wBAAwB,CAAC,CAAC;QADtC,eAAU,GAAV,UAAU,CAAQ;IAE5C,CAAC;CACF;AAJD,kDAIC;AAED,MAAa,6BAA8B,SAAQ,eAAe;IAEvD;IACA;IAFT,YACS,IAAuB,EACvB,IAAuB;QAE9B,KAAK,CAAC,gDAAgD,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAH9E,SAAI,GAAJ,IAAI,CAAmB;QACvB,SAAI,GAAJ,IAAI,CAAmB;IAGhC,CAAC;CACF;AAPD,sEAOC;AAED,MAAa,mBAAoB,SAAQ,eAAe;IACtD;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtC,CAAC;CACF;AAJD,kDAIC;AAED,MAAa,UAAW,SAAQ,eAAe;IAC7C,YAAmB,GAAW,EAAE,IAAY;QAC1C,KAAK,CAAC,oBAAoB,GAAG,QAAQ,IAAI,GAAG,CAAC,CAAC;IAChD,CAAC;CACF;AAJD,gCAIC;AAED,+EAA+E;AAE/E;;;;GAIG;AACH,MAAa,eAAmB,SAAQ,KAAK;IACA;IAA3C,YAAmB,OAAe,EAAS,OAAW;QACpD,KAAK,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC;QADE,YAAO,GAAP,OAAO,CAAI;IAEtD,CAAC;CACF;AAJD,0CAIC;AAED,MAAa,YAAa,SAAQ,KAAK;IACX;IAA2B;IAArD,YAA0B,IAAkB,EAAS,EAAqB;QACxE,KAAK,CAAC,gEAAgE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAD1D,SAAI,GAAJ,IAAI,CAAc;QAAS,OAAE,GAAF,EAAE,CAAmB;IAE1E,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,iBAAqB,SAAQ,KAAK;IAC7C,YAAmB,IAAO;QACxB,KAAK,CAAC,8BAA8B,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;CACF;AAJD,8CAIC;AAED,MAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAmB,IAAY,EAAE,aAAsB;QACrD,IAAI,aAAa,YAAY,KAAK,EAAE,CAAC;YACnC,KAAK,CAAC,mBAAmB,IAAI,KAAK,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AARD,wDAQC;AAED,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAmB,IAAa;QAC9B,KAAK,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACnF,CAAC;CACF;AAJD,oCAIC;AAED,SAAS,EAAE,CAAI,MAAS;IACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC","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(\n public arg1: E.Literal<string>,\n public arg2: E.Literal<string>,\n ) {\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/utils-expression-evaluator",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.2.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": "^5.
|
|
42
|
-
"@comunica/types": "^5.
|
|
43
|
-
"@comunica/utils-algebra": "^5.
|
|
41
|
+
"@comunica/context-entries": "^5.2.0",
|
|
42
|
+
"@comunica/types": "^5.2.0",
|
|
43
|
+
"@comunica/utils-algebra": "^5.2.0",
|
|
44
44
|
"@rdfjs/types": "*",
|
|
45
45
|
"lru-cache": "^11.2.2",
|
|
46
46
|
"rdf-data-factory": "^2.0.0",
|
|
47
47
|
"rdf-string": "^2.0.1"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "ebb0e79bddcd850fcb8d0fb5b422af88e67fa283"
|
|
50
50
|
}
|