@comunica/utils-expression-evaluator 4.2.0 → 4.4.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/util/Consts.d.ts
CHANGED
|
@@ -53,7 +53,8 @@ export declare enum TypeURL {
|
|
|
53
53
|
XSD_ID_REF = "http://www.w3.org/2001/XMLSchema#IDREF",
|
|
54
54
|
XSD_DURATION = "http://www.w3.org/2001/XMLSchema#duration",
|
|
55
55
|
XSD_YEAR_MONTH_DURATION = "http://www.w3.org/2001/XMLSchema#yearMonthDuration",
|
|
56
|
-
XSD_DAY_TIME_DURATION = "http://www.w3.org/2001/XMLSchema#dayTimeDuration"
|
|
56
|
+
XSD_DAY_TIME_DURATION = "http://www.w3.org/2001/XMLSchema#dayTimeDuration",
|
|
57
|
+
XSD_UNTYPED_ATOMIC = "http://www.w3.org/2001/XMLSchema#untypedAtomic"
|
|
57
58
|
}
|
|
58
59
|
export type GeneralOperator = KnownOperator | string;
|
|
59
60
|
export type KnownOperator = SparqlOperator | NamedOperator;
|
package/lib/util/Consts.js
CHANGED
|
@@ -67,6 +67,7 @@ var TypeURL;
|
|
|
67
67
|
TypeURL["XSD_DURATION"] = "http://www.w3.org/2001/XMLSchema#duration";
|
|
68
68
|
TypeURL["XSD_YEAR_MONTH_DURATION"] = "http://www.w3.org/2001/XMLSchema#yearMonthDuration";
|
|
69
69
|
TypeURL["XSD_DAY_TIME_DURATION"] = "http://www.w3.org/2001/XMLSchema#dayTimeDuration";
|
|
70
|
+
TypeURL["XSD_UNTYPED_ATOMIC"] = "http://www.w3.org/2001/XMLSchema#untypedAtomic";
|
|
70
71
|
})(TypeURL || (exports.TypeURL = TypeURL = {}));
|
|
71
72
|
// TODO: Remove unneeded double typing
|
|
72
73
|
var SparqlOperator;
|
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\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}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type GeneralOperator = KnownOperator | string;\n\nexport type KnownOperator = SparqlOperator | NamedOperator;\n\n// TODO: Remove unneeded double typing\nexport enum SparqlOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n STR = 'str',\n LANG = 'lang',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n BNODE = 'bnode',\n STRDT = 'strdt',\n STRLANG = 'strlang',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n CONCAT = 'concat',\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n}\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n"]}
|
|
1
|
+
{"version":3,"file":"Consts.js","sourceRoot":"","sources":["Consts.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as RDF from '@rdfjs/types';\nimport { DataFactory } from 'rdf-data-factory';\n\nexport type KnownLiteralTypes = TypeAlias | TypeURL;\n\nexport enum TypeAlias {\n // Numeric is everything defined in https://www.w3.org/TR/sparql11-query/#operandDataTypes\n SPARQL_NUMERIC = 'SPARQL_NUMERIC',\n /**\n * Stringly is everything defined in https://www.w3.org/TR/sparql11-query/#func-strings\n * In other words it is a simple literal, a plain literal with language tag, or a literal with datatype xsd:string\n * In other words, since utils-expression-evaluator transforms a simple literal to xsd_string.\n * It is RDF_LANG_STRING or XSD_STRING.\n * Reasons for this are mentioned here: w3c/sparql-12#112\n */\n SPARQL_STRINGLY = 'SPARQL_STRINGLY',\n}\n\nconst DF = new DataFactory();\n\nexport function typedLiteral(value: string, type: TypeURL): RDF.Literal {\n return DF.literal(value, DF.namedNode(type));\n}\n\nexport enum TypeURL {\n XSD_ANY_URI = 'http://www.w3.org/2001/XMLSchema#anyURI',\n XSD_STRING = 'http://www.w3.org/2001/XMLSchema#string',\n RDF_LANG_STRING = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString',\n\n XSD_BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n\n XSD_DATE_TIME = 'http://www.w3.org/2001/XMLSchema#dateTime',\n XSD_DATE_TIME_STAMP = 'http://www.w3.org/2001/XMLSchema#dateTimeStamp',\n XSD_DATE = 'http://www.w3.org/2001/XMLSchema#date',\n\n XSD_G_MONTH = 'http://www.w3.org/2001/XMLSchema#gMonth',\n XSD_G_MONTHDAY = 'http://www.w3.org/2001/XMLSchema#gMonthDay',\n XSD_G_YEAR = 'http://www.w3.org/2001/XMLSchema#gYear',\n XSD_G_YEAR_MONTH = 'http://www.w3.org/2001/XMLSchema#gYearMonth',\n XSD_TIME = 'http://www.w3.org/2001/XMLSchema#time',\n XSD_G_DAY = 'http://www.w3.org/2001/XMLSchema#gDay',\n\n // Numeric types\n XSD_DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n XSD_FLOAT = 'http://www.w3.org/2001/XMLSchema#float',\n XSD_DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n\n // Derived numeric types\n XSD_INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n\n XSD_NON_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonPositiveInteger',\n XSD_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#negativeInteger',\n\n XSD_LONG = 'http://www.w3.org/2001/XMLSchema#long',\n XSD_INT = 'http://www.w3.org/2001/XMLSchema#int',\n XSD_SHORT = 'http://www.w3.org/2001/XMLSchema#short',\n XSD_BYTE = 'http://www.w3.org/2001/XMLSchema#byte',\n\n XSD_NON_NEGATIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#nonNegativeInteger',\n XSD_POSITIVE_INTEGER = 'http://www.w3.org/2001/XMLSchema#positiveInteger',\n XSD_UNSIGNED_LONG = 'http://www.w3.org/2001/XMLSchema#unsignedLong',\n XSD_UNSIGNED_INT = 'http://www.w3.org/2001/XMLSchema#unsignedInt',\n XSD_UNSIGNED_SHORT = 'http://www.w3.org/2001/XMLSchema#unsignedShort',\n XSD_UNSIGNED_BYTE = 'http://www.w3.org/2001/XMLSchema#unsignedByte',\n\n // Derived String Type\n XSD_NORMALIZED_STRING = 'http://www.w3.org/2001/XMLSchema#normalizedString',\n XSD_TOKEN = 'http://www.w3.org/2001/XMLSchema#token',\n XSD_LANGUAGE = 'http://www.w3.org/2001/XMLSchema#language',\n XSD_NM_TOKEN = 'http://www.w3.org/2001/XMLSchema#NMTOKEN',\n\n XSD_NAME = 'http://www.w3.org/2001/XMLSchema#name',\n XSD_NC_NAME = 'http://www.w3.org/2001/XMLSchema#NCName',\n XSD_ENTITY = 'http://www.w3.org/2001/XMLSchema#ENTITY',\n XSD_ID = 'http://www.w3.org/2001/XMLSchema#ID',\n XSD_ID_REF = 'http://www.w3.org/2001/XMLSchema#IDREF',\n\n // Other types\n XSD_DURATION = 'http://www.w3.org/2001/XMLSchema#duration',\n XSD_YEAR_MONTH_DURATION = 'http://www.w3.org/2001/XMLSchema#yearMonthDuration',\n XSD_DAY_TIME_DURATION = 'http://www.w3.org/2001/XMLSchema#dayTimeDuration',\n XSD_UNTYPED_ATOMIC = 'http://www.w3.org/2001/XMLSchema#untypedAtomic',\n}\n\n// ----------------------------------------------------------------------------\n// Operators\n// ----------------------------------------------------------------------------\n\nexport type GeneralOperator = KnownOperator | string;\n\nexport type KnownOperator = SparqlOperator | NamedOperator;\n\n// TODO: Remove unneeded double typing\nexport enum SparqlOperator {\n // Operator mapping\n // https://www.w3.org/TR/sparql11-query/#OperatorMapping\n NOT = '!',\n UMINUS = 'uminus',\n UPLUS = 'uplus',\n LOGICAL_OR = '||',\n LOGICAL_AND = '&&',\n\n EQUAL = '=',\n NOT_EQUAL = '!=',\n LT = '<',\n GT = '>',\n LTE = '<=',\n GTE = '>=',\n SAME_TERM = 'sameterm',\n IN = 'in',\n NOT_IN = 'notin',\n\n MULTIPLICATION = '*',\n DIVISION = '/',\n ADDITION = '+',\n SUBTRACTION = '-',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n // See SpecialOperators\n\n // Functions on RDF Terms\n // https://www.w3.org/TR/sparql11-query/#func-rdfTerms\n IS_IRI = 'isiri',\n IS_URI = 'isuri',\n IS_BLANK = 'isblank',\n IS_LITERAL = 'isliteral',\n IS_NUMERIC = 'isnumeric',\n STR = 'str',\n LANG = 'lang',\n DATATYPE = 'datatype',\n IRI = 'iri',\n URI = 'uri',\n BNODE = 'bnode',\n STRDT = 'strdt',\n STRLANG = 'strlang',\n UUID = 'uuid',\n STRUUID = 'struuid',\n\n // Functions on strings\n // https://www.w3.org/TR/sparql11-query/#func-strings\n STRLEN = 'strlen',\n SUBSTR = 'substr',\n UCASE = 'ucase',\n LCASE = 'lcase',\n STRSTARTS = 'strstarts',\n STRENDS = 'strends',\n CONTAINS = 'contains',\n STRBEFORE = 'strbefore',\n STRAFTER = 'strafter',\n ENCODE_FOR_URI = 'encode_for_uri',\n CONCAT = 'concat',\n LANG_MATCHES = 'langmatches',\n REGEX = 'regex',\n REPLACE = 'replace',\n\n // Functions on numerics\n // https://www.w3.org/TR/sparql11-query/#func-numerics\n ABS = 'abs',\n ROUND = 'round',\n CEIL = 'ceil',\n FLOOR = 'floor',\n RAND = 'rand',\n\n // Functions on Dates and Times\n // https://www.w3.org/TR/sparql11-query/#func-date-time\n NOW = 'now',\n YEAR = 'year',\n MONTH = 'month',\n DAY = 'day',\n HOURS = 'hours',\n MINUTES = 'minutes',\n SECONDS = 'seconds',\n TIMEZONE = 'timezone',\n TZ = 'tz',\n // Hash functions\n // https://www.w3.org/TR/sparql11-query/#func-hash\n MD5 = 'md5',\n SHA1 = 'sha1',\n SHA256 = 'sha256',\n SHA384 = 'sha384',\n SHA512 = 'sha512',\n\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n // See Named Operators\n\n // Functions for quoted triples\n // https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#triple-function\n TRIPLE = 'triple',\n SUBJECT = 'subject',\n PREDICATE = 'predicate',\n OBJECT = 'object',\n IS_TRIPLE = 'istriple',\n\n // Functional Forms\n // https://www.w3.org/TR/sparql11-query/#func-forms\n BOUND = 'bound',\n IF = 'if',\n COALESCE = 'coalesce',\n}\n\nexport type NamedOperator =\n // XPath Constructor functions\n // https://www.w3.org/TR/sparql11-query/#FunctionMapping\n TypeURL.XSD_STRING\n | TypeURL.XSD_FLOAT\n | TypeURL.XSD_DOUBLE\n | TypeURL.XSD_DECIMAL\n | TypeURL.XSD_INTEGER\n | TypeURL.XSD_DATE_TIME\n | TypeURL.XSD_DATE\n | TypeURL.XSD_BOOLEAN\n | TypeURL.XSD_TIME\n | TypeURL.XSD_DURATION\n | TypeURL.XSD_DAY_TIME_DURATION\n | TypeURL.XSD_YEAR_MONTH_DURATION;\n"]}
|
package/lib/util/TypeHandling.js
CHANGED
|
@@ -30,6 +30,15 @@ exports.extensionTableInput = {
|
|
|
30
30
|
[Consts_1.TypeURL.XSD_ENTITY]: Consts_1.TypeURL.XSD_NC_NAME,
|
|
31
31
|
[Consts_1.TypeURL.XSD_ID]: Consts_1.TypeURL.XSD_NC_NAME,
|
|
32
32
|
[Consts_1.TypeURL.XSD_ID_REF]: Consts_1.TypeURL.XSD_NC_NAME,
|
|
33
|
+
// https://www.w3.org/TR/xpath-31/#dt-function-conversion
|
|
34
|
+
// "Each item in the atomic sequence that is of type xs:untypedAtomic is cast
|
|
35
|
+
// to the expected generalized atomic type."
|
|
36
|
+
// So then I looked in the specs for something about casting:
|
|
37
|
+
// https://www.w3.org/TR/xpath-functions-31/#casting-from-strings
|
|
38
|
+
// "If the value is xs:untypedAtomic, it is treated in exactly the same way as a string
|
|
39
|
+
// containing the same sequence of characters."
|
|
40
|
+
// So it's not really a subtype by definition, but it works this way.
|
|
41
|
+
[Consts_1.TypeURL.XSD_UNTYPED_ATOMIC]: Consts_1.TypeURL.XSD_STRING,
|
|
33
42
|
// Numeric types
|
|
34
43
|
// https://www.w3.org/TR/sparql11-query/#operandDataTypes
|
|
35
44
|
// > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeHandling.js","sourceRoot":"","sources":["TypeHandling.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GeneralSuperTypeDict, ISuperTypeProvider, TermExpression, TermType } from '@comunica/types';\nimport type * as E from '../expressions';\nimport { asTermType } from '../expressions';\nimport { double, float, string } from '../functions/Helpers';\nimport type { ArgumentType } from '../functions/OverloadTree';\nimport type { KnownLiteralTypes } from './Consts';\nimport { TypeAlias, TypeURL } from './Consts';\n\nexport type OverrideType = KnownLiteralTypes | 'term';\n\n/**\n * Types that are not mentioned just map to 'term'.\n * When editing this, make sure type promotion and substitution don't start interfering.\n * e.g. when saying something like string -> stringly -> anyUri -> term.\n * This would make substitution on types that promote to each other possible. We and the specs don't want that!\n * A DAG will be created based on this. Make sure it doesn't have any cycles!\n */\nexport const extensionTableInput: Record<KnownLiteralTypes, OverrideType> = {\n // Datetime types\n [TypeURL.XSD_DATE_TIME_STAMP]: TypeURL.XSD_DATE_TIME,\n\n // Duration types\n [TypeURL.XSD_DAY_TIME_DURATION]: TypeURL.XSD_DURATION,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: TypeURL.XSD_DURATION,\n\n // Stringly types\n [TypeURL.RDF_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.XSD_STRING]: TypeAlias.SPARQL_STRINGLY,\n\n // String types\n [TypeURL.XSD_NORMALIZED_STRING]: TypeURL.XSD_STRING,\n [TypeURL.XSD_TOKEN]: TypeURL.XSD_NORMALIZED_STRING,\n [TypeURL.XSD_LANGUAGE]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NM_TOKEN]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NAME]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NC_NAME]: TypeURL.XSD_NAME,\n [TypeURL.XSD_ENTITY]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID_REF]: TypeURL.XSD_NC_NAME,\n\n // Numeric types\n // https://www.w3.org/TR/sparql11-query/#operandDataTypes\n // > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double\n [TypeURL.XSD_DOUBLE]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_FLOAT]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_DECIMAL]: TypeAlias.SPARQL_NUMERIC,\n\n // Decimal types\n [TypeURL.XSD_INTEGER]: TypeURL.XSD_DECIMAL,\n\n [TypeURL.XSD_NON_POSITIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_NEGATIVE_INTEGER]: TypeURL.XSD_NON_POSITIVE_INTEGER,\n\n [TypeURL.XSD_LONG]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_INT]: TypeURL.XSD_LONG,\n [TypeURL.XSD_SHORT]: TypeURL.XSD_INT,\n [TypeURL.XSD_BYTE]: TypeURL.XSD_SHORT,\n\n [TypeURL.XSD_NON_NEGATIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_POSITIVE_INTEGER]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_LONG]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_INT]: TypeURL.XSD_UNSIGNED_LONG,\n [TypeURL.XSD_UNSIGNED_SHORT]: TypeURL.XSD_UNSIGNED_INT,\n [TypeURL.XSD_UNSIGNED_BYTE]: TypeURL.XSD_UNSIGNED_SHORT,\n\n [TypeURL.XSD_DATE_TIME]: 'term',\n [TypeURL.XSD_BOOLEAN]: 'term',\n [TypeURL.XSD_DATE]: 'term',\n [TypeURL.XSD_G_MONTH]: 'term',\n [TypeURL.XSD_G_MONTHDAY]: 'term',\n [TypeURL.XSD_G_YEAR]: 'term',\n [TypeURL.XSD_G_YEAR_MONTH]: 'term',\n [TypeURL.XSD_TIME]: 'term',\n [TypeURL.XSD_G_DAY]: 'term',\n [TypeURL.XSD_DURATION]: 'term',\n [TypeAlias.SPARQL_NUMERIC]: 'term',\n [TypeAlias.SPARQL_STRINGLY]: 'term',\n [TypeURL.XSD_ANY_URI]: 'term',\n};\ntype SuperTypeDict = Record<KnownLiteralTypes, number> & { __depth: number };\ntype SuperTypeDictTable = Record<KnownLiteralTypes, SuperTypeDict>;\nexport const superTypeDictTable: SuperTypeDictTable = Object.create(null);\n\n/**\n * This will return the super types of a type and cache them.\n * @param type IRI we will decide the super types of.\n * @param openWorldType the enabler that provides a way to find super types.\n */\nexport function getSuperTypes(type: string, openWorldType: ISuperTypeProvider): GeneralSuperTypeDict {\n const cached = openWorldType.cache.get(type);\n if (cached) {\n return cached;\n }\n const value = openWorldType.discoverer(type);\n if (value === 'term') {\n const res: GeneralSuperTypeDict = Object.create(null);\n res.__depth = 0;\n res[type] = 0;\n openWorldType.cache.set(type, res);\n return res;\n }\n let subExtension: GeneralSuperTypeDict;\n const knownValue = asKnownLiteralType(value);\n if (knownValue) {\n subExtension = { ...superTypeDictTable[knownValue] };\n } else {\n subExtension = { ...getSuperTypes(value, openWorldType) };\n }\n subExtension.__depth++;\n subExtension[type] = subExtension.__depth;\n openWorldType.cache.set(type, subExtension);\n return subExtension;\n}\n\n// No circular structure allowed! & No other keys allowed!\nexport function extensionTableInit(): void {\n for (const [ _key, value ] of Object.entries(extensionTableInput)) {\n const key = <KnownLiteralTypes>_key;\n if (superTypeDictTable[key]) {\n continue;\n }\n extensionTableBuilderInitKey(key, value, superTypeDictTable);\n }\n}\nextensionTableInit();\n\nfunction extensionTableBuilderInitKey(key: KnownLiteralTypes, value: OverrideType, res: SuperTypeDictTable): void {\n if (value === 'term' || value === undefined) {\n const baseRes: SuperTypeDict = Object.create(null);\n baseRes.__depth = 0;\n baseRes[key] = 0;\n res[key] = baseRes;\n return;\n }\n if (!res[value]) {\n extensionTableBuilderInitKey(value, extensionTableInput[value], res);\n }\n res[key] = { ...res[value], [key]: res[value].__depth + 1, __depth: res[value].__depth + 1 };\n}\n\nexport const typeAliasCheck: Record<TypeAlias, boolean> = Object.create(null);\nfunction initTypeAliasCheck(): void {\n for (const val of Object.values(TypeAlias)) {\n typeAliasCheck[val] = true;\n }\n}\ninitTypeAliasCheck();\n\nexport function asTypeAlias(type: string): TypeAlias | undefined {\n if (type in typeAliasCheck) {\n return <TypeAlias> type;\n }\n return undefined;\n}\n\nexport function asKnownLiteralType(type: string): KnownLiteralTypes | undefined {\n if (type in superTypeDictTable) {\n return <KnownLiteralTypes> type;\n }\n return undefined;\n}\n\nexport function asOverrideType(type: string): OverrideType | undefined {\n if (asKnownLiteralType(type) ?? type === 'term') {\n return <OverrideType> type;\n }\n return undefined;\n}\n\nexport function asGeneralType(type: string): 'term' | TermType | undefined {\n if (type === 'term' || asTermType(type)) {\n return <'term' | TermType> type;\n }\n return undefined;\n}\n\n/**\n * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler\n */\nexport function isInternalSubType(baseType: OverrideType, argumentType: KnownLiteralTypes): boolean {\n return baseType !== 'term' &&\n (superTypeDictTable[baseType] && superTypeDictTable[baseType][argumentType] !== undefined);\n}\n\n/**\n * This function can be used to check the base type is a restriction on a type in the dict.\n * If we want to check if type x is a restriction on string we do this by calling:\n * 'http://www.w3.org/2001/XMLSchema#string' in getSuperTypeDict(X, superTypeProvider)\n * @param baseType\n * @param superTypeProvider\n */\nexport function getSuperTypeDict(baseType: string, superTypeProvider: ISuperTypeProvider): GeneralSuperTypeDict {\n const concreteType: KnownLiteralTypes | undefined = asKnownLiteralType(baseType);\n if (concreteType) {\n // Concrete dataType is known by utils-expression-evaluator.\n return superTypeDictTable[concreteType];\n }\n // Datatype is a custom datatype\n return getSuperTypes(baseType, superTypeProvider);\n}\n\n/**\n * This function needs to be O(1)! The execution time of this function is vital!\n * We define typeA isSubtypeOf typeA as true.\n * If you find yourself using this function a lot (e.g. in a case) please use getSuperTypeDict instead.\n * @param baseType type you want to provide.\n * @param argumentType type you want to provide @param baseType to.\n * @param superTypeProvider the enabler to discover super types of unknown types.\n */\nexport function isSubTypeOf(\n baseType: string,\n argumentType: KnownLiteralTypes,\n superTypeProvider: ISuperTypeProvider,\n): boolean {\n if (baseType === 'term') {\n return false;\n }\n return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;\n}\n\n// Defined by https://www.w3.org/TR/xpath-31/#promotion .\n// e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.\nexport const typePromotion: Partial<Record<ArgumentType, {\n typeToPromote: KnownLiteralTypes;\n conversionFunction: (arg: TermExpression) => TermExpression;\n}[]>> = {\n [TypeURL.XSD_STRING]: [\n { typeToPromote: TypeURL.XSD_ANY_URI, conversionFunction: arg => string(arg.str()) },\n ],\n [TypeURL.XSD_DOUBLE]: [\n { typeToPromote: TypeURL.XSD_FLOAT, conversionFunction: arg => double((<E.NumericLiteral>arg).typedValue) },\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => double((<E.NumericLiteral>arg).typedValue) },\n ],\n [TypeURL.XSD_FLOAT]: [\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => float((<E.NumericLiteral>arg).typedValue) },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"file":"TypeHandling.js","sourceRoot":"","sources":["TypeHandling.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GeneralSuperTypeDict, ISuperTypeProvider, TermExpression, TermType } from '@comunica/types';\nimport type * as E from '../expressions';\nimport { asTermType } from '../expressions';\nimport { double, float, string } from '../functions/Helpers';\nimport type { ArgumentType } from '../functions/OverloadTree';\nimport type { KnownLiteralTypes } from './Consts';\nimport { TypeAlias, TypeURL } from './Consts';\n\nexport type OverrideType = KnownLiteralTypes | 'term';\n\n/**\n * Types that are not mentioned just map to 'term'.\n * When editing this, make sure type promotion and substitution don't start interfering.\n * e.g. when saying something like string -> stringly -> anyUri -> term.\n * This would make substitution on types that promote to each other possible. We and the specs don't want that!\n * A DAG will be created based on this. Make sure it doesn't have any cycles!\n */\nexport const extensionTableInput: Record<KnownLiteralTypes, OverrideType> = {\n // Datetime types\n [TypeURL.XSD_DATE_TIME_STAMP]: TypeURL.XSD_DATE_TIME,\n\n // Duration types\n [TypeURL.XSD_DAY_TIME_DURATION]: TypeURL.XSD_DURATION,\n [TypeURL.XSD_YEAR_MONTH_DURATION]: TypeURL.XSD_DURATION,\n\n // Stringly types\n [TypeURL.RDF_LANG_STRING]: TypeAlias.SPARQL_STRINGLY,\n [TypeURL.XSD_STRING]: TypeAlias.SPARQL_STRINGLY,\n\n // String types\n [TypeURL.XSD_NORMALIZED_STRING]: TypeURL.XSD_STRING,\n [TypeURL.XSD_TOKEN]: TypeURL.XSD_NORMALIZED_STRING,\n [TypeURL.XSD_LANGUAGE]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NM_TOKEN]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NAME]: TypeURL.XSD_TOKEN,\n [TypeURL.XSD_NC_NAME]: TypeURL.XSD_NAME,\n [TypeURL.XSD_ENTITY]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID]: TypeURL.XSD_NC_NAME,\n [TypeURL.XSD_ID_REF]: TypeURL.XSD_NC_NAME,\n // https://www.w3.org/TR/xpath-31/#dt-function-conversion\n // \"Each item in the atomic sequence that is of type xs:untypedAtomic is cast\n // to the expected generalized atomic type.\"\n // So then I looked in the specs for something about casting:\n // https://www.w3.org/TR/xpath-functions-31/#casting-from-strings\n // \"If the value is xs:untypedAtomic, it is treated in exactly the same way as a string\n // containing the same sequence of characters.\"\n // So it's not really a subtype by definition, but it works this way.\n [TypeURL.XSD_UNTYPED_ATOMIC]: TypeURL.XSD_STRING,\n\n // Numeric types\n // https://www.w3.org/TR/sparql11-query/#operandDataTypes\n // > numeric denotes typed literals with datatypes xsd:integer, xsd:decimal, xsd:float, and xsd:double\n [TypeURL.XSD_DOUBLE]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_FLOAT]: TypeAlias.SPARQL_NUMERIC,\n [TypeURL.XSD_DECIMAL]: TypeAlias.SPARQL_NUMERIC,\n\n // Decimal types\n [TypeURL.XSD_INTEGER]: TypeURL.XSD_DECIMAL,\n\n [TypeURL.XSD_NON_POSITIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_NEGATIVE_INTEGER]: TypeURL.XSD_NON_POSITIVE_INTEGER,\n\n [TypeURL.XSD_LONG]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_INT]: TypeURL.XSD_LONG,\n [TypeURL.XSD_SHORT]: TypeURL.XSD_INT,\n [TypeURL.XSD_BYTE]: TypeURL.XSD_SHORT,\n\n [TypeURL.XSD_NON_NEGATIVE_INTEGER]: TypeURL.XSD_INTEGER,\n [TypeURL.XSD_POSITIVE_INTEGER]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_LONG]: TypeURL.XSD_NON_NEGATIVE_INTEGER,\n [TypeURL.XSD_UNSIGNED_INT]: TypeURL.XSD_UNSIGNED_LONG,\n [TypeURL.XSD_UNSIGNED_SHORT]: TypeURL.XSD_UNSIGNED_INT,\n [TypeURL.XSD_UNSIGNED_BYTE]: TypeURL.XSD_UNSIGNED_SHORT,\n\n [TypeURL.XSD_DATE_TIME]: 'term',\n [TypeURL.XSD_BOOLEAN]: 'term',\n [TypeURL.XSD_DATE]: 'term',\n [TypeURL.XSD_G_MONTH]: 'term',\n [TypeURL.XSD_G_MONTHDAY]: 'term',\n [TypeURL.XSD_G_YEAR]: 'term',\n [TypeURL.XSD_G_YEAR_MONTH]: 'term',\n [TypeURL.XSD_TIME]: 'term',\n [TypeURL.XSD_G_DAY]: 'term',\n [TypeURL.XSD_DURATION]: 'term',\n [TypeAlias.SPARQL_NUMERIC]: 'term',\n [TypeAlias.SPARQL_STRINGLY]: 'term',\n [TypeURL.XSD_ANY_URI]: 'term',\n};\ntype SuperTypeDict = Record<KnownLiteralTypes, number> & { __depth: number };\ntype SuperTypeDictTable = Record<KnownLiteralTypes, SuperTypeDict>;\nexport const superTypeDictTable: SuperTypeDictTable = Object.create(null);\n\n/**\n * This will return the super types of a type and cache them.\n * @param type IRI we will decide the super types of.\n * @param openWorldType the enabler that provides a way to find super types.\n */\nexport function getSuperTypes(type: string, openWorldType: ISuperTypeProvider): GeneralSuperTypeDict {\n const cached = openWorldType.cache.get(type);\n if (cached) {\n return cached;\n }\n const value = openWorldType.discoverer(type);\n if (value === 'term') {\n const res: GeneralSuperTypeDict = Object.create(null);\n res.__depth = 0;\n res[type] = 0;\n openWorldType.cache.set(type, res);\n return res;\n }\n let subExtension: GeneralSuperTypeDict;\n const knownValue = asKnownLiteralType(value);\n if (knownValue) {\n subExtension = { ...superTypeDictTable[knownValue] };\n } else {\n subExtension = { ...getSuperTypes(value, openWorldType) };\n }\n subExtension.__depth++;\n subExtension[type] = subExtension.__depth;\n openWorldType.cache.set(type, subExtension);\n return subExtension;\n}\n\n// No circular structure allowed! & No other keys allowed!\nexport function extensionTableInit(): void {\n for (const [ _key, value ] of Object.entries(extensionTableInput)) {\n const key = <KnownLiteralTypes>_key;\n if (superTypeDictTable[key]) {\n continue;\n }\n extensionTableBuilderInitKey(key, value, superTypeDictTable);\n }\n}\nextensionTableInit();\n\nfunction extensionTableBuilderInitKey(key: KnownLiteralTypes, value: OverrideType, res: SuperTypeDictTable): void {\n if (value === 'term' || value === undefined) {\n const baseRes: SuperTypeDict = Object.create(null);\n baseRes.__depth = 0;\n baseRes[key] = 0;\n res[key] = baseRes;\n return;\n }\n if (!res[value]) {\n extensionTableBuilderInitKey(value, extensionTableInput[value], res);\n }\n res[key] = { ...res[value], [key]: res[value].__depth + 1, __depth: res[value].__depth + 1 };\n}\n\nexport const typeAliasCheck: Record<TypeAlias, boolean> = Object.create(null);\nfunction initTypeAliasCheck(): void {\n for (const val of Object.values(TypeAlias)) {\n typeAliasCheck[val] = true;\n }\n}\ninitTypeAliasCheck();\n\nexport function asTypeAlias(type: string): TypeAlias | undefined {\n if (type in typeAliasCheck) {\n return <TypeAlias> type;\n }\n return undefined;\n}\n\nexport function asKnownLiteralType(type: string): KnownLiteralTypes | undefined {\n if (type in superTypeDictTable) {\n return <KnownLiteralTypes> type;\n }\n return undefined;\n}\n\nexport function asOverrideType(type: string): OverrideType | undefined {\n if (asKnownLiteralType(type) ?? type === 'term') {\n return <OverrideType> type;\n }\n return undefined;\n}\n\nexport function asGeneralType(type: string): 'term' | TermType | undefined {\n if (type === 'term' || asTermType(type)) {\n return <'term' | TermType> type;\n }\n return undefined;\n}\n\n/**\n * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler\n */\nexport function isInternalSubType(baseType: OverrideType, argumentType: KnownLiteralTypes): boolean {\n return baseType !== 'term' &&\n (superTypeDictTable[baseType] && superTypeDictTable[baseType][argumentType] !== undefined);\n}\n\n/**\n * This function can be used to check the base type is a restriction on a type in the dict.\n * If we want to check if type x is a restriction on string we do this by calling:\n * 'http://www.w3.org/2001/XMLSchema#string' in getSuperTypeDict(X, superTypeProvider)\n * @param baseType\n * @param superTypeProvider\n */\nexport function getSuperTypeDict(baseType: string, superTypeProvider: ISuperTypeProvider): GeneralSuperTypeDict {\n const concreteType: KnownLiteralTypes | undefined = asKnownLiteralType(baseType);\n if (concreteType) {\n // Concrete dataType is known by utils-expression-evaluator.\n return superTypeDictTable[concreteType];\n }\n // Datatype is a custom datatype\n return getSuperTypes(baseType, superTypeProvider);\n}\n\n/**\n * This function needs to be O(1)! The execution time of this function is vital!\n * We define typeA isSubtypeOf typeA as true.\n * If you find yourself using this function a lot (e.g. in a case) please use getSuperTypeDict instead.\n * @param baseType type you want to provide.\n * @param argumentType type you want to provide @param baseType to.\n * @param superTypeProvider the enabler to discover super types of unknown types.\n */\nexport function isSubTypeOf(\n baseType: string,\n argumentType: KnownLiteralTypes,\n superTypeProvider: ISuperTypeProvider,\n): boolean {\n if (baseType === 'term') {\n return false;\n }\n return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;\n}\n\n// Defined by https://www.w3.org/TR/xpath-31/#promotion .\n// e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.\nexport const typePromotion: Partial<Record<ArgumentType, {\n typeToPromote: KnownLiteralTypes;\n conversionFunction: (arg: TermExpression) => TermExpression;\n}[]>> = {\n [TypeURL.XSD_STRING]: [\n { typeToPromote: TypeURL.XSD_ANY_URI, conversionFunction: arg => string(arg.str()) },\n ],\n [TypeURL.XSD_DOUBLE]: [\n { typeToPromote: TypeURL.XSD_FLOAT, conversionFunction: arg => double((<E.NumericLiteral>arg).typedValue) },\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => double((<E.NumericLiteral>arg).typedValue) },\n ],\n [TypeURL.XSD_FLOAT]: [\n // TODO: in case of decimal a round needs to happen.\n { typeToPromote: TypeURL.XSD_DECIMAL, conversionFunction: arg => float((<E.NumericLiteral>arg).typedValue) },\n ],\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/utils-expression-evaluator",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "A simple SPARQL expression evaluator",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
"build": "node \"../../node_modules/typescript/bin/tsc\""
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@comunica/context-entries": "^4.
|
|
42
|
-
"@comunica/types": "^4.
|
|
41
|
+
"@comunica/context-entries": "^4.4.0",
|
|
42
|
+
"@comunica/types": "^4.4.0",
|
|
43
43
|
"@rdfjs/types": "*",
|
|
44
44
|
"lru-cache": "^10.0.0",
|
|
45
45
|
"rdf-data-factory": "^1.1.2",
|
|
46
46
|
"rdf-string": "^1.6.3",
|
|
47
47
|
"sparqlalgebrajs": "^4.3.8"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "27acde56dfe0c1ff1162c1f46818ad752296ca88"
|
|
50
50
|
}
|