@comake/skl-js-engine 1.3.15 → 1.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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/storage/FindOperator.d.ts +1 -1
- package/dist/storage/FindOperator.d.ts.map +1 -1
- package/dist/storage/FindOperator.js.map +1 -1
- package/dist/storage/FindOptionsTypes.d.ts +3 -1
- package/dist/storage/FindOptionsTypes.d.ts.map +1 -1
- package/dist/storage/FindOptionsTypes.js.map +1 -1
- package/dist/storage/operator/Or.d.ts +4 -0
- package/dist/storage/operator/Or.d.ts.map +1 -0
- package/dist/storage/operator/Or.js +13 -0
- package/dist/storage/operator/Or.js.map +1 -0
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +1 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +27 -3
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +1 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts +2 -0
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts.map +1 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js +54 -0
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js.map +1 -1
- package/dist/util/SparqlUtil.d.ts +1 -0
- package/dist/util/SparqlUtil.d.ts.map +1 -1
- package/dist/util/SparqlUtil.js +5 -4
- package/dist/util/SparqlUtil.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/storage/FindOperator.ts +1 -0
- package/src/storage/FindOptionsTypes.ts +3 -1
- package/src/storage/operator/Or.ts +11 -0
- package/src/storage/query-adapter/sparql/SparqlQueryAdapter.ts +31 -4
- package/src/storage/query-adapter/sparql/SparqlQueryBuilder.ts +74 -2
- package/src/util/SparqlUtil.ts +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlUtil.js","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import DataFactory from '@rdfjs/data-model';\nimport type { Literal, NamedNode } from '@rdfjs/types';\nimport type {\n AggregateExpression,\n AskQuery,\n BgpPattern,\n BindPattern,\n ClearDropOperation,\n ConstructQuery,\n Expression,\n FilterPattern,\n GraphPattern,\n GraphQuads,\n Grouping,\n GroupPattern,\n InsertDeleteOperation,\n IriTerm,\n OperationExpression,\n OptionalPattern,\n Ordering,\n Pattern,\n PropertyPath,\n SelectQuery,\n ServicePattern,\n Triple,\n UnionPattern,\n Update,\n UpdateOperation,\n ValuePatternRow,\n ValuesPattern,\n Variable\n} from 'sparqljs';\nimport { EngineConstants } from '../constants';\nimport type { RawQueryResult } from '../storage/query-adapter/QueryAdapter';\nimport type { SelectVariableQueryResult } from '../storage/query-adapter/sparql/query-executor/SparqlQueryExecutor';\nimport { toJSValueFromDataType } from './TripleUtil';\nimport { RDF, RDFS } from './Vocabularies';\n\nexport const rdfTypeNamedNode = DataFactory.namedNode(RDF.type);\nexport const rdfsSubClassOfNamedNode = DataFactory.namedNode(RDFS.subClassOf);\nexport const subjectNode = DataFactory.variable('subject');\nexport const predicateNode = DataFactory.variable('predicate');\nexport const objectNode = DataFactory.variable('object');\nexport const entityVariable = DataFactory.variable('entity');\nexport const rdfTypeVariable = DataFactory.variable('rdfType');\nexport const countVariable = DataFactory.variable('count');\nexport const now = DataFactory.variable('now');\nexport const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);\nexport const modified = DataFactory.namedNode(EngineConstants.prop.dateModified);\nexport const firstPredicate = DataFactory.namedNode(RDF.first);\nexport const restPredicate = DataFactory.namedNode(RDF.rest);\nexport const nilPredicate = DataFactory.namedNode(RDF.nil);\nexport const anyPredicatePropertyPath = {\n type: 'path',\n pathType: '!',\n items: [ DataFactory.namedNode('') ]\n} as PropertyPath;\n\nexport const allTypesAndSuperTypesPath: PropertyPath = {\n type: 'path',\n pathType: '/',\n items: [\n rdfTypeNamedNode,\n {\n type: 'path',\n pathType: '*',\n items: [ rdfsSubClassOfNamedNode ]\n }\n ]\n};\n\nexport const bindNow: BindPattern = {\n type: 'bind',\n variable: now,\n expression: {\n type: 'operation',\n operator: 'now',\n args: []\n }\n};\n\nexport const dropAll: ClearDropOperation = {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n all: true\n }\n};\n\nexport const entityGraphTriple = { subject: subjectNode, predicate: predicateNode, object: objectNode };\n\nexport function createSparqlGraphQuads(graph: NamedNode, triples: Triple[]): GraphQuads {\n return {\n type: 'graph',\n name: graph,\n triples\n };\n}\n\nexport function createSparqlClearUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'clear',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlDropUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlUpdate(updates: UpdateOperation[]): Update {\n return {\n type: 'update',\n prefixes: {},\n updates\n };\n}\n\nexport function createSparqlGraphPattern(name: Variable | NamedNode, patterns: Pattern[]): GraphPattern {\n return {\n type: 'graph',\n name,\n patterns\n } as GraphPattern;\n}\n\nexport function createSparqlConstructQuery(triples: Triple[], where: Pattern[]): ConstructQuery {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: triples,\n where\n };\n}\n\nexport function createSparqlCountSelectQuery(\n subject: Variable,\n where: Pattern[],\n order: Ordering[],\n offset?: number\n): SelectQuery {\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: [\n {\n expression: {\n type: 'aggregate',\n aggregation: 'count',\n distinct: true,\n expression: subject\n } as AggregateExpression,\n variable: countVariable\n }\n ],\n where,\n order: order.length > 0 ? order : undefined,\n offset,\n prefixes: {}\n };\n}\n\nexport function creteSparqlAskQuery(where: Pattern[]): AskQuery {\n return {\n type: 'query',\n queryType: 'ASK',\n where,\n prefixes: {}\n };\n}\n\nexport function createSparqlSelectGroup(patterns: Pattern[]): GroupPattern {\n return {\n type: 'group',\n patterns\n };\n}\n\nexport function createSparqlOptional(patterns: Pattern[]): OptionalPattern {\n return {\n type: 'optional',\n patterns\n };\n}\n\nexport function createSparqlUnion(patterns: Pattern[]): UnionPattern {\n return {\n type: 'union',\n patterns\n };\n}\n\nexport function createSparqlBasicGraphPattern(triples: Triple[]): BgpPattern {\n return { type: 'bgp', triples };\n}\n\nexport function createSparqlOptionalGraphSelection(name: Variable | NamedNode, triples: Triple[]): GraphPattern {\n return {\n type: 'graph',\n name: name as IriTerm,\n patterns: [ createSparqlOptional([ createSparqlBasicGraphPattern(triples) ]) ]\n };\n}\n\nexport function createSparqlServicePattern(serviceName: string, triples: Triple[]): ServicePattern {\n return {\n type: 'service',\n patterns: [ createSparqlBasicGraphPattern(triples) ],\n name: DataFactory.namedNode(serviceName),\n silent: false\n };\n}\n\nexport function ensureVariable(variableLike: string | Variable): Variable {\n if (typeof variableLike === 'string' && variableLike.startsWith('?')) {\n return DataFactory.variable(variableLike.slice(1));\n }\n return variableLike as Variable;\n}\n\nexport function ensureGrouping(variableLike: Variable | string): Grouping {\n return {\n expression: ensureVariable(variableLike)\n } as Grouping;\n}\n\nexport function createSparqlSelectQuery(\n variable: Variable | Variable[],\n where: Pattern[],\n order: Ordering[],\n group?: Variable | Variable[],\n limit?: number,\n offset?: number\n): SelectQuery {\n let groupings: Grouping[] | undefined;\n if (group) {\n if (Array.isArray(group)) {\n // eslint-disable-next-line id-length\n groupings = group.map(g => ensureGrouping(g));\n } else {\n groupings = [ ensureGrouping(group) ];\n }\n }\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: Array.isArray(variable) ? variable.map(ensureVariable) : [ ensureVariable(variable) ],\n distinct: true,\n where,\n group: groupings,\n order: order.length > 0 ? order : undefined,\n limit,\n offset,\n prefixes: {}\n };\n}\n\nexport function createSparqlFilterWithExpression(expression: Expression): FilterPattern {\n return { type: 'filter', expression };\n}\n\nexport function createFilterPatternFromFilters(filters: Expression[]): FilterPattern {\n if (filters.length > 2) {\n return createFilterPatternFromFilters([\n {\n type: 'operation',\n operator: '&&',\n args: filters.slice(0, 2)\n },\n ...filters.slice(2)\n ]);\n }\n if (filters.length > 1) {\n return createSparqlFilterWithExpression({\n type: 'operation',\n operator: '&&',\n args: filters\n });\n }\n return createSparqlFilterWithExpression(filters[0]);\n}\n\nexport function createSparqlBindPattern(expression: Expression, variable: Variable): BindPattern {\n return {\n type: 'bind',\n expression,\n variable\n } as BindPattern;\n}\n\nexport function createSparqlEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLcaseOperation(expression: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'lcase',\n args: [ expression ]\n };\n}\n\nexport function createSparqlContainsOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'contains',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '!=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'in',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'notin',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'notexists',\n args\n };\n}\n\nexport function createSparqlExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'exists',\n args\n };\n}\n\nexport function createSparqlInversePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '^',\n items: predicates\n };\n}\n\nexport function createSparqlOrPredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '|',\n items: predicates\n };\n}\n\nexport function createSparqlSequencePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '/',\n items: predicates\n };\n}\n\nexport function createSparqlZeroOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '*',\n items: predicates\n };\n}\n\nexport function createSparqlOneOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '+',\n items: predicates\n };\n}\n\nexport function createSparqlInsertDeleteOperation(\n graph: NamedNode,\n insertionTriples: Triple[],\n deletionTriples: Triple[]\n): InsertDeleteOperation {\n return {\n updateType: 'insertdelete',\n delete: [ createSparqlGraphQuads(graph, deletionTriples) ],\n insert: [ createSparqlGraphQuads(graph, insertionTriples) ],\n where: [ createSparqlBasicGraphPattern(deletionTriples) ],\n using: {\n default: [ graph ]\n }\n } as InsertDeleteOperation;\n}\n\nexport function selectQueryResultsAsJSValues<T extends RawQueryResult>(results: SelectVariableQueryResult<T>[]): T[] {\n return results.map(\n (result): T =>\n Object.entries(result).reduce<T>(\n (obj, [ key, value ]): T => ({\n ...obj,\n [key]: value.termType === 'Literal' ? toJSValueFromDataType(value.value, value.datatype?.value) : value.value\n\n }),\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter\n {} as T\n )\n );\n}\n\nexport function groupSelectQueryResultsByKey(\n results: SelectVariableQueryResult<any>[]\n): Record<string, (NamedNode | Literal)[]> {\n return results.reduce(\n (obj: Record<string, (NamedNode | Literal)[]>, result): Record<string, (NamedNode | Literal)[]> => {\n for (const [ key, value ] of Object.entries(result)) {\n if (!(key in obj)) {\n obj[key] = [ value ];\n } else {\n obj[key].push(value);\n }\n }\n return obj;\n },\n {}\n );\n}\n\nexport function getEntityVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(entityVariable.value in variables)) {\n return [];\n }\n return (variables[entityVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(rdfTypeVariable.value in variables)) {\n return [];\n }\n return (variables[rdfTypeVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function createValuesPatternsForVariables(\n valuesByVariable: Record<string, (NamedNode | Literal)[]>\n): ValuesPattern[] {\n return Object.entries(valuesByVariable).map(\n ([ variableName, values ]): ValuesPattern => ({\n type: 'values',\n values: values.map(\n (value): ValuePatternRow => ({\n [`?${variableName}`]: value\n })\n )\n })\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SparqlUtil.js","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import DataFactory from '@rdfjs/data-model';\nimport type { Literal, NamedNode } from '@rdfjs/types';\nimport type {\n AggregateExpression,\n AskQuery,\n BgpPattern,\n BindPattern,\n ClearDropOperation,\n ConstructQuery,\n Expression,\n FilterPattern,\n GraphPattern,\n GraphQuads,\n Grouping,\n GroupPattern,\n InsertDeleteOperation,\n IriTerm,\n OperationExpression,\n OptionalPattern,\n Ordering,\n Pattern,\n PropertyPath,\n SelectQuery,\n ServicePattern,\n Triple,\n UnionPattern,\n Update,\n UpdateOperation,\n ValuePatternRow,\n ValuesPattern,\n Variable\n} from 'sparqljs';\nimport { EngineConstants } from '../constants';\nimport type { RawQueryResult } from '../storage/query-adapter/QueryAdapter';\nimport type { SelectVariableQueryResult } from '../storage/query-adapter/sparql/query-executor/SparqlQueryExecutor';\nimport { toJSValueFromDataType } from './TripleUtil';\nimport { RDF, RDFS } from './Vocabularies';\n\nexport const rdfTypeNamedNode = DataFactory.namedNode(RDF.type);\nexport const rdfsSubClassOfNamedNode = DataFactory.namedNode(RDFS.subClassOf);\nexport const subjectNode = DataFactory.variable('subject');\nexport const predicateNode = DataFactory.variable('predicate');\nexport const objectNode = DataFactory.variable('object');\nexport const entityVariable = DataFactory.variable('entity');\nexport const rdfTypeVariable = DataFactory.variable('rdfType');\nexport const rdfTypesVariable = DataFactory.variable('rdfTypes');\nexport const countVariable = DataFactory.variable('count');\nexport const now = DataFactory.variable('now');\nexport const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);\nexport const modified = DataFactory.namedNode(EngineConstants.prop.dateModified);\nexport const firstPredicate = DataFactory.namedNode(RDF.first);\nexport const restPredicate = DataFactory.namedNode(RDF.rest);\nexport const nilPredicate = DataFactory.namedNode(RDF.nil);\nexport const anyPredicatePropertyPath = {\n type: 'path',\n pathType: '!',\n items: [ DataFactory.namedNode('') ]\n} as PropertyPath;\n\nexport const allTypesAndSuperTypesPath: PropertyPath = {\n type: 'path',\n pathType: '/',\n items: [\n rdfTypeNamedNode,\n {\n type: 'path',\n pathType: '*',\n items: [ rdfsSubClassOfNamedNode ]\n }\n ]\n};\n\nexport const bindNow: BindPattern = {\n type: 'bind',\n variable: now,\n expression: {\n type: 'operation',\n operator: 'now',\n args: []\n }\n};\n\nexport const dropAll: ClearDropOperation = {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n all: true\n }\n};\n\nexport const entityGraphTriple = { subject: subjectNode, predicate: predicateNode, object: objectNode };\n\nexport function createSparqlGraphQuads(graph: NamedNode, triples: Triple[]): GraphQuads {\n return {\n type: 'graph',\n name: graph,\n triples\n };\n}\n\nexport function createSparqlClearUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'clear',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlDropUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlUpdate(updates: UpdateOperation[]): Update {\n return {\n type: 'update',\n prefixes: {},\n updates\n };\n}\n\nexport function createSparqlGraphPattern(name: Variable | NamedNode, patterns: Pattern[]): GraphPattern {\n return {\n type: 'graph',\n name,\n patterns\n } as GraphPattern;\n}\n\nexport function createSparqlConstructQuery(triples: Triple[], where: Pattern[]): ConstructQuery {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: triples,\n where\n };\n}\n\nexport function createSparqlCountSelectQuery(\n subject: Variable,\n where: Pattern[],\n order: Ordering[],\n offset?: number\n): SelectQuery {\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: [\n {\n expression: {\n type: 'aggregate',\n aggregation: 'count',\n distinct: true,\n expression: subject\n } as AggregateExpression,\n variable: countVariable\n }\n ],\n where,\n order: order.length > 0 ? order : undefined,\n offset,\n prefixes: {}\n };\n}\n\nexport function creteSparqlAskQuery(where: Pattern[]): AskQuery {\n return {\n type: 'query',\n queryType: 'ASK',\n where,\n prefixes: {}\n };\n}\n\nexport function createSparqlSelectGroup(patterns: Pattern[]): GroupPattern {\n return {\n type: 'group',\n patterns\n };\n}\n\nexport function createSparqlOptional(patterns: Pattern[]): OptionalPattern {\n return {\n type: 'optional',\n patterns\n };\n}\n\nexport function createSparqlUnion(patterns: Pattern[]): UnionPattern {\n return {\n type: 'union',\n patterns\n };\n}\n\nexport function createSparqlBasicGraphPattern(triples: Triple[]): BgpPattern {\n return { type: 'bgp', triples };\n}\n\nexport function createSparqlOptionalGraphSelection(name: Variable | NamedNode, triples: Triple[]): GraphPattern {\n return {\n type: 'graph',\n name: name as IriTerm,\n patterns: [ createSparqlOptional([ createSparqlBasicGraphPattern(triples) ]) ]\n };\n}\n\nexport function createSparqlServicePattern(serviceName: string, triples: Triple[]): ServicePattern {\n return {\n type: 'service',\n patterns: [ createSparqlBasicGraphPattern(triples) ],\n name: DataFactory.namedNode(serviceName),\n silent: false\n };\n}\n\nexport function ensureVariable(variableLike: string | Variable): Variable {\n if (typeof variableLike === 'string' && variableLike.startsWith('?')) {\n return DataFactory.variable(variableLike.slice(1));\n }\n return variableLike as Variable;\n}\n\nexport function ensureGrouping(variableLike: Variable | string): Grouping {\n return {\n expression: ensureVariable(variableLike)\n } as Grouping;\n}\n\nexport function createSparqlSelectQuery(\n variable: Variable | Variable[],\n where: Pattern[],\n order: Ordering[],\n group?: Variable | Variable[],\n limit?: number,\n offset?: number\n): SelectQuery {\n let groupings: Grouping[] | undefined;\n if (group) {\n if (Array.isArray(group)) {\n // eslint-disable-next-line id-length\n groupings = group.map(g => ensureGrouping(g));\n } else {\n groupings = [ ensureGrouping(group) ];\n }\n }\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: Array.isArray(variable) ? variable.map(ensureVariable) : [ ensureVariable(variable) ],\n distinct: true,\n where,\n group: groupings,\n order: order.length > 0 ? order : undefined,\n limit,\n offset,\n prefixes: {}\n };\n}\n\nexport function createSparqlFilterWithExpression(expression: Expression): FilterPattern {\n return { type: 'filter', expression };\n}\n\nexport function createFilterPatternFromFilters(filters: Expression[]): FilterPattern {\n if (filters.length > 2) {\n return createFilterPatternFromFilters([\n {\n type: 'operation',\n operator: '&&',\n args: filters.slice(0, 2)\n },\n ...filters.slice(2)\n ]);\n }\n if (filters.length > 1) {\n return createSparqlFilterWithExpression({\n type: 'operation',\n operator: '&&',\n args: filters\n });\n }\n return createSparqlFilterWithExpression(filters[0]);\n}\n\nexport function createSparqlBindPattern(expression: Expression, variable: Variable): BindPattern {\n return {\n type: 'bind',\n expression,\n variable\n } as BindPattern;\n}\n\nexport function createSparqlEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLcaseOperation(expression: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'lcase',\n args: [ expression ]\n };\n}\n\nexport function createSparqlContainsOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'contains',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '!=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'in',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'notin',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'notexists',\n args\n };\n}\n\nexport function createSparqlExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'exists',\n args\n };\n}\n\nexport function createSparqlInversePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '^',\n items: predicates\n };\n}\n\nexport function createSparqlOrPredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '|',\n items: predicates\n };\n}\n\nexport function createSparqlSequencePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '/',\n items: predicates\n };\n}\n\nexport function createSparqlZeroOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '*',\n items: predicates\n };\n}\n\nexport function createSparqlOneOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '+',\n items: predicates\n };\n}\n\nexport function createSparqlInsertDeleteOperation(\n graph: NamedNode,\n insertionTriples: Triple[],\n deletionTriples: Triple[]\n): InsertDeleteOperation {\n return {\n updateType: 'insertdelete',\n delete: [ createSparqlGraphQuads(graph, deletionTriples) ],\n insert: [ createSparqlGraphQuads(graph, insertionTriples) ],\n where: [ createSparqlBasicGraphPattern(deletionTriples) ],\n using: {\n default: [ graph ]\n }\n } as InsertDeleteOperation;\n}\n\nexport function selectQueryResultsAsJSValues<T extends RawQueryResult>(results: SelectVariableQueryResult<T>[]): T[] {\n return results.map(\n (result): T =>\n Object.entries(result).reduce<T>(\n (obj, [ key, value ]): T => ({\n ...obj,\n [key]: value.termType === 'Literal' ? toJSValueFromDataType(value.value, value.datatype?.value) : value.value\n\n }),\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter\n {} as T\n )\n );\n}\n\nexport function groupSelectQueryResultsByKey(\n results: SelectVariableQueryResult<any>[]\n): Record<string, (NamedNode | Literal)[]> {\n return results.reduce(\n (obj: Record<string, (NamedNode | Literal)[]>, result): Record<string, (NamedNode | Literal)[]> => {\n for (const [ key, value ] of Object.entries(result)) {\n if (!(key in obj)) {\n obj[key] = [ value ];\n } else {\n obj[key].push(value);\n }\n }\n return obj;\n },\n {}\n );\n}\n\nexport function getEntityVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(entityVariable.value in variables)) {\n return [];\n }\n return (variables[entityVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(rdfTypesVariable.value in variables)) {\n return [];\n }\n return (variables[rdfTypesVariable.value] as Literal[]).flatMap((literal: Literal): string[] => literal.value.split(' | '));\n}\n\nexport function createValuesPatternsForVariables(\n valuesByVariable: Record<string, (NamedNode | Literal)[]>\n): ValuesPattern[] {\n return Object.entries(valuesByVariable).map(\n ([ variableName, values ]): ValuesPattern => ({\n type: 'values',\n values: values.map(\n (value): ValuePatternRow => ({\n [`?${variableName}`]: value\n })\n )\n })\n );\n}\n"]}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -26,6 +26,7 @@ export * from './storage/operator/LessThan';
|
|
|
26
26
|
export * from './storage/operator/LessThanOrEqual';
|
|
27
27
|
export * from './storage/operator/Not';
|
|
28
28
|
export * from './storage/operator/OneOrMorePath';
|
|
29
|
+
export * from './storage/operator/Or';
|
|
29
30
|
export * from './storage/operator/Sequence';
|
|
30
31
|
export * from './storage/operator/SequencePath';
|
|
31
32
|
export * from './storage/operator/ZeroOrMorePath';
|
|
@@ -76,7 +76,9 @@ export interface FindOptionsWhere {
|
|
|
76
76
|
type?: TypeFindOptionsWhereField;
|
|
77
77
|
id?: IdFindOptionsWhereField;
|
|
78
78
|
binds?: BindPattern[];
|
|
79
|
-
|
|
79
|
+
and?: FindOptionsWhere[];
|
|
80
|
+
or?: FindOptionsWhere[];
|
|
81
|
+
[k: string]: FindOptionsWhereField | BindPattern[] | FindOptionsWhere[] | undefined;
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
// Add these new types
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ValueObject } from 'jsonld';
|
|
2
|
+
import { FindOperator } from '../FindOperator';
|
|
3
|
+
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
5
|
+
export function Or<T extends number | Date | string | boolean | ValueObject>(value: T[]): FindOperator<T[], 'or'> {
|
|
6
|
+
return new FindOperator({
|
|
7
|
+
operator: 'or',
|
|
8
|
+
value
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
|
|
@@ -7,9 +7,11 @@ import type { OrArray } from '@comake/rmlmapper-js';
|
|
|
7
7
|
import type { GraphObject, NodeObject } from 'jsonld';
|
|
8
8
|
import type { Frame } from 'jsonld/jsonld-spec';
|
|
9
9
|
import type {
|
|
10
|
+
AggregateExpression,
|
|
10
11
|
ConstructQuery,
|
|
11
12
|
Pattern,
|
|
12
|
-
Triple
|
|
13
|
+
Triple,
|
|
14
|
+
Variable
|
|
13
15
|
} from 'sparqljs';
|
|
14
16
|
import { Logger } from '../../../logger';
|
|
15
17
|
import { PerformanceLogger } from '../../../util/PerformanceLogger';
|
|
@@ -22,6 +24,7 @@ import {
|
|
|
22
24
|
getRdfTypeVariableValuesFromVariables,
|
|
23
25
|
groupSelectQueryResultsByKey,
|
|
24
26
|
rdfTypeNamedNode,
|
|
27
|
+
rdfTypesVariable,
|
|
25
28
|
rdfTypeVariable,
|
|
26
29
|
selectQueryResultsAsJSValues
|
|
27
30
|
} from '../../../util/SparqlUtil';
|
|
@@ -30,6 +33,7 @@ import {
|
|
|
30
33
|
triplesToJsonldWithFrame
|
|
31
34
|
} from '../../../util/TripleUtil';
|
|
32
35
|
import type { Entity } from '../../../util/Types';
|
|
36
|
+
import { ensureArray } from '../../../util/Util';
|
|
33
37
|
import type {
|
|
34
38
|
FindAllOptions, FindCountOptions,
|
|
35
39
|
FindExistsOptions, FindOneOptions, FindOptionsWhere
|
|
@@ -155,11 +159,34 @@ export class SparqlQueryAdapter implements QueryAdapter {
|
|
|
155
159
|
}
|
|
156
160
|
]
|
|
157
161
|
});
|
|
162
|
+
const entitySelectVariable = options?.entitySelectVariable ?? entityVariable;
|
|
163
|
+
const groupBy = ensureArray(selectQueryData?.group ?? options?.group ?? []);
|
|
164
|
+
groupBy.push(entitySelectVariable);
|
|
165
|
+
// All non-aggregated variables in SELECT must be in GROUP BY
|
|
166
|
+
for (const selectVariable of selectQueryData.selectVariables ?? []) {
|
|
167
|
+
if (!('aggregation' in (selectVariable.expression as AggregateExpression)) && selectVariable.expression.constructor.name === 'Variable') {
|
|
168
|
+
groupBy.push(selectVariable.expression as Variable);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
158
171
|
const entitySelectQuery = selectQueryData.where.length > 0
|
|
159
172
|
? createSparqlSelectQuery(
|
|
160
173
|
[
|
|
161
|
-
|
|
162
|
-
|
|
174
|
+
entitySelectVariable,
|
|
175
|
+
// (GROUP_CONCAT(DISTINCT str(?rdfType); SEPARATOR = " | ") AS ?rdfTypes)
|
|
176
|
+
{
|
|
177
|
+
expression: {
|
|
178
|
+
type: "aggregate",
|
|
179
|
+
aggregation: "group_concat",
|
|
180
|
+
separator: " | ",
|
|
181
|
+
distinct: true,
|
|
182
|
+
expression: {
|
|
183
|
+
type: "operation",
|
|
184
|
+
operator: "STR",
|
|
185
|
+
args: [ rdfTypeVariable ]
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
variable: rdfTypesVariable
|
|
189
|
+
},
|
|
163
190
|
...selectQueryData.selectVariables?.map(({ variable, expression }) => {
|
|
164
191
|
if (!expression) return variable;
|
|
165
192
|
return {
|
|
@@ -170,7 +197,7 @@ export class SparqlQueryAdapter implements QueryAdapter {
|
|
|
170
197
|
],
|
|
171
198
|
wherePatterns,
|
|
172
199
|
selectQueryData.orders,
|
|
173
|
-
|
|
200
|
+
groupBy,
|
|
174
201
|
options?.limit,
|
|
175
202
|
options?.offset
|
|
176
203
|
)
|
|
@@ -398,7 +398,7 @@ export class SparqlQueryBuilder {
|
|
|
398
398
|
private createWhereQueryDataForField(
|
|
399
399
|
subject: Variable,
|
|
400
400
|
field: string,
|
|
401
|
-
value: IdFindOptionsWhereField | TypeFindOptionsWhereField | FindOptionsWhereField
|
|
401
|
+
value: IdFindOptionsWhereField | TypeFindOptionsWhereField | FindOptionsWhereField | FindOptionsWhere[]
|
|
402
402
|
): NonGraphWhereQueryData {
|
|
403
403
|
if (field === 'id') {
|
|
404
404
|
return this.createWhereQueryDataForIdValue(subject, value as FindOperator<any, any>);
|
|
@@ -406,8 +406,80 @@ export class SparqlQueryBuilder {
|
|
|
406
406
|
if (field === 'type') {
|
|
407
407
|
return this.createWhereQueryDataForType(subject, value as FindOperator<any, any>);
|
|
408
408
|
}
|
|
409
|
+
if (field === 'and') {
|
|
410
|
+
return this.createWhereQueryDataForAndClause(subject, value as FindOptionsWhere[]);
|
|
411
|
+
}
|
|
412
|
+
if (field === 'or') {
|
|
413
|
+
return this.createWhereQueryDataForOrClause(subject, value as FindOptionsWhere[]);
|
|
414
|
+
}
|
|
409
415
|
const predicate = DataFactory.namedNode(field);
|
|
410
|
-
return this.createWhereQueryDataFromKeyValue(subject, predicate, value);
|
|
416
|
+
return this.createWhereQueryDataFromKeyValue(subject, predicate, value as FindOptionsWhereField);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
private createWhereQueryDataForAndClause(
|
|
420
|
+
subject: Variable,
|
|
421
|
+
whereClauses: FindOptionsWhere[]
|
|
422
|
+
): NonGraphWhereQueryData {
|
|
423
|
+
// Combine all nested where conditions - all must match
|
|
424
|
+
return whereClauses.reduce(
|
|
425
|
+
(acc: NonGraphWhereQueryData, nestedWhere): NonGraphWhereQueryData => {
|
|
426
|
+
const nestedData = this.createWhereQueryData(subject, nestedWhere);
|
|
427
|
+
return {
|
|
428
|
+
values: [ ...acc.values, ...nestedData.values ],
|
|
429
|
+
triples: [ ...acc.triples, ...nestedData.triples ],
|
|
430
|
+
filters: [ ...acc.filters, ...nestedData.filters ],
|
|
431
|
+
patterns: [ ...acc.patterns ?? [], ...nestedData.patterns ?? [] ],
|
|
432
|
+
binds: [ ...acc.binds ?? [], ...nestedData.binds ?? [] ]
|
|
433
|
+
};
|
|
434
|
+
},
|
|
435
|
+
{ values: [], triples: [], filters: [], patterns: [], binds: [] }
|
|
436
|
+
);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
private createWhereQueryDataForOrClause(
|
|
440
|
+
subject: Variable,
|
|
441
|
+
whereClauses: FindOptionsWhere[]
|
|
442
|
+
): NonGraphWhereQueryData {
|
|
443
|
+
// Create UNION patterns - any condition can match
|
|
444
|
+
const unionPatterns = whereClauses.map((nestedWhere): Pattern => {
|
|
445
|
+
const nestedData = this.createWhereQueryData(subject, nestedWhere);
|
|
446
|
+
const patterns: Pattern[] = [];
|
|
447
|
+
|
|
448
|
+
// Add values patterns
|
|
449
|
+
if (nestedData.values.length > 0) {
|
|
450
|
+
patterns.push(...nestedData.values);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// Add triples as basic graph pattern
|
|
454
|
+
if (nestedData.triples.length > 0) {
|
|
455
|
+
patterns.push(createSparqlBasicGraphPattern(nestedData.triples));
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
// Add nested patterns (for deeply nested and/or)
|
|
459
|
+
if (nestedData.patterns && nestedData.patterns.length > 0) {
|
|
460
|
+
patterns.push(...nestedData.patterns);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// Add filters
|
|
464
|
+
if (nestedData.filters.length > 0) {
|
|
465
|
+
patterns.push(createFilterPatternFromFilters(nestedData.filters));
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// Add binds
|
|
469
|
+
if (nestedData.binds && nestedData.binds.length > 0) {
|
|
470
|
+
patterns.push(...nestedData.binds);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
return createSparqlSelectGroup(patterns);
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
return {
|
|
477
|
+
values: [],
|
|
478
|
+
triples: [],
|
|
479
|
+
filters: [],
|
|
480
|
+
patterns: [ createSparqlUnion(unionPatterns) ],
|
|
481
|
+
binds: []
|
|
482
|
+
};
|
|
411
483
|
}
|
|
412
484
|
|
|
413
485
|
private createWhereQueryDataForIdValue(term: Variable, value: IdFindOptionsWhereField): NonGraphWhereQueryData {
|
package/src/util/SparqlUtil.ts
CHANGED
|
@@ -43,6 +43,7 @@ export const predicateNode = DataFactory.variable('predicate');
|
|
|
43
43
|
export const objectNode = DataFactory.variable('object');
|
|
44
44
|
export const entityVariable = DataFactory.variable('entity');
|
|
45
45
|
export const rdfTypeVariable = DataFactory.variable('rdfType');
|
|
46
|
+
export const rdfTypesVariable = DataFactory.variable('rdfTypes');
|
|
46
47
|
export const countVariable = DataFactory.variable('count');
|
|
47
48
|
export const now = DataFactory.variable('now');
|
|
48
49
|
export const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);
|
|
@@ -494,10 +495,10 @@ export function getEntityVariableValuesFromVariables(variables: Record<string, (
|
|
|
494
495
|
}
|
|
495
496
|
|
|
496
497
|
export function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {
|
|
497
|
-
if (!(
|
|
498
|
+
if (!(rdfTypesVariable.value in variables)) {
|
|
498
499
|
return [];
|
|
499
500
|
}
|
|
500
|
-
return (variables[
|
|
501
|
+
return (variables[rdfTypesVariable.value] as Literal[]).flatMap((literal: Literal): string[] => literal.value.split(' | '));
|
|
501
502
|
}
|
|
502
503
|
|
|
503
504
|
export function createValuesPatternsForVariables(
|