@comunica/utils-expression-evaluator 4.4.2-alpha.49.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/expressions/Aggregate.js +3 -1
- package/lib/expressions/Aggregate.js.map +1 -1
- package/lib/expressions/Existence.js +2 -1
- package/lib/expressions/Existence.js.map +1 -1
- package/lib/expressions/Expressions.js +1 -2
- package/lib/expressions/Expressions.js.map +1 -1
- package/lib/expressions/Operator.js +4 -1
- package/lib/expressions/Operator.js.map +1 -1
- package/lib/expressions/Term.js +56 -11
- package/lib/expressions/Term.js.map +1 -1
- package/lib/expressions/Variable.js +2 -1
- package/lib/expressions/Variable.js.map +1 -1
- package/lib/functions/Helpers.js +14 -12
- package/lib/functions/Helpers.js.map +1 -1
- package/lib/functions/OverloadTree.js +8 -0
- package/lib/functions/OverloadTree.js.map +1 -1
- package/lib/transformers/TermTransformer.js +1 -0
- package/lib/transformers/TermTransformer.js.map +1 -1
- package/lib/util/Consts.js +2 -3
- package/lib/util/Consts.js.map +1 -1
- package/lib/util/Context.js +1 -2
- package/lib/util/Context.js.map +1 -1
- package/lib/util/DateTimeHelpers.js +15 -16
- package/lib/util/DateTimeHelpers.js.map +1 -1
- package/lib/util/Errors.js +20 -2
- package/lib/util/Errors.js.map +1 -1
- package/lib/util/Parsing.d.ts +0 -1
- package/lib/util/Parsing.js +8 -11
- package/lib/util/Parsing.js.map +1 -1
- package/lib/util/Serialization.js +4 -5
- package/lib/util/Serialization.js.map +1 -1
- package/lib/util/SpecAlgos.js +3 -4
- package/lib/util/SpecAlgos.js.map +1 -1
- package/lib/util/TypeHandling.js +10 -10
- package/lib/util/TypeHandling.js.map +1 -1
- package/package.json +6 -6
|
@@ -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 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"]}
|
|
@@ -8,6 +8,14 @@ const TypeHandling_1 = require("../util/TypeHandling");
|
|
|
8
8
|
* When adding any functionality to this class, make sure you add it to SpecialFunctions as well.
|
|
9
9
|
*/
|
|
10
10
|
class OverloadTree {
|
|
11
|
+
identifier;
|
|
12
|
+
implementation;
|
|
13
|
+
// We need this field. e.g. decimal decimal should be kept even when double double is added.
|
|
14
|
+
// We use promotion count to check priority.
|
|
15
|
+
promotionCount;
|
|
16
|
+
generalOverloads;
|
|
17
|
+
literalOverLoads;
|
|
18
|
+
depth;
|
|
11
19
|
constructor(identifier, depth) {
|
|
12
20
|
this.identifier = identifier;
|
|
13
21
|
this.implementation = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverloadTree.js","sourceRoot":"","sources":["OverloadTree.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n FunctionArgumentsCache,\n GeneralSuperTypeDict,\n IFunctionArgumentsCacheObj,\n ImplementationFunction,\n ISuperTypeProvider,\n TermExpression,\n TermType,\n} from '@comunica/types';\nimport { isLiteralTermExpression } from '../expressions';\nimport type * as C from '../util/Consts';\nimport type { OverrideType } from '../util/TypeHandling';\nimport {\n asGeneralType,\n asKnownLiteralType,\n asOverrideType,\n getSuperTypes,\n superTypeDictTable,\n typePromotion,\n} from '../util/TypeHandling';\n\n// Function and operator arguments are 'flattened' in the SPARQL spec.\n// If the argument is a literal, the datatype often also matters.\nexport type ArgumentType = 'term' | TermType | C.TypeURL | C.TypeAlias;\n\nexport type SearchStack = OverloadTree[];\n\n/**\n * Maps argument types on their specific implementation in a tree like structure.\n * When adding any functionality to this class, make sure you add it to SpecialFunctions as well.\n */\nexport class OverloadTree {\n private implementation?: ImplementationFunction | undefined;\n // We need this field. e.g. decimal decimal should be kept even when double double is added.\n // We use promotion count to check priority.\n private promotionCount?: number | undefined;\n private readonly generalOverloads: Record<'term' | TermType, OverloadTree>;\n private readonly literalOverLoads: [OverrideType, OverloadTree][];\n private readonly depth: number;\n\n public constructor(private readonly identifier: string, depth?: number) {\n this.implementation = undefined;\n this.generalOverloads = Object.create(null);\n this.literalOverLoads = [];\n this.depth = depth ?? 0;\n this.promotionCount = undefined;\n }\n\n private getSubtree(overrideType: ArgumentType): OverloadTree | undefined {\n const generalType = asGeneralType(overrideType);\n if (generalType) {\n return this.generalOverloads[generalType];\n }\n for (const [ type, overloadTree ] of this.literalOverLoads) {\n if (overrideType === type) {\n return overloadTree;\n }\n }\n return undefined;\n }\n\n /**\n * Get the implementation for the types that exactly match @param args .\n */\n public getImplementationExact(args: ArgumentType[]): ImplementationFunction | undefined {\n // eslint-disable-next-line ts/no-this-alias\n let node: OverloadTree | undefined = this;\n for (const expression of args) {\n node = node.getSubtree(expression);\n if (!node) {\n return undefined;\n }\n }\n return node.implementation;\n }\n\n /**\n * Searches in a depth first way for the best matching overload. considering this a the tree's root.\n * @param args the arguments to the function.\n * @param superTypeProvider\n * @param functionArgumentsCache\n */\n public search(\n args: TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ):\n ImplementationFunction | undefined {\n let cacheIter: IFunctionArgumentsCacheObj | undefined = functionArgumentsCache[this.identifier];\n let searchIndex = 0;\n while (searchIndex < args.length && cacheIter?.cache) {\n const term = args[searchIndex];\n const literalExpression = isLiteralTermExpression(term);\n cacheIter = cacheIter.cache[literalExpression ? literalExpression.dataType : term.termType];\n searchIndex++;\n }\n if (searchIndex === args.length && cacheIter?.func) {\n return cacheIter.func;\n }\n\n // SearchStack is a stack of all node's that need to be checked for implementation.\n // It provides an easy way to keep order in our search.\n const searchStack: { node: OverloadTree; index: number }[] = [];\n const startIndex = 0;\n if (args.length === 0) {\n return this.implementation;\n }\n // GetSubTreeWithArg return a SearchStack containing the node's that should be contacted next.\n // We also log the index since there is no other way to remember this index.\n // the provided stack should be pushed on top of our search stack since it also has it's order.\n searchStack.push(...this.getSubTreeWithArg(args[startIndex], superTypeProvider).map(node =>\n ({ node, index: startIndex + 1 })));\n while (searchStack.length > 0) {\n const { index, node } = <{ node: OverloadTree; index: number }>searchStack.pop();\n // We check the implementation because it would be possible a path is created but not implemented.\n // ex: f(double, double, double) and f(term, term). and calling f(double, double).\n if (index === args.length && node.implementation) {\n this.addToCache(functionArgumentsCache, args, node.implementation);\n return node.implementation;\n }\n searchStack.push(...node.getSubTreeWithArg(args[index], superTypeProvider).map(item =>\n ({ node: item, index: index + 1 })));\n }\n // Calling a function with one argument but finding no implementation should return no implementation.\n // Not even the one with no arguments.\n return undefined;\n }\n\n private addToCache(\n functionArgumentsCache: FunctionArgumentsCache,\n args: TermExpression[],\n func?: ImplementationFunction | undefined,\n ): void {\n function getDefault(lruCache: FunctionArgumentsCache, key: string): IFunctionArgumentsCacheObj {\n if (!(key in lruCache)) {\n lruCache[key] = {};\n }\n return lruCache[key];\n }\n let cache = getDefault(functionArgumentsCache, this.identifier);\n for (const term of args) {\n const literalExpression = isLiteralTermExpression(term);\n const key = literalExpression ? literalExpression.dataType : term.termType;\n cache.cache = cache.cache ?? {};\n cache = getDefault(cache.cache, key);\n }\n cache.func = func;\n }\n\n /**\n * Adds an overload to the tree structure considering this as the tree's root.\n * @param argumentTypes a list of argumentTypes that would need to be provided in\n * the same order to get the implementation.\n * @param func the implementation for this overload.\n */\n public addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction): void {\n this._addOverload([ ...argumentTypes ], func, 0);\n }\n\n private _addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction, promotionCount: number): void {\n const [ argumentType, ..._argumentTypes ] = argumentTypes;\n if (!argumentType) {\n if (this.promotionCount === undefined || promotionCount <= this.promotionCount) {\n this.promotionCount = promotionCount;\n this.implementation = func;\n }\n return;\n }\n let nextTree = this.getSubtree(argumentType);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n const generalType = asGeneralType(argumentType);\n if (generalType) {\n this.generalOverloads[generalType] = newNode;\n }\n const overrideType = asOverrideType(argumentType);\n if (overrideType) {\n this.literalOverLoads.push([ overrideType, newNode ]);\n }\n nextTree = newNode;\n }\n nextTree._addOverload(_argumentTypes, func, promotionCount);\n\n if (typePromotion[argumentType]) {\n for (const ret of typePromotion[argumentType]!) {\n this.addPromotedOverload(\n ret.typeToPromote,\n func,\n ret.conversionFunction,\n _argumentTypes,\n promotionCount,\n );\n }\n }\n }\n\n private addPromotedOverload(\n typeToPromote: OverrideType,\n func: ImplementationFunction,\n conversionFunction: (arg: TermExpression) => TermExpression,\n argumentTypes: ArgumentType[],\n promotionCount: number,\n ): void {\n let nextTree = this.getSubtree(typeToPromote);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n this.literalOverLoads.push([ typeToPromote, newNode ]);\n nextTree = newNode;\n }\n nextTree._addOverload(argumentTypes, funcConf => args => func(funcConf)([\n ...args.slice(0, this.depth),\n conversionFunction(args[this.depth]),\n ...args.slice(this.depth + 1, args.length),\n ]), promotionCount + 1);\n }\n\n /**\n * @param arg term to try and match to possible overloads of this node.\n * @param openWorldType interface allowing to discover relations between types.\n * @returns SearchStack a stack with top element the next node that should be asked for implementation or overload.\n */\n private getSubTreeWithArg(arg: TermExpression, openWorldType: ISuperTypeProvider): SearchStack {\n const res: SearchStack = [];\n const literalExpression = isLiteralTermExpression(arg);\n // These types refer to Type exported by lib/util/Consts.ts\n if (this.generalOverloads.term) {\n res.push(this.generalOverloads.term);\n }\n // TermTypes are defined in E.TermType.\n if (this.generalOverloads[arg.termType]) {\n res.push(this.generalOverloads[arg.termType]);\n }\n if (literalExpression) {\n // Defending implementation. Mainly the scary sort.\n // This function has cost O(n) + O(m * log(m)) with n = amount of overloads and m = amount of matched overloads\n // We map over each of the overloads, filter only the once that can be used (this is normally 1 or 2).\n // The sort function on an array with 1 or 2 arguments will be negligible.\n const concreteType = asKnownLiteralType(literalExpression.dataType);\n let subExtensionTable: GeneralSuperTypeDict;\n if (concreteType) {\n // Concrete dataType is known by utils-expression-evaluator.\n subExtensionTable = superTypeDictTable[concreteType];\n } else {\n // Datatype is a custom datatype\n subExtensionTable = getSuperTypes(literalExpression.dataType, openWorldType);\n }\n const matches: [number, OverloadTree][] = this.literalOverLoads.filter(([ matchType, _ ]) =>\n matchType in subExtensionTable)\n .map(([ matchType, tree ]) => [ subExtensionTable[<C.KnownLiteralTypes> matchType], tree ]);\n // eslint-disable-next-line unused-imports/no-unused-vars\n matches.sort(([ prioA, matchTypeA ], [ prioB, matchTypeB ]) => prioA - prioB);\n res.push(...matches.map(([ _, sortedType ]) => sortedType));\n }\n return res;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"OverloadTree.js","sourceRoot":"","sources":["OverloadTree.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n FunctionArgumentsCache,\n GeneralSuperTypeDict,\n IFunctionArgumentsCacheObj,\n ImplementationFunction,\n ISuperTypeProvider,\n TermExpression,\n TermType,\n} from '@comunica/types';\nimport { isLiteralTermExpression } from '../expressions';\nimport type * as C from '../util/Consts';\nimport type { OverrideType } from '../util/TypeHandling';\nimport {\n asGeneralType,\n asKnownLiteralType,\n asOverrideType,\n getSuperTypes,\n superTypeDictTable,\n typePromotion,\n} from '../util/TypeHandling';\n\n// Function and operator arguments are 'flattened' in the SPARQL spec.\n// If the argument is a literal, the datatype often also matters.\nexport type ArgumentType = 'term' | TermType | C.TypeURL | C.TypeAlias;\n\nexport type SearchStack = OverloadTree[];\n\n/**\n * Maps argument types on their specific implementation in a tree like structure.\n * When adding any functionality to this class, make sure you add it to SpecialFunctions as well.\n */\nexport class OverloadTree {\n private implementation?: ImplementationFunction | undefined;\n // We need this field. e.g. decimal decimal should be kept even when double double is added.\n // We use promotion count to check priority.\n private promotionCount?: number | undefined;\n private readonly generalOverloads: Record<'term' | TermType, OverloadTree>;\n private readonly literalOverLoads: [OverrideType, OverloadTree][];\n private readonly depth: number;\n\n public constructor(private readonly identifier: string, depth?: number) {\n this.implementation = undefined;\n this.generalOverloads = Object.create(null);\n this.literalOverLoads = [];\n this.depth = depth ?? 0;\n this.promotionCount = undefined;\n }\n\n private getSubtree(overrideType: ArgumentType): OverloadTree | undefined {\n const generalType = asGeneralType(overrideType);\n if (generalType) {\n return this.generalOverloads[generalType];\n }\n for (const [ type, overloadTree ] of this.literalOverLoads) {\n if (overrideType === type) {\n return overloadTree;\n }\n }\n return undefined;\n }\n\n /**\n * Get the implementation for the types that exactly match @param args .\n */\n public getImplementationExact(args: ArgumentType[]): ImplementationFunction | undefined {\n // eslint-disable-next-line ts/no-this-alias\n let node: OverloadTree | undefined = this;\n for (const expression of args) {\n node = node.getSubtree(expression);\n if (!node) {\n return undefined;\n }\n }\n return node.implementation;\n }\n\n /**\n * Searches in a depth first way for the best matching overload. considering this a the tree's root.\n * @param args the arguments to the function.\n * @param superTypeProvider\n * @param functionArgumentsCache\n */\n public search(\n args: TermExpression[],\n superTypeProvider: ISuperTypeProvider,\n functionArgumentsCache: FunctionArgumentsCache,\n ):\n ImplementationFunction | undefined {\n let cacheIter: IFunctionArgumentsCacheObj | undefined = functionArgumentsCache[this.identifier];\n let searchIndex = 0;\n while (searchIndex < args.length && cacheIter?.cache) {\n const term = args[searchIndex];\n const literalExpression = isLiteralTermExpression(term);\n cacheIter = cacheIter.cache[literalExpression ? literalExpression.dataType : term.termType];\n searchIndex++;\n }\n if (searchIndex === args.length && cacheIter?.func) {\n return cacheIter.func;\n }\n\n // SearchStack is a stack of all node's that need to be checked for implementation.\n // It provides an easy way to keep order in our search.\n const searchStack: { node: OverloadTree; index: number }[] = [];\n const startIndex = 0;\n if (args.length === 0) {\n return this.implementation;\n }\n // GetSubTreeWithArg return a SearchStack containing the node's that should be contacted next.\n // We also log the index since there is no other way to remember this index.\n // the provided stack should be pushed on top of our search stack since it also has it's order.\n searchStack.push(...this.getSubTreeWithArg(args[startIndex], superTypeProvider).map(node =>\n ({ node, index: startIndex + 1 })));\n while (searchStack.length > 0) {\n const { index, node } = <{ node: OverloadTree; index: number }>searchStack.pop();\n // We check the implementation because it would be possible a path is created but not implemented.\n // ex: f(double, double, double) and f(term, term). and calling f(double, double).\n if (index === args.length && node.implementation) {\n this.addToCache(functionArgumentsCache, args, node.implementation);\n return node.implementation;\n }\n searchStack.push(...node.getSubTreeWithArg(args[index], superTypeProvider).map(item =>\n ({ node: item, index: index + 1 })));\n }\n // Calling a function with one argument but finding no implementation should return no implementation.\n // Not even the one with no arguments.\n return undefined;\n }\n\n private addToCache(\n functionArgumentsCache: FunctionArgumentsCache,\n args: TermExpression[],\n func?: ImplementationFunction | undefined,\n ): void {\n function getDefault(lruCache: FunctionArgumentsCache, key: string): IFunctionArgumentsCacheObj {\n if (!(key in lruCache)) {\n lruCache[key] = {};\n }\n return lruCache[key];\n }\n let cache = getDefault(functionArgumentsCache, this.identifier);\n for (const term of args) {\n const literalExpression = isLiteralTermExpression(term);\n const key = literalExpression ? literalExpression.dataType : term.termType;\n cache.cache = cache.cache ?? {};\n cache = getDefault(cache.cache, key);\n }\n cache.func = func;\n }\n\n /**\n * Adds an overload to the tree structure considering this as the tree's root.\n * @param argumentTypes a list of argumentTypes that would need to be provided in\n * the same order to get the implementation.\n * @param func the implementation for this overload.\n */\n public addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction): void {\n this._addOverload([ ...argumentTypes ], func, 0);\n }\n\n private _addOverload(argumentTypes: ArgumentType[], func: ImplementationFunction, promotionCount: number): void {\n const [ argumentType, ..._argumentTypes ] = argumentTypes;\n if (!argumentType) {\n if (this.promotionCount === undefined || promotionCount <= this.promotionCount) {\n this.promotionCount = promotionCount;\n this.implementation = func;\n }\n return;\n }\n let nextTree = this.getSubtree(argumentType);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n const generalType = asGeneralType(argumentType);\n if (generalType) {\n this.generalOverloads[generalType] = newNode;\n }\n const overrideType = asOverrideType(argumentType);\n if (overrideType) {\n this.literalOverLoads.push([ overrideType, newNode ]);\n }\n nextTree = newNode;\n }\n nextTree._addOverload(_argumentTypes, func, promotionCount);\n\n if (typePromotion[argumentType]) {\n for (const ret of typePromotion[argumentType]) {\n this.addPromotedOverload(\n ret.typeToPromote,\n func,\n ret.conversionFunction,\n _argumentTypes,\n promotionCount,\n );\n }\n }\n }\n\n private addPromotedOverload(\n typeToPromote: OverrideType,\n func: ImplementationFunction,\n conversionFunction: (arg: TermExpression) => TermExpression,\n argumentTypes: ArgumentType[],\n promotionCount: number,\n ): void {\n let nextTree = this.getSubtree(typeToPromote);\n if (!nextTree) {\n const newNode = new OverloadTree(this.identifier, this.depth + 1);\n this.literalOverLoads.push([ typeToPromote, newNode ]);\n nextTree = newNode;\n }\n nextTree._addOverload(argumentTypes, funcConf => args => func(funcConf)([\n ...args.slice(0, this.depth),\n conversionFunction(args[this.depth]),\n ...args.slice(this.depth + 1, args.length),\n ]), promotionCount + 1);\n }\n\n /**\n * @param arg term to try and match to possible overloads of this node.\n * @param openWorldType interface allowing to discover relations between types.\n * @returns SearchStack a stack with top element the next node that should be asked for implementation or overload.\n */\n private getSubTreeWithArg(arg: TermExpression, openWorldType: ISuperTypeProvider): SearchStack {\n const res: SearchStack = [];\n const literalExpression = isLiteralTermExpression(arg);\n // These types refer to Type exported by lib/util/Consts.ts\n if (this.generalOverloads.term) {\n res.push(this.generalOverloads.term);\n }\n // TermTypes are defined in E.TermType.\n if (this.generalOverloads[arg.termType]) {\n res.push(this.generalOverloads[arg.termType]);\n }\n if (literalExpression) {\n // Defending implementation. Mainly the scary sort.\n // This function has cost O(n) + O(m * log(m)) with n = amount of overloads and m = amount of matched overloads\n // We map over each of the overloads, filter only the once that can be used (this is normally 1 or 2).\n // The sort function on an array with 1 or 2 arguments will be negligible.\n const concreteType = asKnownLiteralType(literalExpression.dataType);\n let subExtensionTable: GeneralSuperTypeDict;\n if (concreteType) {\n // Concrete dataType is known by utils-expression-evaluator.\n subExtensionTable = superTypeDictTable[concreteType];\n } else {\n // Datatype is a custom datatype\n subExtensionTable = getSuperTypes(literalExpression.dataType, openWorldType);\n }\n const matches: [number, OverloadTree][] = this.literalOverLoads.filter(([ matchType, _ ]) =>\n matchType in subExtensionTable)\n .map(([ matchType, tree ]) => [ subExtensionTable[<C.KnownLiteralTypes> matchType], tree ]);\n // eslint-disable-next-line unused-imports/no-unused-vars\n matches.sort(([ prioA, matchTypeA ], [ prioB, matchTypeB ]) => prioA - prioB);\n res.push(...matches.map(([ _, sortedType ]) => sortedType));\n }\n return res;\n }\n}\n"]}
|
|
@@ -11,6 +11,7 @@ const Parsing_1 = require("../util/Parsing");
|
|
|
11
11
|
const P = require("../util/Parsing");
|
|
12
12
|
const TypeHandling_1 = require("../util/TypeHandling");
|
|
13
13
|
class TermTransformer {
|
|
14
|
+
superTypeProvider;
|
|
14
15
|
constructor(superTypeProvider) {
|
|
15
16
|
this.superTypeProvider = superTypeProvider;
|
|
16
17
|
}
|
|
@@ -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/Consts.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SparqlOperator = exports.TypeURL = exports.
|
|
3
|
+
exports.SparqlOperator = exports.TypeURL = exports.TypeAlias = void 0;
|
|
4
|
+
exports.typedLiteral = typedLiteral;
|
|
4
5
|
const rdf_data_factory_1 = require("rdf-data-factory");
|
|
5
6
|
var TypeAlias;
|
|
6
7
|
(function (TypeAlias) {
|
|
@@ -19,7 +20,6 @@ const DF = new rdf_data_factory_1.DataFactory();
|
|
|
19
20
|
function typedLiteral(value, type) {
|
|
20
21
|
return DF.literal(value, DF.namedNode(type));
|
|
21
22
|
}
|
|
22
|
-
exports.typedLiteral = typedLiteral;
|
|
23
23
|
var TypeURL;
|
|
24
24
|
(function (TypeURL) {
|
|
25
25
|
TypeURL["XSD_ANY_URI"] = "http://www.w3.org/2001/XMLSchema#anyURI";
|
|
@@ -70,7 +70,6 @@ var TypeURL;
|
|
|
70
70
|
TypeURL["XSD_DAY_TIME_DURATION"] = "http://www.w3.org/2001/XMLSchema#dayTimeDuration";
|
|
71
71
|
TypeURL["XSD_UNTYPED_ATOMIC"] = "http://www.w3.org/2001/XMLSchema#untypedAtomic";
|
|
72
72
|
})(TypeURL || (exports.TypeURL = TypeURL = {}));
|
|
73
|
-
// TODO: Remove unneeded double typing
|
|
74
73
|
var SparqlOperator;
|
|
75
74
|
(function (SparqlOperator) {
|
|
76
75
|
// Operator mapping
|
package/lib/util/Consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Consts.js","sourceRoot":"","sources":["Consts.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\n\nexport type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since utils-expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nconst DF = new DataFactory();\n\nexport function typedLiteral(value: string, type: TypeURL): RDF.Literal {\n return DF.literal(value, DF.namedNode(type));\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n RDF_DIR_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n XSD_UNTYPED_ATOMIC = 'http://www.w3.org/2001/XMLSchema#untypedAtomic',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type GeneralOperator = KnownOperator | string;\n\nexport type KnownOperator = SparqlOperator | NamedOperator;\n\n// TODO: Remove unneeded double typing\nexport enum SparqlOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n HAS_LANG = 'haslang',\n HAS_LANGDIR = 'haslangdir',\n STR = 'str',\n LANG = 'lang',\n LANGDIR = 'langdir',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n BNODE = 'bnode',\n STRDT = 'strdt',\n STRLANG = 'strlang',\n STRLANGDIR = 'strlangdir',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n CONCAT = 'concat',\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n}\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n"]}
|
|
1
|
+
{"version":3,"file":"Consts.js","sourceRoot":"","sources":["Consts.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\n\nexport type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since utils-expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nconst DF = new DataFactory();\n\nexport function typedLiteral(value: string, type: TypeURL): RDF.Literal {\n return DF.literal(value, DF.namedNode(type));\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n RDF_DIR_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#dirLangString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n XSD_UNTYPED_ATOMIC = 'http://www.w3.org/2001/XMLSchema#untypedAtomic',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type GeneralOperator = KnownOperator | string;\n\nexport type KnownOperator = SparqlOperator | NamedOperator;\n\nexport enum SparqlOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n HAS_LANG = 'haslang',\n HAS_LANGDIR = 'haslangdir',\n STR = 'str',\n LANG = 'lang',\n LANGDIR = 'langdir',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n BNODE = 'bnode',\n STRDT = 'strdt',\n STRLANG = 'strlang',\n STRLANGDIR = 'strlangdir',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n CONCAT = 'concat',\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n}\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n"]}
|
package/lib/util/Context.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.prepareEvaluatorActionContext =
|
|
3
|
+
exports.prepareEvaluatorActionContext = prepareEvaluatorActionContext;
|
|
4
4
|
const context_entries_1 = require("@comunica/context-entries");
|
|
5
5
|
const lru_cache_1 = require("lru-cache");
|
|
6
6
|
const DateTimeHelpers_1 = require("./DateTimeHelpers");
|
|
@@ -28,5 +28,4 @@ function prepareEvaluatorActionContext(orgContext) {
|
|
|
28
28
|
});
|
|
29
29
|
return context;
|
|
30
30
|
}
|
|
31
|
-
exports.prepareEvaluatorActionContext = prepareEvaluatorActionContext;
|
|
32
31
|
//# sourceMappingURL=Context.js.map
|
package/lib/util/Context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.js","sourceRoot":"","sources":["Context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["Context.ts"],"names":[],"mappings":";;AAMA,sEAoCC;AA1CD,+DAAmF;AAGnF,yCAAqC;AACrC,uDAAoD;AAEpD,SAAgB,6BAA6B,CAAC,UAA0B;IACtE,IAAI,OAAO,GAAG,UAAU,CAAC;IAEzB,uDAAuD;IACvD,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;IAC9G,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,OAAO,CAAC,GAAG,CACnB,yCAAuB,CAAC,wBAAwB,EAChD,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,CACpD,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzD,MAAM,kBAAkB,GAA2C,OAAO,CAAC,OAAO,CAChF,+BAAa,CAAC,kBAAkB,CACjC,CAAC;QACF,OAAO,GAAG,OAAO,CAAC,GAAG,CACnB,yCAAuB,CAAC,wBAAwB,EAChD,KAAK,EAAC,iBAAgC,EAAE,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACvF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,wDAAwD;QACxD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,yCAAuB,CAAC,wBAAwB,EAAE,KAAK,IAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvG,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,UAAU,CAC1B,yCAAuB,CAAC,eAAe,EACvC,IAAA,iCAAe,EAAC,OAAO,CAAC,OAAO,CAAC,+BAAa,CAAC,cAAc,CAAC,CAAC,CAC/D,CAAC;IAEF,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,yCAAuB,CAAC,iBAAiB,EAAE;QACtE,KAAK,EAAE,IAAI,oBAAQ,CAA+B,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACjE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { KeysExpressionEvaluator, KeysInitQuery } from '@comunica/context-entries';\nimport type { AsyncExtensionFunction, GeneralSuperTypeDict, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport { extractTimeZone } from './DateTimeHelpers';\n\nexport function prepareEvaluatorActionContext(orgContext: IActionContext): IActionContext {\n let context = orgContext;\n\n // Handle two variants of providing extension functions\n if (context.has(KeysInitQuery.extensionFunctionCreator) && context.has(KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n if (context.has(KeysInitQuery.extensionFunctionCreator)) {\n context = context.set(\n KeysExpressionEvaluator.extensionFunctionCreator,\n context.get(KeysInitQuery.extensionFunctionCreator),\n );\n } else if (context.has(KeysInitQuery.extensionFunctions)) {\n const extensionFunctions: Record<string, AsyncExtensionFunction> = context.getSafe(\n KeysInitQuery.extensionFunctions,\n );\n context = context.set(\n KeysExpressionEvaluator.extensionFunctionCreator,\n async(functionNamedNode: RDF.NamedNode) => extensionFunctions[functionNamedNode.value],\n );\n } else {\n // eslint-disable-next-line unicorn/no-useless-undefined\n context = context.setDefault(KeysExpressionEvaluator.extensionFunctionCreator, async() => undefined);\n }\n\n context = context.setDefault(\n KeysExpressionEvaluator.defaultTimeZone,\n extractTimeZone(context.getSafe(KeysInitQuery.queryTimestamp)),\n );\n\n context = context.setDefault(KeysExpressionEvaluator.superTypeProvider, {\n cache: new LRUCache<string, GeneralSuperTypeDict>({ max: 1_000 }),\n discoverer: () => 'term',\n });\n\n return context;\n}\n"]}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.defaultedDayTimeDurationRepresentation = defaultedDayTimeDurationRepresentation;
|
|
4
|
+
exports.defaultedYearMonthDurationRepresentation = defaultedYearMonthDurationRepresentation;
|
|
5
|
+
exports.defaultedDurationRepresentation = defaultedDurationRepresentation;
|
|
6
|
+
exports.simplifyDurationRepresentation = simplifyDurationRepresentation;
|
|
7
|
+
exports.defaultedDateTimeRepresentation = defaultedDateTimeRepresentation;
|
|
8
|
+
exports.toDateTimeRepresentation = toDateTimeRepresentation;
|
|
9
|
+
exports.negateDuration = negateDuration;
|
|
10
|
+
exports.toJSDate = toJSDate;
|
|
11
|
+
exports.toUTCDate = toUTCDate;
|
|
12
|
+
exports.trimToYearMonthDuration = trimToYearMonthDuration;
|
|
13
|
+
exports.trimToDayTimeDuration = trimToDayTimeDuration;
|
|
14
|
+
exports.yearMonthDurationsToMonths = yearMonthDurationsToMonths;
|
|
15
|
+
exports.dayTimeDurationsToSeconds = dayTimeDurationsToSeconds;
|
|
16
|
+
exports.extractRawTimeZone = extractRawTimeZone;
|
|
17
|
+
exports.extractTimeZone = extractTimeZone;
|
|
4
18
|
// Important is to notice JS and XSD datatypes have different defaulted values
|
|
5
19
|
// | Field | Default in JS | Default in XSD_DayTime | Default in XSD_Duration |
|
|
6
20
|
// | Month | 0 | 1 | 0 |
|
|
@@ -13,21 +27,18 @@ function defaultedDayTimeDurationRepresentation(rep) {
|
|
|
13
27
|
seconds: rep.seconds ?? 0,
|
|
14
28
|
};
|
|
15
29
|
}
|
|
16
|
-
exports.defaultedDayTimeDurationRepresentation = defaultedDayTimeDurationRepresentation;
|
|
17
30
|
function defaultedYearMonthDurationRepresentation(rep) {
|
|
18
31
|
return {
|
|
19
32
|
year: rep.year ?? 0,
|
|
20
33
|
month: rep.month ?? 0,
|
|
21
34
|
};
|
|
22
35
|
}
|
|
23
|
-
exports.defaultedYearMonthDurationRepresentation = defaultedYearMonthDurationRepresentation;
|
|
24
36
|
function defaultedDurationRepresentation(rep) {
|
|
25
37
|
return {
|
|
26
38
|
...defaultedDayTimeDurationRepresentation(rep),
|
|
27
39
|
...defaultedYearMonthDurationRepresentation(rep),
|
|
28
40
|
};
|
|
29
41
|
}
|
|
30
|
-
exports.defaultedDurationRepresentation = defaultedDurationRepresentation;
|
|
31
42
|
function simplifyDurationRepresentation(rep) {
|
|
32
43
|
const temp = defaultedDurationRepresentation(rep);
|
|
33
44
|
const res = {};
|
|
@@ -66,7 +77,6 @@ function simplifyDurationRepresentation(rep) {
|
|
|
66
77
|
}
|
|
67
78
|
return res;
|
|
68
79
|
}
|
|
69
|
-
exports.simplifyDurationRepresentation = simplifyDurationRepresentation;
|
|
70
80
|
function defaultedDateTimeRepresentation(rep) {
|
|
71
81
|
return {
|
|
72
82
|
...rep,
|
|
@@ -78,7 +88,6 @@ function defaultedDateTimeRepresentation(rep) {
|
|
|
78
88
|
minutes: rep.minutes ?? 0,
|
|
79
89
|
};
|
|
80
90
|
}
|
|
81
|
-
exports.defaultedDateTimeRepresentation = defaultedDateTimeRepresentation;
|
|
82
91
|
function toDateTimeRepresentation({ date, timeZone }) {
|
|
83
92
|
return {
|
|
84
93
|
year: date.getFullYear(),
|
|
@@ -91,7 +100,6 @@ function toDateTimeRepresentation({ date, timeZone }) {
|
|
|
91
100
|
zoneMinutes: timeZone.zoneMinutes,
|
|
92
101
|
};
|
|
93
102
|
}
|
|
94
|
-
exports.toDateTimeRepresentation = toDateTimeRepresentation;
|
|
95
103
|
function negateDuration(dur) {
|
|
96
104
|
return {
|
|
97
105
|
year: dur.year === undefined ? undefined : -1 * dur.year,
|
|
@@ -102,7 +110,6 @@ function negateDuration(dur) {
|
|
|
102
110
|
seconds: dur.seconds === undefined ? undefined : -1 * dur.seconds,
|
|
103
111
|
};
|
|
104
112
|
}
|
|
105
|
-
exports.negateDuration = negateDuration;
|
|
106
113
|
function toJSDate(date) {
|
|
107
114
|
// The given hours will be assumed to be local time.
|
|
108
115
|
const res = new Date(date.year, date.month - 1, date.day, date.hours, date.minutes, Math.trunc(date.seconds), (date.seconds % 1) * 1_000);
|
|
@@ -114,7 +121,6 @@ function toJSDate(date) {
|
|
|
114
121
|
}
|
|
115
122
|
return res;
|
|
116
123
|
}
|
|
117
|
-
exports.toJSDate = toJSDate;
|
|
118
124
|
function toUTCDate(date, defaultTimezone) {
|
|
119
125
|
const localTime = toJSDate(defaultedDateTimeRepresentation(date));
|
|
120
126
|
// This date has been constructed in machine local time, now we alter it to become UTC and convert to correct timezone
|
|
@@ -125,14 +131,12 @@ function toUTCDate(date, defaultTimezone) {
|
|
|
125
131
|
const minutesCorrectionUTC = date.zoneMinutes ?? defaultTimezone.zoneMinutes;
|
|
126
132
|
return new Date(localTime.getTime() - (minutesCorrectionLocal + hourCorrectionUTC * 60 + minutesCorrectionUTC) * 60 * 1_000);
|
|
127
133
|
}
|
|
128
|
-
exports.toUTCDate = toUTCDate;
|
|
129
134
|
function trimToYearMonthDuration(dur) {
|
|
130
135
|
return {
|
|
131
136
|
year: dur.year,
|
|
132
137
|
month: dur.month,
|
|
133
138
|
};
|
|
134
139
|
}
|
|
135
|
-
exports.trimToYearMonthDuration = trimToYearMonthDuration;
|
|
136
140
|
function trimToDayTimeDuration(dur) {
|
|
137
141
|
return {
|
|
138
142
|
day: dur.day,
|
|
@@ -141,26 +145,21 @@ function trimToDayTimeDuration(dur) {
|
|
|
141
145
|
seconds: dur.seconds,
|
|
142
146
|
};
|
|
143
147
|
}
|
|
144
|
-
exports.trimToDayTimeDuration = trimToDayTimeDuration;
|
|
145
148
|
function yearMonthDurationsToMonths(dur) {
|
|
146
149
|
return dur.year * 12 + dur.month;
|
|
147
150
|
}
|
|
148
|
-
exports.yearMonthDurationsToMonths = yearMonthDurationsToMonths;
|
|
149
151
|
function dayTimeDurationsToSeconds(dur) {
|
|
150
152
|
return (((dur.day * 24) + dur.hours) * 60 + dur.minutes) * 60 + dur.seconds;
|
|
151
153
|
}
|
|
152
|
-
exports.dayTimeDurationsToSeconds = dayTimeDurationsToSeconds;
|
|
153
154
|
function extractRawTimeZone(zoneContained) {
|
|
154
155
|
const extraction = /(Z|([+-]\d\d:\d\d))?$/u.exec(zoneContained);
|
|
155
156
|
// It is safe to cast here because the empty string can always match.
|
|
156
157
|
return extraction[0];
|
|
157
158
|
}
|
|
158
|
-
exports.extractRawTimeZone = extractRawTimeZone;
|
|
159
159
|
function extractTimeZone(date) {
|
|
160
160
|
return {
|
|
161
161
|
zoneHours: date.getTimezoneOffset() / 60,
|
|
162
162
|
zoneMinutes: date.getTimezoneOffset() % 60,
|
|
163
163
|
};
|
|
164
164
|
}
|
|
165
|
-
exports.extractTimeZone = extractTimeZone;
|
|
166
165
|
//# sourceMappingURL=DateTimeHelpers.js.map
|