@comake/skl-js-engine 1.5.2 → 1.5.4
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/package.json +1 -1
- package/src/SklEngine.ts +8 -1
- package/src/util/TripleUtil.ts +22 -2
- package/dist/JsExecutor/PermissionBuilder.d.ts +0 -14
- package/dist/JsExecutor/PermissionBuilder.d.ts.map +0 -1
- package/dist/JsExecutor/PermissionBuilder.js +0 -58
- package/dist/JsExecutor/PermissionBuilder.js.map +0 -1
- package/dist/JsExecutor/constants.d.ts +0 -27
- package/dist/JsExecutor/constants.d.ts.map +0 -1
- package/dist/JsExecutor/constants.js +0 -30
- package/dist/JsExecutor/constants.js.map +0 -1
- package/dist/JsExecutor/denoUtils.d.ts +0 -10
- package/dist/JsExecutor/denoUtils.d.ts.map +0 -1
- package/dist/JsExecutor/denoUtils.js +0 -24
- package/dist/JsExecutor/denoUtils.js.map +0 -1
- package/dist/JsExecutor/errors.d.ts +0 -40
- package/dist/JsExecutor/errors.d.ts.map +0 -1
- package/dist/JsExecutor/errors.js +0 -67
- package/dist/JsExecutor/errors.js.map +0 -1
- package/dist/JsExecutor/examples/basic/index.d.ts +0 -1
- package/dist/JsExecutor/examples/basic/index.d.ts.map +0 -1
- package/dist/JsExecutor/examples/basic/index.js +0 -46
- package/dist/JsExecutor/examples/basic/index.js.map +0 -1
- package/dist/JsExecutor/examples/basic/process.d.ts +0 -1
- package/dist/JsExecutor/examples/basic/process.d.ts.map +0 -1
- package/dist/JsExecutor/examples/basic/process.js +0 -34
- package/dist/JsExecutor/examples/basic/process.js.map +0 -1
- package/dist/JsExecutor/examples/jsExecutor/index.d.ts +0 -2
- package/dist/JsExecutor/examples/jsExecutor/index.d.ts.map +0 -1
- package/dist/JsExecutor/examples/jsExecutor/index.js +0 -47
- package/dist/JsExecutor/examples/jsExecutor/index.js.map +0 -1
- package/dist/JsExecutor/examples/jsExecutor/process.d.ts +0 -2
- package/dist/JsExecutor/examples/jsExecutor/process.d.ts.map +0 -1
- package/dist/JsExecutor/examples/jsExecutor/process.js +0 -58
- package/dist/JsExecutor/examples/jsExecutor/process.js.map +0 -1
- package/dist/JsExecutor/index.d.ts +0 -7
- package/dist/JsExecutor/index.d.ts.map +0 -1
- package/dist/JsExecutor/index.js +0 -36
- package/dist/JsExecutor/index.js.map +0 -1
- package/dist/JsExecutor/jsExecutor.d.ts +0 -68
- package/dist/JsExecutor/jsExecutor.d.ts.map +0 -1
- package/dist/JsExecutor/jsExecutor.js +0 -171
- package/dist/JsExecutor/jsExecutor.js.map +0 -1
- package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts +0 -165
- package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts.map +0 -1
- package/dist/JsExecutor/jsonRpc/JsonRpcClient.js +0 -335
- package/dist/JsExecutor/jsonRpc/JsonRpcClient.js.map +0 -1
- package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts +0 -125
- package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts.map +0 -1
- package/dist/JsExecutor/jsonRpc/JsonRpcServer.js +0 -391
- package/dist/JsExecutor/jsonRpc/JsonRpcServer.js.map +0 -1
- package/dist/JsExecutor/jsonRpc/index.d.ts +0 -4
- package/dist/JsExecutor/jsonRpc/index.d.ts.map +0 -1
- package/dist/JsExecutor/jsonRpc/index.js +0 -23
- package/dist/JsExecutor/jsonRpc/index.js.map +0 -1
- package/dist/JsExecutor/jsonRpc/types.d.ts +0 -193
- package/dist/JsExecutor/jsonRpc/types.d.ts.map +0 -1
- package/dist/JsExecutor/jsonRpc/types.js +0 -37
- package/dist/JsExecutor/jsonRpc/types.js.map +0 -1
- package/dist/JsExecutor/transport/Transport.d.ts +0 -74
- package/dist/JsExecutor/transport/Transport.d.ts.map +0 -1
- package/dist/JsExecutor/transport/Transport.js +0 -14
- package/dist/JsExecutor/transport/Transport.js.map +0 -1
- package/dist/JsExecutor/transport/base/BaseTransport.d.ts +0 -51
- package/dist/JsExecutor/transport/base/BaseTransport.d.ts.map +0 -1
- package/dist/JsExecutor/transport/base/BaseTransport.js +0 -68
- package/dist/JsExecutor/transport/base/BaseTransport.js.map +0 -1
- package/dist/JsExecutor/transport/index.d.ts +0 -13
- package/dist/JsExecutor/transport/index.d.ts.map +0 -1
- package/dist/JsExecutor/transport/index.js +0 -36
- package/dist/JsExecutor/transport/index.js.map +0 -1
- package/dist/JsExecutor/transport/process/ProcessManager.d.ts +0 -96
- package/dist/JsExecutor/transport/process/ProcessManager.d.ts.map +0 -1
- package/dist/JsExecutor/transport/process/ProcessManager.js +0 -219
- package/dist/JsExecutor/transport/process/ProcessManager.js.map +0 -1
- package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts +0 -87
- package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts.map +0 -1
- package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js +0 -219
- package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js.map +0 -1
- package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts +0 -81
- package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts.map +0 -1
- package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js +0 -259
- package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js.map +0 -1
- package/dist/JsExecutor/transport/utils/MessageUtils.d.ts +0 -68
- package/dist/JsExecutor/transport/utils/MessageUtils.d.ts.map +0 -1
- package/dist/JsExecutor/transport/utils/MessageUtils.js +0 -135
- package/dist/JsExecutor/transport/utils/MessageUtils.js.map +0 -1
- package/dist/JsExecutor/transport/utils/PollingUtils.d.ts +0 -53
- package/dist/JsExecutor/transport/utils/PollingUtils.d.ts.map +0 -1
- package/dist/JsExecutor/transport/utils/PollingUtils.js +0 -92
- package/dist/JsExecutor/transport/utils/PollingUtils.js.map +0 -1
- package/dist/JsExecutor/types.d.ts +0 -113
- package/dist/JsExecutor/types.d.ts.map +0 -1
- package/dist/JsExecutor/types.js +0 -3
- package/dist/JsExecutor/types.js.map +0 -1
- package/dist/SklEngine.d.ts +0 -132
- package/dist/SklEngine.d.ts.map +0 -1
- package/dist/SklEngine.js +0 -1501
- package/dist/SklEngine.js.map +0 -1
- package/dist/SklEngineOptions.d.ts +0 -58
- package/dist/SklEngineOptions.d.ts.map +0 -1
- package/dist/SklEngineOptions.js +0 -3
- package/dist/SklEngineOptions.js.map +0 -1
- package/dist/constants.d.ts +0 -96
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -103
- package/dist/constants.js.map +0 -1
- package/dist/customCapabilities.d.ts +0 -22
- package/dist/customCapabilities.d.ts.map +0 -1
- package/dist/customCapabilities.js +0 -45
- package/dist/customCapabilities.js.map +0 -1
- package/dist/examples/customCapabilitiesExample.d.ts +0 -2
- package/dist/examples/customCapabilitiesExample.d.ts.map +0 -1
- package/dist/examples/customCapabilitiesExample.js +0 -59
- package/dist/examples/customCapabilitiesExample.js.map +0 -1
- package/dist/executor.js +0 -216
- package/dist/hooks/globalHooks.d.ts +0 -50
- package/dist/hooks/globalHooks.d.ts.map +0 -1
- package/dist/hooks/globalHooks.js +0 -164
- package/dist/hooks/globalHooks.js.map +0 -1
- package/dist/hooks/types.d.ts +0 -9
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/types.js +0 -3
- package/dist/hooks/types.js.map +0 -1
- package/dist/index.d.ts +0 -41
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -68
- package/dist/index.js.map +0 -1
- package/dist/logger.d.ts +0 -35
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -119
- package/dist/logger.js.map +0 -1
- package/dist/mapping/Mapper.d.ts +0 -13
- package/dist/mapping/Mapper.d.ts.map +0 -1
- package/dist/mapping/Mapper.js +0 -64
- package/dist/mapping/Mapper.js.map +0 -1
- package/dist/storage/FindOperator.d.ts +0 -19
- package/dist/storage/FindOperator.d.ts.map +0 -1
- package/dist/storage/FindOperator.js +0 -23
- package/dist/storage/FindOperator.js.map +0 -1
- package/dist/storage/FindOptionsTypes.d.ts +0 -79
- package/dist/storage/FindOptionsTypes.d.ts.map +0 -1
- package/dist/storage/FindOptionsTypes.js +0 -3
- package/dist/storage/FindOptionsTypes.js.map +0 -1
- package/dist/storage/GroupOptionTypes.d.ts +0 -29
- package/dist/storage/GroupOptionTypes.d.ts.map +0 -1
- package/dist/storage/GroupOptionTypes.js +0 -3
- package/dist/storage/GroupOptionTypes.js.map +0 -1
- package/dist/storage/operator/And.d.ts +0 -4
- package/dist/storage/operator/And.d.ts.map +0 -1
- package/dist/storage/operator/And.js +0 -13
- package/dist/storage/operator/And.js.map +0 -1
- package/dist/storage/operator/Contains.d.ts +0 -3
- package/dist/storage/operator/Contains.d.ts.map +0 -1
- package/dist/storage/operator/Contains.js +0 -13
- package/dist/storage/operator/Contains.js.map +0 -1
- package/dist/storage/operator/Equal.d.ts +0 -5
- package/dist/storage/operator/Equal.d.ts.map +0 -1
- package/dist/storage/operator/Equal.js +0 -13
- package/dist/storage/operator/Equal.js.map +0 -1
- package/dist/storage/operator/Exists.d.ts +0 -3
- package/dist/storage/operator/Exists.d.ts.map +0 -1
- package/dist/storage/operator/Exists.js +0 -10
- package/dist/storage/operator/Exists.js.map +0 -1
- package/dist/storage/operator/GreaterThan.d.ts +0 -4
- package/dist/storage/operator/GreaterThan.d.ts.map +0 -1
- package/dist/storage/operator/GreaterThan.js +0 -13
- package/dist/storage/operator/GreaterThan.js.map +0 -1
- package/dist/storage/operator/GreaterThanOrEqual.d.ts +0 -4
- package/dist/storage/operator/GreaterThanOrEqual.d.ts.map +0 -1
- package/dist/storage/operator/GreaterThanOrEqual.js +0 -13
- package/dist/storage/operator/GreaterThanOrEqual.js.map +0 -1
- package/dist/storage/operator/In.d.ts +0 -4
- package/dist/storage/operator/In.d.ts.map +0 -1
- package/dist/storage/operator/In.js +0 -13
- package/dist/storage/operator/In.js.map +0 -1
- package/dist/storage/operator/Inverse.d.ts +0 -3
- package/dist/storage/operator/Inverse.d.ts.map +0 -1
- package/dist/storage/operator/Inverse.js +0 -13
- package/dist/storage/operator/Inverse.js.map +0 -1
- package/dist/storage/operator/InversePath.d.ts +0 -7
- package/dist/storage/operator/InversePath.d.ts.map +0 -1
- package/dist/storage/operator/InversePath.js +0 -13
- package/dist/storage/operator/InversePath.js.map +0 -1
- package/dist/storage/operator/InverseRelation.d.ts +0 -9
- package/dist/storage/operator/InverseRelation.d.ts.map +0 -1
- package/dist/storage/operator/InverseRelation.js +0 -13
- package/dist/storage/operator/InverseRelation.js.map +0 -1
- package/dist/storage/operator/InverseRelationOrder.d.ts +0 -8
- package/dist/storage/operator/InverseRelationOrder.d.ts.map +0 -1
- package/dist/storage/operator/InverseRelationOrder.js +0 -13
- package/dist/storage/operator/InverseRelationOrder.js.map +0 -1
- package/dist/storage/operator/LessThan.d.ts +0 -4
- package/dist/storage/operator/LessThan.d.ts.map +0 -1
- package/dist/storage/operator/LessThan.js +0 -13
- package/dist/storage/operator/LessThan.js.map +0 -1
- package/dist/storage/operator/LessThanOrEqual.d.ts +0 -4
- package/dist/storage/operator/LessThanOrEqual.d.ts.map +0 -1
- package/dist/storage/operator/LessThanOrEqual.js +0 -13
- package/dist/storage/operator/LessThanOrEqual.js.map +0 -1
- package/dist/storage/operator/Not.d.ts +0 -3
- package/dist/storage/operator/Not.d.ts.map +0 -1
- package/dist/storage/operator/Not.js +0 -13
- package/dist/storage/operator/Not.js.map +0 -1
- package/dist/storage/operator/OneOrMorePath.d.ts +0 -7
- package/dist/storage/operator/OneOrMorePath.d.ts.map +0 -1
- package/dist/storage/operator/OneOrMorePath.js +0 -13
- package/dist/storage/operator/OneOrMorePath.js.map +0 -1
- package/dist/storage/operator/Or.d.ts +0 -4
- package/dist/storage/operator/Or.d.ts.map +0 -1
- package/dist/storage/operator/Or.js +0 -13
- package/dist/storage/operator/Or.js.map +0 -1
- package/dist/storage/operator/Sequence.d.ts +0 -3
- package/dist/storage/operator/Sequence.d.ts.map +0 -1
- package/dist/storage/operator/Sequence.js +0 -13
- package/dist/storage/operator/Sequence.js.map +0 -1
- package/dist/storage/operator/SequencePath.d.ts +0 -7
- package/dist/storage/operator/SequencePath.d.ts.map +0 -1
- package/dist/storage/operator/SequencePath.js +0 -13
- package/dist/storage/operator/SequencePath.js.map +0 -1
- package/dist/storage/operator/ZeroOrMorePath.d.ts +0 -7
- package/dist/storage/operator/ZeroOrMorePath.d.ts.map +0 -1
- package/dist/storage/operator/ZeroOrMorePath.js +0 -13
- package/dist/storage/operator/ZeroOrMorePath.js.map +0 -1
- package/dist/storage/query-adapter/QueryAdapter.d.ts +0 -99
- package/dist/storage/query-adapter/QueryAdapter.d.ts.map +0 -1
- package/dist/storage/query-adapter/QueryAdapter.js +0 -3
- package/dist/storage/query-adapter/QueryAdapter.js.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts +0 -40
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +0 -315
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts +0 -34
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js +0 -3
- package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts +0 -104
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js +0 -1210
- package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts +0 -41
- package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js +0 -305
- package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js.map +0 -1
- package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts +0 -5
- package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/VariableGenerator.js +0 -14
- package/dist/storage/query-adapter/sparql/VariableGenerator.js.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts +0 -19
- package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js +0 -90
- package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts +0 -27
- package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js +0 -116
- package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts +0 -34
- package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts.map +0 -1
- package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js +0 -3
- package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js.map +0 -1
- package/dist/tools/explain-findall-sparql.d.ts +0 -2
- package/dist/tools/explain-findall-sparql.d.ts.map +0 -1
- package/dist/tools/explain-findall-sparql.js +0 -303
- package/dist/tools/explain-findall-sparql.js.map +0 -1
- package/dist/util/PerformanceLogger.d.ts +0 -28
- package/dist/util/PerformanceLogger.d.ts.map +0 -1
- package/dist/util/PerformanceLogger.js +0 -223
- package/dist/util/PerformanceLogger.js.map +0 -1
- package/dist/util/ReadCacheHelper.d.ts +0 -14
- package/dist/util/ReadCacheHelper.d.ts.map +0 -1
- package/dist/util/ReadCacheHelper.js +0 -61
- package/dist/util/ReadCacheHelper.js.map +0 -1
- package/dist/util/SparqlUtil.d.ts +0 -72
- package/dist/util/SparqlUtil.d.ts.map +0 -1
- package/dist/util/SparqlUtil.js +0 -456
- package/dist/util/SparqlUtil.js.map +0 -1
- package/dist/util/TripleUtil.d.ts +0 -10
- package/dist/util/TripleUtil.d.ts.map +0 -1
- package/dist/util/TripleUtil.js +0 -402
- package/dist/util/TripleUtil.js.map +0 -1
- package/dist/util/Types.d.ts +0 -271
- package/dist/util/Types.d.ts.map +0 -1
- package/dist/util/Types.js +0 -3
- package/dist/util/Types.js.map +0 -1
- package/dist/util/Util.d.ts +0 -26
- package/dist/util/Util.d.ts.map +0 -1
- package/dist/util/Util.js +0 -138
- package/dist/util/Util.js.map +0 -1
- package/dist/util/Vocabularies/Shared.d.ts +0 -13
- package/dist/util/Vocabularies/Shared.d.ts.map +0 -1
- package/dist/util/Vocabularies/Shared.js +0 -96
- package/dist/util/Vocabularies/Shared.js.map +0 -1
- package/dist/util/Vocabularies/helper.d.ts +0 -5
- package/dist/util/Vocabularies/helper.d.ts.map +0 -1
- package/dist/util/Vocabularies/helper.js +0 -10
- package/dist/util/Vocabularies/helper.js.map +0 -1
- package/dist/util/Vocabularies/index.d.ts +0 -8
- package/dist/util/Vocabularies/index.d.ts.map +0 -1
- package/dist/util/Vocabularies/index.js +0 -114
- package/dist/util/Vocabularies/index.js.map +0 -1
- package/dist/util/safeJsonStringify.d.ts +0 -1
- package/dist/util/safeJsonStringify.d.ts.map +0 -1
- package/dist/util/safeJsonStringify.js +0 -19
- package/dist/util/safeJsonStringify.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Literal, Quad, Variable } from '@rdfjs/types';
|
|
2
|
-
import type { GraphObject, NodeObject } from 'jsonld';
|
|
3
|
-
import type { Frame } from 'jsonld/jsonld-spec';
|
|
4
|
-
import type { FindOptionsRelations, FindOptionsWhere } from '../storage/FindOptionsTypes';
|
|
5
|
-
import type { JSONArray, JSONObject, OrArray } from './Types';
|
|
6
|
-
export declare function toJSValueFromDataType(value: string, dataType: string): number | boolean | string;
|
|
7
|
-
export declare function triplesToJsonld(triples: Quad[], skipFraming?: boolean, relations?: FindOptionsRelations, where?: FindOptionsWhere, orderedNodeIds?: string[], rdfTypes?: string[]): Promise<OrArray<NodeObject>>;
|
|
8
|
-
export declare function triplesToJsonldWithFrame(triples: Quad[], frame?: Frame): Promise<GraphObject>;
|
|
9
|
-
export declare function valueToLiteral(value: string | boolean | number | Date | JSONObject | JSONArray, datatype?: string): Literal | Variable;
|
|
10
|
-
//# sourceMappingURL=TripleUtil.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TripleUtil.d.ts","sourceRoot":"","sources":["../../src/util/TripleUtil.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAA6B,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAqB,WAAW,EAAE,UAAU,EAAe,MAAM,QAAQ,CAAC;AAEtF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE1F,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAM9D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CA4BhG;AA0SD,wBAAsB,eAAe,CACnC,OAAO,EAAE,IAAI,EAAE,EACf,WAAW,CAAC,EAAE,OAAO,EACrB,SAAS,CAAC,EAAE,oBAAoB,EAChC,KAAK,CAAC,EAAE,gBAAgB,EACxB,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAmB9B;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAcnG;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,EAChE,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,GAAG,QAAQ,CAwBpB"}
|
package/dist/util/TripleUtil.js
DELETED
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.valueToLiteral = exports.triplesToJsonldWithFrame = exports.triplesToJsonld = exports.toJSValueFromDataType = void 0;
|
|
30
|
-
/* eslint-disable multiline-comment-style */
|
|
31
|
-
/* eslint-disable capitalized-comments */
|
|
32
|
-
/* eslint-disable indent */
|
|
33
|
-
/* eslint-disable @typescript-eslint/naming-convention */
|
|
34
|
-
const data_model_1 = __importDefault(require("@rdfjs/data-model"));
|
|
35
|
-
const jsonld = __importStar(require("jsonld"));
|
|
36
|
-
const FindOperator_1 = require("../storage/FindOperator");
|
|
37
|
-
const Util_1 = require("./Util");
|
|
38
|
-
const Vocabularies_1 = require("./Vocabularies");
|
|
39
|
-
const BLANK_NODE_PREFIX = '_:';
|
|
40
|
-
function toJSValueFromDataType(value, dataType) {
|
|
41
|
-
switch (dataType) {
|
|
42
|
-
case Vocabularies_1.XSD.int:
|
|
43
|
-
case Vocabularies_1.XSD.positiveInteger:
|
|
44
|
-
case Vocabularies_1.XSD.negativeInteger:
|
|
45
|
-
case Vocabularies_1.XSD.integer: {
|
|
46
|
-
return Number.parseInt(value, 10);
|
|
47
|
-
}
|
|
48
|
-
case Vocabularies_1.XSD.boolean: {
|
|
49
|
-
if (value === 'true') {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
if (value === 'false') {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
return value;
|
|
56
|
-
}
|
|
57
|
-
case Vocabularies_1.XSD.double:
|
|
58
|
-
case Vocabularies_1.XSD.decimal:
|
|
59
|
-
case Vocabularies_1.XSD.float: {
|
|
60
|
-
return Number.parseFloat(value);
|
|
61
|
-
}
|
|
62
|
-
case Vocabularies_1.RDF.JSON:
|
|
63
|
-
return JSON.parse(value);
|
|
64
|
-
default: {
|
|
65
|
-
return value;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
exports.toJSValueFromDataType = toJSValueFromDataType;
|
|
70
|
-
function toJsonLdObject(object) {
|
|
71
|
-
if (object.termType === 'Literal') {
|
|
72
|
-
if (object.language && object.language.length > 0) {
|
|
73
|
-
return {
|
|
74
|
-
'@value': object.value,
|
|
75
|
-
'@language': object.language
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
'@value': toJSValueFromDataType(object.value, object.datatype.value),
|
|
80
|
-
'@type': object.datatype.value === Vocabularies_1.RDF.JSON ? '@json' : object.datatype.value
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
if (object.termType === 'BlankNode') {
|
|
84
|
-
return { '@id': `_:${object.value}` };
|
|
85
|
-
}
|
|
86
|
-
return { '@id': object.value };
|
|
87
|
-
}
|
|
88
|
-
function toJsonLdSubject(object) {
|
|
89
|
-
if (object.termType === 'BlankNode') {
|
|
90
|
-
return `_:${object.value}`;
|
|
91
|
-
}
|
|
92
|
-
return object.value;
|
|
93
|
-
}
|
|
94
|
-
function relationsToFrame(relations) {
|
|
95
|
-
return Object.entries(relations).reduce((obj, [field, value]) => {
|
|
96
|
-
const fieldFrame = {
|
|
97
|
-
'@explicit': false
|
|
98
|
-
};
|
|
99
|
-
let contextAddition;
|
|
100
|
-
if (typeof value === 'object' && value.type === 'operator') {
|
|
101
|
-
const { resolvedName, relations: subRelations } = value.value;
|
|
102
|
-
contextAddition = { [resolvedName]: { '@reverse': field } };
|
|
103
|
-
if (subRelations) {
|
|
104
|
-
fieldFrame[resolvedName] = relationsToFrame(subRelations);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
fieldFrame[resolvedName] = {
|
|
108
|
-
"@embed": "@always"
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
else if (typeof value === 'boolean') {
|
|
113
|
-
fieldFrame[field] = {
|
|
114
|
-
"@embed": "@always"
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
fieldFrame[field] = relationsToFrame(value);
|
|
119
|
-
}
|
|
120
|
-
if (contextAddition) {
|
|
121
|
-
return {
|
|
122
|
-
...obj,
|
|
123
|
-
'@context': {
|
|
124
|
-
...obj['@context'],
|
|
125
|
-
...contextAddition
|
|
126
|
-
},
|
|
127
|
-
...fieldFrame
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
return {
|
|
131
|
-
...obj,
|
|
132
|
-
...fieldFrame
|
|
133
|
-
};
|
|
134
|
-
}, {});
|
|
135
|
-
}
|
|
136
|
-
function whereToFrame(where) {
|
|
137
|
-
if (where.id && typeof where.id === 'string') {
|
|
138
|
-
return { '@id': where.id };
|
|
139
|
-
}
|
|
140
|
-
if (where.id && FindOperator_1.FindOperator.isFindOperator(where.id)) {
|
|
141
|
-
const operator = where.id;
|
|
142
|
-
if (operator.operator === 'in') {
|
|
143
|
-
return { '@id': operator.value };
|
|
144
|
-
}
|
|
145
|
-
if (operator.operator === 'equal') {
|
|
146
|
-
return { '@id': operator.value };
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
if (where.type && typeof where.type === 'string') {
|
|
150
|
-
return { '@type': where.type };
|
|
151
|
-
}
|
|
152
|
-
if (where.type && typeof where.type === 'object' && 'value' in where.type && typeof where.type.value === 'string') {
|
|
153
|
-
return { '@type': where.type.value };
|
|
154
|
-
}
|
|
155
|
-
// Handle arbitrary property constraints
|
|
156
|
-
/* const frame: NodeObject = {};
|
|
157
|
-
Object.entries(where).forEach(([ key, value ]) => {
|
|
158
|
-
if (key !== 'id' && key !== 'type') {
|
|
159
|
-
if (typeof value === 'string') {
|
|
160
|
-
frame[key] = { '@id': value };
|
|
161
|
-
} else if (FindOperator.isFindOperator(value)) {
|
|
162
|
-
const operator = value as FindOperator<any, any>;
|
|
163
|
-
if (operator.operator === 'in') {
|
|
164
|
-
frame[key] = { '@id': operator.value };
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}); */
|
|
169
|
-
return {};
|
|
170
|
-
}
|
|
171
|
-
function triplesToNodes(triples) {
|
|
172
|
-
const nodeIdOrder = [];
|
|
173
|
-
const nodesById = triples.reduce((obj, triple) => {
|
|
174
|
-
const subject = toJsonLdSubject(triple.subject);
|
|
175
|
-
const isTypePredicate = triple.predicate.value === Vocabularies_1.RDF.type;
|
|
176
|
-
const predicate = isTypePredicate ? '@type' : triple.predicate.value;
|
|
177
|
-
const object = isTypePredicate ? triple.object.value : toJsonLdObject(triple.object);
|
|
178
|
-
if (obj[subject]) {
|
|
179
|
-
if (obj[subject][predicate]) {
|
|
180
|
-
if (Array.isArray(obj[subject][predicate])) {
|
|
181
|
-
obj[subject][predicate].push(object);
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
obj[subject][predicate] = [obj[subject][predicate], object];
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
obj[subject][predicate] = object;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
obj[subject] = {
|
|
193
|
-
'@id': subject,
|
|
194
|
-
[predicate]: object
|
|
195
|
-
};
|
|
196
|
-
if (!subject.startsWith(BLANK_NODE_PREFIX)) {
|
|
197
|
-
nodeIdOrder.push(subject);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return obj;
|
|
201
|
-
}, {});
|
|
202
|
-
return { nodesById, nodeIdOrder };
|
|
203
|
-
}
|
|
204
|
-
async function frameWithRelationsOrNonBlankNodes(nodesById, frame, relations, where, queriedType, orderedNodeIds, rdfTypes) {
|
|
205
|
-
if (!frame) {
|
|
206
|
-
const relationsFrame = relations ? relationsToFrame(relations) : {};
|
|
207
|
-
const whereFrame = where ? whereToFrame(where) : {};
|
|
208
|
-
frame = { ...relationsFrame, ...whereFrame };
|
|
209
|
-
const nodesValue = Object.values(nodesById);
|
|
210
|
-
/* // eslint-disable-next-line no-console
|
|
211
|
-
console.log('nodesValue', JSON.stringify(nodesValue, null, 2));
|
|
212
|
-
// eslint-disable-next-line no-console
|
|
213
|
-
console.log('whereFrame', JSON.stringify(whereFrame, null, 2));
|
|
214
|
-
// eslint-disable-next-line no-console
|
|
215
|
-
console.log('relationsFrame', JSON.stringify(relationsFrame, null, 2)); */
|
|
216
|
-
/* Add all the @types in the nodes to the frame */
|
|
217
|
-
const typeSet = new Set();
|
|
218
|
-
const hasTypeConstraint = whereFrame['@type'];
|
|
219
|
-
const hasIriTypeConstraint = where?.id;
|
|
220
|
-
if (Object.keys(frame).length === 0) {
|
|
221
|
-
// Only add all types when there's no where constraint (no filtering)
|
|
222
|
-
nodesValue.forEach((node) => {
|
|
223
|
-
const isBlankNode = node['@id']?.startsWith(BLANK_NODE_PREFIX);
|
|
224
|
-
if (isBlankNode) {
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
if (node['@type'] && frame && typeof frame === 'object') {
|
|
228
|
-
(0, Util_1.ensureArray)(node['@type']).forEach((type) => {
|
|
229
|
-
typeSet.add(type);
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
frame['@type'] ?? (frame['@type'] = []);
|
|
234
|
-
frame['@type'] = [...typeSet];
|
|
235
|
-
}
|
|
236
|
-
else if (hasTypeConstraint) {
|
|
237
|
-
// For type-based queries, include the constraint type and types from entities that matched the WHERE clause
|
|
238
|
-
const constraintType = hasTypeConstraint;
|
|
239
|
-
// Always include the queried/constraint type
|
|
240
|
-
typeSet.add(constraintType);
|
|
241
|
-
if (rdfTypes && Array.isArray(rdfTypes)) {
|
|
242
|
-
rdfTypes.forEach((rdfType) => {
|
|
243
|
-
typeSet.add(rdfType);
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
// If we have orderedNodeIds (entities that matched the WHERE clause), only include types from those
|
|
247
|
-
// This prevents over-matching related entities while still supporting subclass matching
|
|
248
|
-
if (orderedNodeIds && orderedNodeIds.length > 0) {
|
|
249
|
-
const orderedNodeIdSet = new Set(orderedNodeIds);
|
|
250
|
-
nodesValue.forEach((node) => {
|
|
251
|
-
const nodeId = node['@id'];
|
|
252
|
-
if (!nodeId || node['@id']?.startsWith(BLANK_NODE_PREFIX)) {
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
// Only include types from entities that matched the WHERE clause (in orderedNodeIds)
|
|
256
|
-
if (orderedNodeIdSet.has(nodeId) && node['@type'] && frame && typeof frame === 'object') {
|
|
257
|
-
const nodeTypes = (0, Util_1.ensureArray)(node['@type']);
|
|
258
|
-
nodeTypes.forEach((type) => {
|
|
259
|
-
if (type) {
|
|
260
|
-
typeSet.add(type);
|
|
261
|
-
}
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
// Fallback: if no orderedNodeIds, only add types from entities with the constraint type
|
|
268
|
-
nodesValue.forEach((node) => {
|
|
269
|
-
const isBlankNode = node['@id']?.startsWith(BLANK_NODE_PREFIX);
|
|
270
|
-
if (isBlankNode) {
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
if (node['@type'] && frame && typeof frame === 'object') {
|
|
274
|
-
const nodeTypes = (0, Util_1.ensureArray)(node['@type']);
|
|
275
|
-
if (nodeTypes.includes(constraintType)) {
|
|
276
|
-
nodeTypes.forEach((type) => {
|
|
277
|
-
typeSet.add(type);
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
frame['@type'] ?? (frame['@type'] = []);
|
|
284
|
-
frame['@type'] = [...typeSet];
|
|
285
|
-
// When we have orderedNodeIds, restrict root-level results to only those IDs
|
|
286
|
-
// This prevents related entities with the same type from appearing at the root level
|
|
287
|
-
// Only apply this constraint if we have non-blank node IDs, since blank nodes
|
|
288
|
-
// will be filtered out anyway and we need them during framing
|
|
289
|
-
if (orderedNodeIds && orderedNodeIds.length > 0) {
|
|
290
|
-
const nonBlankNodeIds = orderedNodeIds.filter((id) => !id.startsWith('_:'));
|
|
291
|
-
if (nonBlankNodeIds.length > 0) {
|
|
292
|
-
frame['@id'] = nonBlankNodeIds;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
else if (hasIriTypeConstraint && !frame['@id']) {
|
|
297
|
-
frame['@id'] = Object.keys(nodesById).map((nodeId) => {
|
|
298
|
-
if (!nodeId.startsWith(BLANK_NODE_PREFIX)) {
|
|
299
|
-
return nodeId;
|
|
300
|
-
}
|
|
301
|
-
return undefined;
|
|
302
|
-
}).filter(Boolean);
|
|
303
|
-
}
|
|
304
|
-
if (Object.keys(frame).length > 0) {
|
|
305
|
-
const results = await jsonld.frame({ '@graph': nodesValue }, frame);
|
|
306
|
-
if (Array.isArray(results['@graph'])) {
|
|
307
|
-
results['@graph'] = results['@graph'].filter((node) => !node['@id']?.startsWith(BLANK_NODE_PREFIX));
|
|
308
|
-
}
|
|
309
|
-
if (typeof frame === 'object' && '@context' in frame && Object.keys(frame['@context']).length > 0) {
|
|
310
|
-
let resultsList;
|
|
311
|
-
if (Array.isArray(results)) {
|
|
312
|
-
resultsList = results;
|
|
313
|
-
}
|
|
314
|
-
else if ('@graph' in results) {
|
|
315
|
-
resultsList = (0, Util_1.ensureArray)(results['@graph']);
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
const { '@context': unusedContext, ...entityResult } = results;
|
|
319
|
-
resultsList = [entityResult];
|
|
320
|
-
}
|
|
321
|
-
/* return {
|
|
322
|
-
'@graph': resultsList.filter((result): boolean =>
|
|
323
|
-
Object.keys((frame as NodeObject)['@context']!).some((relationField): boolean => relationField in result))
|
|
324
|
-
}; */
|
|
325
|
-
return resultsList;
|
|
326
|
-
}
|
|
327
|
-
return results;
|
|
328
|
-
}
|
|
329
|
-
const nonBlankNodes = Object.keys(nodesById).filter((nodeId) => !nodeId.startsWith(BLANK_NODE_PREFIX));
|
|
330
|
-
return await jsonld.frame({ '@graph': Object.values(nodesById) }, { '@id': nonBlankNodes });
|
|
331
|
-
}
|
|
332
|
-
return await jsonld.frame({ '@graph': Object.values(nodesById) }, frame);
|
|
333
|
-
}
|
|
334
|
-
function sortNodesByOrder(nodes, nodeIdOrder) {
|
|
335
|
-
return nodes.sort((aNode, bNode) => nodeIdOrder.indexOf(aNode['@id']) - nodeIdOrder.indexOf(bNode['@id']));
|
|
336
|
-
}
|
|
337
|
-
function sortGraphOfNodeObject(graphObject, nodeIdOrder) {
|
|
338
|
-
return {
|
|
339
|
-
...graphObject,
|
|
340
|
-
'@graph': sortNodesByOrder(graphObject['@graph'], nodeIdOrder)
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
async function triplesToJsonld(triples, skipFraming, relations, where, orderedNodeIds, rdfTypes) {
|
|
344
|
-
if (triples.length === 0) {
|
|
345
|
-
return [];
|
|
346
|
-
}
|
|
347
|
-
const { nodeIdOrder, nodesById } = triplesToNodes(triples);
|
|
348
|
-
if (skipFraming) {
|
|
349
|
-
return Object.values(nodesById);
|
|
350
|
-
}
|
|
351
|
-
// Extract the queried type from where clause for subclass handling
|
|
352
|
-
const queriedType = where?.type && typeof where.type === 'string' ? where.type : undefined;
|
|
353
|
-
const framed = await frameWithRelationsOrNonBlankNodes(nodesById, undefined, relations, where, queriedType, orderedNodeIds, rdfTypes);
|
|
354
|
-
if ('@graph' in framed) {
|
|
355
|
-
return sortNodesByOrder(framed['@graph'], orderedNodeIds ?? nodeIdOrder);
|
|
356
|
-
}
|
|
357
|
-
return framed;
|
|
358
|
-
}
|
|
359
|
-
exports.triplesToJsonld = triplesToJsonld;
|
|
360
|
-
async function triplesToJsonldWithFrame(triples, frame) {
|
|
361
|
-
const { nodeIdOrder, nodesById } = triplesToNodes(triples);
|
|
362
|
-
const framed = await frameWithRelationsOrNonBlankNodes(nodesById, frame);
|
|
363
|
-
if ('@graph' in framed) {
|
|
364
|
-
return sortGraphOfNodeObject(framed, nodeIdOrder);
|
|
365
|
-
}
|
|
366
|
-
const { '@context': context, ...framedWithoutContext } = framed;
|
|
367
|
-
const graphObject = {
|
|
368
|
-
'@graph': [framedWithoutContext]
|
|
369
|
-
};
|
|
370
|
-
if (context) {
|
|
371
|
-
graphObject['@context'] = context;
|
|
372
|
-
}
|
|
373
|
-
return graphObject;
|
|
374
|
-
}
|
|
375
|
-
exports.triplesToJsonldWithFrame = triplesToJsonldWithFrame;
|
|
376
|
-
function valueToLiteral(value, datatype) {
|
|
377
|
-
if (datatype) {
|
|
378
|
-
if (datatype === '@json' || datatype === Vocabularies_1.RDF.JSON) {
|
|
379
|
-
return data_model_1.default.literal(JSON.stringify(value), Vocabularies_1.RDF.JSON);
|
|
380
|
-
}
|
|
381
|
-
return data_model_1.default.literal(value.toString(), datatype);
|
|
382
|
-
}
|
|
383
|
-
if (typeof value === 'number') {
|
|
384
|
-
if (Number.isInteger(value)) {
|
|
385
|
-
return data_model_1.default.literal(value.toString(), Vocabularies_1.XSD.integer);
|
|
386
|
-
}
|
|
387
|
-
return data_model_1.default.literal(value.toString(), Vocabularies_1.XSD.decimal);
|
|
388
|
-
}
|
|
389
|
-
if (typeof value === 'boolean') {
|
|
390
|
-
return data_model_1.default.literal(value.toString(), Vocabularies_1.XSD.boolean);
|
|
391
|
-
}
|
|
392
|
-
if (typeof value === 'string' && value.startsWith('?') && value.length > 1) {
|
|
393
|
-
return data_model_1.default.variable(value.slice(1));
|
|
394
|
-
}
|
|
395
|
-
if (value instanceof Date) {
|
|
396
|
-
return data_model_1.default.literal(value.toISOString(), Vocabularies_1.XSD.dateTime);
|
|
397
|
-
}
|
|
398
|
-
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
399
|
-
return data_model_1.default.literal(value.toString());
|
|
400
|
-
}
|
|
401
|
-
exports.valueToLiteral = valueToLiteral;
|
|
402
|
-
//# sourceMappingURL=TripleUtil.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TripleUtil.js","sourceRoot":"","sources":["../../src/util/TripleUtil.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable multiline-comment-style */\n/* eslint-disable capitalized-comments */\n/* eslint-disable indent */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport DataFactory from '@rdfjs/data-model';\nimport type { Literal, Quad, Quad_Object, Quad_Subject, Variable } from '@rdfjs/types';\nimport type { ContextDefinition, GraphObject, NodeObject, ValueObject } from 'jsonld';\nimport * as jsonld from 'jsonld';\nimport type { Frame } from 'jsonld/jsonld-spec';\nimport { FindOperator } from '../storage/FindOperator';\nimport type { FindOptionsRelations, FindOptionsWhere } from '../storage/FindOptionsTypes';\nimport type { InverseRelationOperatorValue } from '../storage/operator/InverseRelation';\nimport type { JSONArray, JSONObject, OrArray } from './Types';\nimport { ensureArray } from './Util';\nimport { RDF, XSD } from './Vocabularies';\n\nconst BLANK_NODE_PREFIX = '_:';\n\nexport function toJSValueFromDataType(value: string, dataType: string): number | boolean | string {\n switch (dataType) {\n case XSD.int:\n case XSD.positiveInteger:\n case XSD.negativeInteger:\n case XSD.integer: {\n return Number.parseInt(value, 10);\n }\n case XSD.boolean: {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n return value;\n }\n case XSD.double:\n case XSD.decimal:\n case XSD.float: {\n return Number.parseFloat(value);\n }\n case RDF.JSON:\n return JSON.parse(value);\n default: {\n return value;\n }\n }\n}\n\nfunction toJsonLdObject(object: Quad_Object): NodeObject | ValueObject {\n if (object.termType === 'Literal') {\n if (object.language && object.language.length > 0) {\n return {\n '@value': object.value,\n '@language': object.language\n };\n }\n return {\n '@value': toJSValueFromDataType(object.value, object.datatype.value),\n '@type': object.datatype.value === RDF.JSON ? '@json' : object.datatype.value\n };\n }\n if (object.termType === 'BlankNode') {\n return { '@id': `_:${object.value}` };\n }\n return { '@id': object.value };\n}\n\nfunction toJsonLdSubject(object: Quad_Subject): string {\n if (object.termType === 'BlankNode') {\n return `_:${object.value}`;\n }\n return object.value;\n}\n\nfunction relationsToFrame(relations: FindOptionsRelations): NodeObject {\n return Object.entries(relations).reduce((obj: NodeObject, [ field, value ]): NodeObject => {\n const fieldFrame: Frame = {\n '@explicit': false\n };\n let contextAddition: ContextDefinition | undefined;\n if (typeof value === 'object' && value.type === 'operator') {\n const { resolvedName, relations: subRelations } = value.value as InverseRelationOperatorValue;\n contextAddition = { [resolvedName]: { '@reverse': field }};\n if (subRelations) {\n fieldFrame[resolvedName] = relationsToFrame(subRelations);\n } else {\n fieldFrame[resolvedName] = {\n \"@embed\": \"@always\"\n };\n }\n } else if (typeof value === 'boolean') {\n fieldFrame[field] = {\n \"@embed\": \"@always\"\n };\n } else {\n fieldFrame[field] = relationsToFrame(value as FindOptionsRelations);\n }\n if (contextAddition) {\n return {\n ...obj,\n '@context': {\n ...(obj['@context'] as ContextDefinition),\n ...contextAddition\n },\n ...fieldFrame\n };\n }\n return {\n ...obj,\n ...fieldFrame\n };\n }, {});\n}\n\nfunction whereToFrame(where: FindOptionsWhere): NodeObject {\n if (where.id && typeof where.id === 'string') {\n return { '@id': where.id };\n }\n if (where.id && FindOperator.isFindOperator(where.id)) {\n const operator = where.id as FindOperator<any, any>;\n if (operator.operator === 'in') {\n return { '@id': operator.value };\n }\n if (operator.operator === 'equal') {\n return { '@id': operator.value };\n }\n }\n if (where.type && typeof where.type === 'string') {\n return { '@type': where.type };\n }\n if (where.type && typeof where.type === 'object' && 'value' in where.type && typeof where.type.value === 'string') {\n return { '@type': where.type.value };\n }\n\n // Handle arbitrary property constraints\n /* const frame: NodeObject = {};\n Object.entries(where).forEach(([ key, value ]) => {\n if (key !== 'id' && key !== 'type') {\n if (typeof value === 'string') {\n frame[key] = { '@id': value };\n } else if (FindOperator.isFindOperator(value)) {\n const operator = value as FindOperator<any, any>;\n if (operator.operator === 'in') {\n frame[key] = { '@id': operator.value };\n }\n }\n }\n }); */\n\n return {};\n}\n\nfunction triplesToNodes(triples: Quad[]): {\n nodesById: Record<string, NodeObject>;\n nodeIdOrder: string[];\n} {\n const nodeIdOrder: string[] = [];\n const nodesById = triples.reduce((obj: Record<string, NodeObject>, triple): Record<string, NodeObject> => {\n const subject = toJsonLdSubject(triple.subject);\n const isTypePredicate = triple.predicate.value === RDF.type;\n const predicate = isTypePredicate ? '@type' : triple.predicate.value;\n const object = isTypePredicate ? triple.object.value : toJsonLdObject(triple.object);\n if (obj[subject]) {\n if (obj[subject][predicate]) {\n if (Array.isArray(obj[subject][predicate])) {\n (obj[subject][predicate]! as any[]).push(object);\n } else {\n obj[subject][predicate] = [ obj[subject][predicate]!, object ] as any;\n }\n } else {\n obj[subject][predicate] = object;\n }\n } else {\n obj[subject] = {\n '@id': subject,\n [predicate]: object\n };\n if (!subject.startsWith(BLANK_NODE_PREFIX)) {\n nodeIdOrder.push(subject);\n }\n }\n return obj;\n }, {});\n return { nodesById, nodeIdOrder };\n}\n\nasync function frameWithRelationsOrNonBlankNodes(\n nodesById: Record<string, NodeObject>,\n frame?: Frame,\n relations?: FindOptionsRelations,\n where?: FindOptionsWhere,\n queriedType?: string,\n orderedNodeIds?: string[],\n rdfTypes?: string[]\n): Promise<NodeObject> {\n if (!frame) {\n const relationsFrame = relations ? relationsToFrame(relations) : {};\n const whereFrame = where ? whereToFrame(where) : {};\n frame = { ...relationsFrame, ...whereFrame };\n const nodesValue = Object.values(nodesById);\n /* // eslint-disable-next-line no-console\n console.log('nodesValue', JSON.stringify(nodesValue, null, 2));\n // eslint-disable-next-line no-console\n console.log('whereFrame', JSON.stringify(whereFrame, null, 2));\n // eslint-disable-next-line no-console\n console.log('relationsFrame', JSON.stringify(relationsFrame, null, 2)); */\n /* Add all the @types in the nodes to the frame */\n const typeSet = new Set<string>();\n const hasTypeConstraint = whereFrame['@type'];\n const hasIriTypeConstraint = where?.id;\n\n if (Object.keys(frame).length === 0) {\n // Only add all types when there's no where constraint (no filtering)\n nodesValue.forEach((node: NodeObject): void => {\n const isBlankNode = node['@id']?.startsWith(BLANK_NODE_PREFIX);\n if (isBlankNode) {\n return;\n }\n if (node['@type'] && frame && typeof frame === 'object') {\n ensureArray(node['@type']).forEach((type: string): void => {\n typeSet.add(type);\n });\n }\n });\n frame['@type'] ??= [];\n frame['@type'] = [ ...typeSet ];\n } else if (hasTypeConstraint) {\n // For type-based queries, include the constraint type and types from entities that matched the WHERE clause\n const constraintType = hasTypeConstraint as string;\n\n // Always include the queried/constraint type\n typeSet.add(constraintType);\n if (rdfTypes && Array.isArray(rdfTypes)) {\n rdfTypes.forEach((rdfType: string): void => {\n typeSet.add(rdfType);\n });\n }\n\n // If we have orderedNodeIds (entities that matched the WHERE clause), only include types from those\n // This prevents over-matching related entities while still supporting subclass matching\n if (orderedNodeIds && orderedNodeIds.length > 0) {\n const orderedNodeIdSet = new Set(orderedNodeIds);\n nodesValue.forEach((node: NodeObject): void => {\n const nodeId = node['@id'];\n if (!nodeId || node['@id']?.startsWith(BLANK_NODE_PREFIX)) {\n return;\n }\n // Only include types from entities that matched the WHERE clause (in orderedNodeIds)\n if (orderedNodeIdSet.has(nodeId) && node['@type'] && frame && typeof frame === 'object') {\n const nodeTypes = ensureArray(node['@type']);\n nodeTypes.forEach((type: string | undefined): void => {\n if (type) {\n typeSet.add(type);\n }\n });\n }\n });\n } else {\n // Fallback: if no orderedNodeIds, only add types from entities with the constraint type\n nodesValue.forEach((node: NodeObject): void => {\n const isBlankNode = node['@id']?.startsWith(BLANK_NODE_PREFIX);\n if (isBlankNode) {\n return;\n }\n if (node['@type'] && frame && typeof frame === 'object') {\n const nodeTypes = ensureArray(node['@type']);\n if (nodeTypes.includes(constraintType)) {\n nodeTypes.forEach((type: string): void => {\n typeSet.add(type);\n });\n }\n }\n });\n }\n\n frame['@type'] ??= [];\n frame['@type'] = [ ...typeSet ];\n \n // When we have orderedNodeIds, restrict root-level results to only those IDs\n // This prevents related entities with the same type from appearing at the root level\n // Only apply this constraint if we have non-blank node IDs, since blank nodes\n // will be filtered out anyway and we need them during framing\n if (orderedNodeIds && orderedNodeIds.length > 0) {\n const nonBlankNodeIds = orderedNodeIds.filter((id: string): boolean => !id.startsWith('_:'));\n if (nonBlankNodeIds.length > 0) {\n frame['@id'] = nonBlankNodeIds as any;\n }\n }\n }\n else if (hasIriTypeConstraint && !frame['@id']) {\n frame['@id'] = Object.keys(nodesById).map((nodeId: string): string | undefined => {\n if (!nodeId.startsWith(BLANK_NODE_PREFIX)) {\n return nodeId;\n }\n return undefined;\n }).filter(Boolean) as any;\n }\n if (Object.keys(frame).length > 0) {\n const results = await jsonld.frame({ '@graph': nodesValue }, frame);\n if (Array.isArray(results['@graph'])) {\n results['@graph'] = results['@graph'].filter(\n (node: NodeObject): boolean => !node['@id']?.startsWith(BLANK_NODE_PREFIX)\n );\n }\n if (typeof frame === 'object' && '@context' in frame && Object.keys(frame['@context']!).length > 0) {\n let resultsList;\n if (Array.isArray(results)) {\n resultsList = results;\n } else if ('@graph' in results) {\n resultsList = ensureArray(results['@graph']);\n } else {\n const { '@context': unusedContext, ...entityResult } = results;\n resultsList = [ entityResult ];\n }\n /* return {\n '@graph': resultsList.filter((result): boolean =>\n Object.keys((frame as NodeObject)['@context']!).some((relationField): boolean => relationField in result))\n }; */\n return resultsList as NodeObject;\n }\n return results;\n }\n const nonBlankNodes = Object.keys(nodesById).filter(\n (nodeId: string): boolean => !nodeId.startsWith(BLANK_NODE_PREFIX)\n );\n return await jsonld.frame({ '@graph': Object.values(nodesById) }, { '@id': nonBlankNodes as any });\n }\n return await jsonld.frame({ '@graph': Object.values(nodesById) }, frame);\n}\n\nfunction sortNodesByOrder(nodes: NodeObject[], nodeIdOrder: string[]): NodeObject[] {\n return nodes.sort(\n (aNode: NodeObject, bNode: NodeObject): number =>\n nodeIdOrder.indexOf(aNode['@id']!) - nodeIdOrder.indexOf(bNode['@id']!)\n );\n}\n\nfunction sortGraphOfNodeObject(graphObject: GraphObject, nodeIdOrder: string[]): GraphObject {\n return {\n ...graphObject,\n '@graph': sortNodesByOrder(graphObject['@graph'] as NodeObject[], nodeIdOrder)\n };\n}\n\nexport async function triplesToJsonld(\n triples: Quad[],\n skipFraming?: boolean,\n relations?: FindOptionsRelations,\n where?: FindOptionsWhere,\n orderedNodeIds?: string[],\n rdfTypes?: string[]\n): Promise<OrArray<NodeObject>> {\n if (triples.length === 0) {\n return [];\n }\n const { nodeIdOrder, nodesById } = triplesToNodes(triples);\n if (skipFraming) {\n return Object.values(nodesById);\n }\n\n // Extract the queried type from where clause for subclass handling\n const queriedType = where?.type && typeof where.type === 'string' ? where.type : undefined;\n\n const framed = await frameWithRelationsOrNonBlankNodes(\n nodesById, undefined, relations, where, queriedType, orderedNodeIds, rdfTypes\n );\n if ('@graph' in framed) {\n return sortNodesByOrder(framed['@graph'] as NodeObject[], orderedNodeIds ?? nodeIdOrder);\n }\n return framed;\n}\n\nexport async function triplesToJsonldWithFrame(triples: Quad[], frame?: Frame): Promise<GraphObject> {\n const { nodeIdOrder, nodesById } = triplesToNodes(triples);\n const framed = await frameWithRelationsOrNonBlankNodes(nodesById, frame);\n if ('@graph' in framed) {\n return sortGraphOfNodeObject(framed as GraphObject, nodeIdOrder);\n }\n const { '@context': context, ...framedWithoutContext } = framed;\n const graphObject: GraphObject = {\n '@graph': [ framedWithoutContext as NodeObject ]\n };\n if (context) {\n graphObject['@context'] = context;\n }\n return graphObject;\n}\n\nexport function valueToLiteral(\n value: string | boolean | number | Date | JSONObject | JSONArray,\n datatype?: string\n): Literal | Variable {\n if (datatype) {\n if (datatype === '@json' || datatype === RDF.JSON) {\n return DataFactory.literal(JSON.stringify(value), RDF.JSON);\n }\n return DataFactory.literal((value as string | boolean | number).toString(), datatype);\n }\n if (typeof value === 'number') {\n if (Number.isInteger(value)) {\n return DataFactory.literal(value.toString(), XSD.integer);\n }\n return DataFactory.literal(value.toString(), XSD.decimal);\n }\n if (typeof value === 'boolean') {\n return DataFactory.literal(value.toString(), XSD.boolean);\n }\n if (typeof value === 'string' && value.startsWith('?') && value.length > 1) {\n return DataFactory.variable(value.slice(1));\n }\n if (value instanceof Date) {\n return DataFactory.literal(value.toISOString(), XSD.dateTime);\n }\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n return DataFactory.literal(value.toString());\n}\n"]}
|