@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
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export * from './storage/operator/LessThan';
|
|
|
22
22
|
export * from './storage/operator/LessThanOrEqual';
|
|
23
23
|
export * from './storage/operator/Not';
|
|
24
24
|
export * from './storage/operator/OneOrMorePath';
|
|
25
|
+
export * from './storage/operator/Or';
|
|
25
26
|
export * from './storage/operator/Sequence';
|
|
26
27
|
export * from './storage/operator/SequencePath';
|
|
27
28
|
export * from './storage/operator/ZeroOrMorePath';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,WAAW,IAAI,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrF,cAAc,eAAe,CAAC;AAE9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAE5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2EAA2E,CAAC;AAC1F,cAAc,2EAA2E,CAAC;AAE1F,cAAc,mDAAmD,CAAC;AAClE,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,WAAW,IAAI,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrF,cAAc,eAAe,CAAC;AAE9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAE5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2EAA2E,CAAC;AAC1F,cAAc,2EAA2E,CAAC;AAE1F,cAAc,mDAAmD,CAAC;AAClE,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -47,6 +47,7 @@ __exportStar(require("./storage/operator/LessThan"), exports);
|
|
|
47
47
|
__exportStar(require("./storage/operator/LessThanOrEqual"), exports);
|
|
48
48
|
__exportStar(require("./storage/operator/Not"), exports);
|
|
49
49
|
__exportStar(require("./storage/operator/OneOrMorePath"), exports);
|
|
50
|
+
__exportStar(require("./storage/operator/Or"), exports);
|
|
50
51
|
__exportStar(require("./storage/operator/Sequence"), exports);
|
|
51
52
|
__exportStar(require("./storage/operator/SequencePath"), exports);
|
|
52
53
|
__exportStar(require("./storage/operator/ZeroOrMorePath"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,UAAU;AACV,8CAA4B;AAC5B,2DAAwF;AAA/E,wHAAA,kBAAkB,OAAA;AAC3B,mDAAqF;AAA5E,uGAAA,WAAW,OAAY;AAAE,yGAAA,UAAU,OAAA;AAAE,wGAAA,SAAS,OAAA;AACvD,gDAA8B;AAC9B,gBAAgB;AAChB,+CAA6B;AAC7B,mDAAiC;AACjC,8CAA4B;AAC5B,UAAU;AACV,yDAAuC;AACvC,6DAA2C;AAC3C,yDAAuC;AACvC,8DAA4C;AAC5C,mBAAmB;AACnB,2DAAyC;AACzC,4DAA0C;AAC1C,iEAA+C;AAC/C,wEAAsD;AACtD,wDAAsC;AACtC,6DAA2C;AAC3C,iEAA+C;AAC/C,qEAAmD;AACnD,0EAAwD;AACxD,8DAA4C;AAC5C,qEAAmD;AACnD,yDAAuC;AACvC,mEAAiD;AACjD,8DAA4C;AAC5C,kEAAgD;AAChD,oEAAkD;AAClD,uEAAqD;AACrD,4GAA0F;AAC1F,4GAA0F;AAC1F,iBAAiB;AACjB,oFAAkE;AAClE,oFAAkE;AAClE,qFAAmE;AACnE,mFAAiE;AACjE,OAAO;AACP,oDAAkC;AAClC,+CAA6B;AAC7B,8CAA4B;AAC5B,6DAA2C","sourcesContent":["// Mapping\nexport * from './constants';\nexport { customCapabilities, type CustomCapabilityHandler } from './customCapabilities';\nexport { globalHooks as SklHooks, HookStages, HookTypes } from './hooks/globalHooks';\nexport * from './hooks/types';\n// Code Executor\nexport * from './JsExecutor';\nexport * from './mapping/Mapper';\nexport * from './SklEngine';\n// Storage\nexport * from './storage/FindOperator';\nexport * from './storage/FindOptionsTypes';\nexport * from './storage/operator/And';\nexport * from './storage/operator/Contains';\n// Storage/Operator\nexport * from './storage/operator/Equal';\nexport * from './storage/operator/Exists';\nexport * from './storage/operator/GreaterThan';\nexport * from './storage/operator/GreaterThanOrEqual';\nexport * from './storage/operator/In';\nexport * from './storage/operator/Inverse';\nexport * from './storage/operator/InversePath';\nexport * from './storage/operator/InverseRelation';\nexport * from './storage/operator/InverseRelationOrder';\nexport * from './storage/operator/LessThan';\nexport * from './storage/operator/LessThanOrEqual';\nexport * from './storage/operator/Not';\nexport * from './storage/operator/OneOrMorePath';\nexport * from './storage/operator/Sequence';\nexport * from './storage/operator/SequencePath';\nexport * from './storage/operator/ZeroOrMorePath';\nexport * from './storage/query-adapter/QueryAdapter';\nexport * from './storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor';\nexport * from './storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor';\n// Storage/Sparql\nexport * from './storage/query-adapter/sparql/SparqlQueryAdapter';\nexport * from './storage/query-adapter/sparql/SparqlQueryBuilder';\nexport * from './storage/query-adapter/sparql/SparqlUpdateBuilder';\nexport * from './storage/query-adapter/sparql/VariableGenerator';\n// Util\nexport * from './util/TripleUtil';\nexport * from './util/Types';\nexport * from './util/Util';\nexport * from './util/Vocabularies/helper';\n\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,UAAU;AACV,8CAA4B;AAC5B,2DAAwF;AAA/E,wHAAA,kBAAkB,OAAA;AAC3B,mDAAqF;AAA5E,uGAAA,WAAW,OAAY;AAAE,yGAAA,UAAU,OAAA;AAAE,wGAAA,SAAS,OAAA;AACvD,gDAA8B;AAC9B,gBAAgB;AAChB,+CAA6B;AAC7B,mDAAiC;AACjC,8CAA4B;AAC5B,UAAU;AACV,yDAAuC;AACvC,6DAA2C;AAC3C,yDAAuC;AACvC,8DAA4C;AAC5C,mBAAmB;AACnB,2DAAyC;AACzC,4DAA0C;AAC1C,iEAA+C;AAC/C,wEAAsD;AACtD,wDAAsC;AACtC,6DAA2C;AAC3C,iEAA+C;AAC/C,qEAAmD;AACnD,0EAAwD;AACxD,8DAA4C;AAC5C,qEAAmD;AACnD,yDAAuC;AACvC,mEAAiD;AACjD,wDAAsC;AACtC,8DAA4C;AAC5C,kEAAgD;AAChD,oEAAkD;AAClD,uEAAqD;AACrD,4GAA0F;AAC1F,4GAA0F;AAC1F,iBAAiB;AACjB,oFAAkE;AAClE,oFAAkE;AAClE,qFAAmE;AACnE,mFAAiE;AACjE,OAAO;AACP,oDAAkC;AAClC,+CAA6B;AAC7B,8CAA4B;AAC5B,6DAA2C","sourcesContent":["// Mapping\nexport * from './constants';\nexport { customCapabilities, type CustomCapabilityHandler } from './customCapabilities';\nexport { globalHooks as SklHooks, HookStages, HookTypes } from './hooks/globalHooks';\nexport * from './hooks/types';\n// Code Executor\nexport * from './JsExecutor';\nexport * from './mapping/Mapper';\nexport * from './SklEngine';\n// Storage\nexport * from './storage/FindOperator';\nexport * from './storage/FindOptionsTypes';\nexport * from './storage/operator/And';\nexport * from './storage/operator/Contains';\n// Storage/Operator\nexport * from './storage/operator/Equal';\nexport * from './storage/operator/Exists';\nexport * from './storage/operator/GreaterThan';\nexport * from './storage/operator/GreaterThanOrEqual';\nexport * from './storage/operator/In';\nexport * from './storage/operator/Inverse';\nexport * from './storage/operator/InversePath';\nexport * from './storage/operator/InverseRelation';\nexport * from './storage/operator/InverseRelationOrder';\nexport * from './storage/operator/LessThan';\nexport * from './storage/operator/LessThanOrEqual';\nexport * from './storage/operator/Not';\nexport * from './storage/operator/OneOrMorePath';\nexport * from './storage/operator/Or';\nexport * from './storage/operator/Sequence';\nexport * from './storage/operator/SequencePath';\nexport * from './storage/operator/ZeroOrMorePath';\nexport * from './storage/query-adapter/QueryAdapter';\nexport * from './storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor';\nexport * from './storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor';\n// Storage/Sparql\nexport * from './storage/query-adapter/sparql/SparqlQueryAdapter';\nexport * from './storage/query-adapter/sparql/SparqlQueryBuilder';\nexport * from './storage/query-adapter/sparql/SparqlUpdateBuilder';\nexport * from './storage/query-adapter/sparql/VariableGenerator';\n// Util\nexport * from './util/TripleUtil';\nexport * from './util/Types';\nexport * from './util/Util';\nexport * from './util/Vocabularies/helper';\n\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Variable } from 'rdf-data-factory';
|
|
2
|
-
export declare type FindOperatorType = 'in' | 'not' | 'and' | 'equal' | 'exists' | 'gt' | 'gte' | 'lt' | 'lte' | 'inverse' | 'inverseRelation' | 'inverseRelationOrder' | 'sequencePath' | 'zeroOrMorePath' | 'inversePath' | 'oneOrMorePath' | 'contains' | 'sequence';
|
|
2
|
+
export declare type FindOperatorType = 'in' | 'not' | 'and' | 'or' | 'equal' | 'exists' | 'gt' | 'gte' | 'lt' | 'lte' | 'inverse' | 'inverseRelation' | 'inverseRelationOrder' | 'sequencePath' | 'zeroOrMorePath' | 'inversePath' | 'oneOrMorePath' | 'contains' | 'sequence';
|
|
3
3
|
export interface FindOperatorArgs<T, TType> {
|
|
4
4
|
operator: TType;
|
|
5
5
|
value?: T | FindOperator<T, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindOperator.d.ts","sourceRoot":"","sources":["../../src/storage/FindOperator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,oBAAY,gBAAgB,GACxB,IAAI,GACJ,KAAK,GACL,KAAK,GACL,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,SAAS,GACT,iBAAiB,GACjB,sBAAsB,GACtB,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,KAAK;IACxC,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,YAAY,CAAC,CAAC,EAAE,KAAK,SAAS,gBAAgB;IACzD,SAAgB,IAAI,cAAc;IAClC,SAAgB,QAAQ,EAAE,KAAK,CAAC;IAChC,SAAgB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnC,SAAgB,KAAK,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,SAAgB,UAAU,CAAC,EAAE,OAAO,CAAC;gBAClB,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC;WAOrC,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;WAInC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO;CAQxE"}
|
|
1
|
+
{"version":3,"file":"FindOperator.d.ts","sourceRoot":"","sources":["../../src/storage/FindOperator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,oBAAY,gBAAgB,GACxB,IAAI,GACJ,KAAK,GACL,KAAK,GACL,IAAI,GACJ,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,SAAS,GACT,iBAAiB,GACjB,sBAAsB,GACtB,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,KAAK;IACxC,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBAAa,YAAY,CAAC,CAAC,EAAE,KAAK,SAAS,gBAAgB;IACzD,SAAgB,IAAI,cAAc;IAClC,SAAgB,QAAQ,EAAE,KAAK,CAAC;IAChC,SAAgB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnC,SAAgB,KAAK,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,SAAgB,UAAU,CAAC,EAAE,OAAO,CAAC;gBAClB,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC;WAOrC,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;WAInC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO;CAQxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindOperator.js","sourceRoot":"","sources":["../../src/storage/FindOperator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"FindOperator.js","sourceRoot":"","sources":["../../src/storage/FindOperator.ts"],"names":[],"mappings":";;;AA8BA,MAAa,YAAY;IAMvB,YAAmB,IAAgC;QALnC,SAAI,GAAG,UAAU,CAAC;QAMhC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,KAAU;QACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;IACnF,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,QAAgC;QAC3D,OAAO,CACL,QAAQ,CAAC,QAAQ,KAAK,aAAa;YACnC,QAAQ,CAAC,QAAQ,KAAK,gBAAgB;YACtC,QAAQ,CAAC,QAAQ,KAAK,cAAc;YACpC,QAAQ,CAAC,QAAQ,KAAK,gBAAgB,CACvC,CAAC;IACJ,CAAC;CACF;AAzBD,oCAyBC","sourcesContent":["import type { Variable } from 'rdf-data-factory';\n\nexport type FindOperatorType =\n | 'in'\n | 'not'\n | 'and'\n | 'or'\n | 'equal'\n | 'exists'\n | 'gt'\n | 'gte'\n | 'lt'\n | 'lte'\n | 'inverse'\n | 'inverseRelation'\n | 'inverseRelationOrder'\n | 'sequencePath'\n | 'zeroOrMorePath'\n | 'inversePath'\n | 'oneOrMorePath'\n | 'contains'\n | 'sequence';\n\nexport interface FindOperatorArgs<T, TType> {\n operator: TType;\n value?: T | FindOperator<T, any>;\n subject?: Variable;\n isOptional?: boolean;\n}\n\nexport class FindOperator<T, TType extends FindOperatorType> {\n public readonly type = 'operator';\n public readonly operator: TType;\n public readonly subject?: Variable;\n public readonly value?: T | FindOperator<T, any>;\n public readonly isOptional?: boolean;\n public constructor(args: FindOperatorArgs<T, TType>) {\n this.operator = args.operator;\n this.value = args.value;\n this.subject = args.subject;\n this.isOptional = args.isOptional;\n }\n\n public static isFindOperator(value: any): boolean {\n return typeof value === 'object' && 'type' in value && value.type === 'operator';\n }\n\n public static isPathOperator(operator: FindOperator<any, any>): boolean {\n return (\n operator.operator === 'inversePath' ||\n operator.operator === 'zeroOrMorePath' ||\n operator.operator === 'sequencePath' ||\n operator.operator === 'zeroOrMorePath'\n );\n }\n}\n"]}
|
|
@@ -47,7 +47,9 @@ export interface FindOptionsWhere {
|
|
|
47
47
|
type?: TypeFindOptionsWhereField;
|
|
48
48
|
id?: IdFindOptionsWhereField;
|
|
49
49
|
binds?: BindPattern[];
|
|
50
|
-
|
|
50
|
+
and?: FindOptionsWhere[];
|
|
51
|
+
or?: FindOptionsWhere[];
|
|
52
|
+
[k: string]: FindOptionsWhereField | BindPattern[] | FindOptionsWhere[] | undefined;
|
|
51
53
|
}
|
|
52
54
|
export interface SubQuery {
|
|
53
55
|
select: Variable[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindOptionsTypes.d.ts","sourceRoot":"","sources":["../../src/storage/FindOptionsTypes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FindOptionsTypes.d.ts","sourceRoot":"","sources":["../../src/storage/FindOptionsTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FindOptionsTypes.js","sourceRoot":"","sources":["../../src/storage/FindOptionsTypes.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { Expression, Variable } from 'sparqljs';\nimport type { OrArray, JSONArray, JSONObject } from '../util/Types';\nimport type { FindOperator } from './FindOperator';\nimport type { InverseRelationOperatorValue } from './operator/InverseRelation';\nimport type { InverseRelationOrderValue } from './operator/InverseRelationOrder';\n\nexport type FindOptionsSelect = string[] | {[key: string]: boolean | FindOptionsSelect };\n\nexport interface FindOneOptions {\n select?: FindOptionsSelect;\n where?: FindOptionsWhere;\n relations?: FindOptionsRelations;\n order?: FindOptionsOrder;\n skipFraming?: boolean;\n group?: Variable;\n entitySelectVariable?: Variable;\n}\n\nexport type FindOptionsRelationsValue =\n | boolean\n | FindOptionsRelations\n | FindOperator<InverseRelationOperatorValue, 'inverseRelation'>;\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\nexport type FindOptionsRelations = {\n [k: string]: FindOptionsRelationsValue;\n};\n\nexport type FindOptionsOrderValue = 'ASC' | 'DESC' | 'asc' | 'desc' | 1 | -1;\n\nexport type FindOptionsOrder = Record<\nstring,\nFindOptionsOrderValue | FindOperator<InverseRelationOrderValue, 'inverseRelationOrder'>\n>;\n\nexport type FieldPrimitiveValue = boolean | number | string | Date;\n\nexport type JsonValueObject = {\n '@value': FieldPrimitiveValue | JSONObject | JSONArray;\n '@type': '@json';\n};\n\nexport type LanguageValueObject = {\n '@value': string;\n '@language': string;\n '@direction': string;\n};\n\nexport type NonJsonValueObject = {\n '@value': FieldPrimitiveValue;\n '@type': string;\n};\n\nexport type ValueWhereFieldObject = JsonValueObject | LanguageValueObject | NonJsonValueObject;\n\nexport type FindOptionsWhereField =\n | OrArray<FieldPrimitiveValue>\n | ValueWhereFieldObject\n | FindOptionsWhere\n | OrArray<FindOperator<any, any>>\n | BindPattern[];\n\nexport type IdFindOptionsWhereField = string | FindOperator<any, 'in' | 'not' | 'equal' | 'inversePath' | 'contains'>;\n\nexport type TypeFindOptionsWhereField =\n | string\n | FindOperator<string | string[] | FindOptionsWhere, 'in' | 'not' | 'equal' | 'inverse' | 'contains'>;\n\nexport interface BindPattern {\n expression: Expression;\n variable: Variable;\n}\n\nexport interface FindOptionsWhere {\n type?: TypeFindOptionsWhereField;\n id?: IdFindOptionsWhereField;\n binds?: BindPattern[];\n [k: string]: FindOptionsWhereField | BindPattern[] | undefined;\n}\n\n// Add these new types\nexport interface SubQuery {\n select: Variable[];\n where: FindOptionsWhere;\n groupBy?: string[];\n having?: FindOptionsWhere;\n}\n\nexport interface FindAllOptions extends FindOneOptions {\n offset?: number;\n limit?: number;\n skipHook?: boolean;\n subQueries?: SubQuery[];\n}\n\nexport interface FindExistsOptions {\n where?: FindOptionsWhere;\n relations?: FindOptionsRelations;\n}\n\nexport interface FindCountOptions {\n where?: FindOptionsWhere;\n relations?: FindOptionsRelations;\n order?: FindOptionsOrder;\n offset?: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FindOptionsTypes.js","sourceRoot":"","sources":["../../src/storage/FindOptionsTypes.ts"],"names":[],"mappings":"","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { Expression, Variable } from 'sparqljs';\nimport type { OrArray, JSONArray, JSONObject } from '../util/Types';\nimport type { FindOperator } from './FindOperator';\nimport type { InverseRelationOperatorValue } from './operator/InverseRelation';\nimport type { InverseRelationOrderValue } from './operator/InverseRelationOrder';\n\nexport type FindOptionsSelect = string[] | {[key: string]: boolean | FindOptionsSelect };\n\nexport interface FindOneOptions {\n select?: FindOptionsSelect;\n where?: FindOptionsWhere;\n relations?: FindOptionsRelations;\n order?: FindOptionsOrder;\n skipFraming?: boolean;\n group?: Variable;\n entitySelectVariable?: Variable;\n}\n\nexport type FindOptionsRelationsValue =\n | boolean\n | FindOptionsRelations\n | FindOperator<InverseRelationOperatorValue, 'inverseRelation'>;\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\nexport type FindOptionsRelations = {\n [k: string]: FindOptionsRelationsValue;\n};\n\nexport type FindOptionsOrderValue = 'ASC' | 'DESC' | 'asc' | 'desc' | 1 | -1;\n\nexport type FindOptionsOrder = Record<\nstring,\nFindOptionsOrderValue | FindOperator<InverseRelationOrderValue, 'inverseRelationOrder'>\n>;\n\nexport type FieldPrimitiveValue = boolean | number | string | Date;\n\nexport type JsonValueObject = {\n '@value': FieldPrimitiveValue | JSONObject | JSONArray;\n '@type': '@json';\n};\n\nexport type LanguageValueObject = {\n '@value': string;\n '@language': string;\n '@direction': string;\n};\n\nexport type NonJsonValueObject = {\n '@value': FieldPrimitiveValue;\n '@type': string;\n};\n\nexport type ValueWhereFieldObject = JsonValueObject | LanguageValueObject | NonJsonValueObject;\n\nexport type FindOptionsWhereField =\n | OrArray<FieldPrimitiveValue>\n | ValueWhereFieldObject\n | FindOptionsWhere\n | OrArray<FindOperator<any, any>>\n | BindPattern[];\n\nexport type IdFindOptionsWhereField = string | FindOperator<any, 'in' | 'not' | 'equal' | 'inversePath' | 'contains'>;\n\nexport type TypeFindOptionsWhereField =\n | string\n | FindOperator<string | string[] | FindOptionsWhere, 'in' | 'not' | 'equal' | 'inverse' | 'contains'>;\n\nexport interface BindPattern {\n expression: Expression;\n variable: Variable;\n}\n\nexport interface FindOptionsWhere {\n type?: TypeFindOptionsWhereField;\n id?: IdFindOptionsWhereField;\n binds?: BindPattern[];\n and?: FindOptionsWhere[];\n or?: FindOptionsWhere[];\n [k: string]: FindOptionsWhereField | BindPattern[] | FindOptionsWhere[] | undefined;\n}\n\n// Add these new types\nexport interface SubQuery {\n select: Variable[];\n where: FindOptionsWhere;\n groupBy?: string[];\n having?: FindOptionsWhere;\n}\n\nexport interface FindAllOptions extends FindOneOptions {\n offset?: number;\n limit?: number;\n skipHook?: boolean;\n subQueries?: SubQuery[];\n}\n\nexport interface FindExistsOptions {\n where?: FindOptionsWhere;\n relations?: FindOptionsRelations;\n}\n\nexport interface FindCountOptions {\n where?: FindOptionsWhere;\n relations?: FindOptionsRelations;\n order?: FindOptionsOrder;\n offset?: number;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Or.d.ts","sourceRoot":"","sources":["../../../src/storage/operator/Or.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAKhH"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Or = void 0;
|
|
4
|
+
const FindOperator_1 = require("../FindOperator");
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
6
|
+
function Or(value) {
|
|
7
|
+
return new FindOperator_1.FindOperator({
|
|
8
|
+
operator: 'or',
|
|
9
|
+
value
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
exports.Or = Or;
|
|
13
|
+
//# sourceMappingURL=Or.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Or.js","sourceRoot":"","sources":["../../../src/storage/operator/Or.ts"],"names":[],"mappings":";;;AACA,kDAA+C;AAE/C,gEAAgE;AAChE,SAAgB,EAAE,CAA2D,KAAU;IACrF,OAAO,IAAI,2BAAY,CAAC;QACtB,QAAQ,EAAE,IAAI;QACd,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AALD,gBAKC","sourcesContent":["import type { ValueObject } from 'jsonld';\nimport { FindOperator } from '../FindOperator';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function Or<T extends number | Date | string | boolean | ValueObject>(value: T[]): FindOperator<T[], 'or'> {\n return new FindOperator({\n operator: 'or',\n value\n });\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlQueryAdapter.d.ts","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"SparqlQueryAdapter.d.ts","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA2BhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EACV,cAAc,EAAE,gBAAgB,EAChC,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EACpD,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAe,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAI7E;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEb,OAAO,EAAE,yBAAyB;IAexC,eAAe,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAStE,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ5E,gBAAgB,CAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAIH,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAetD,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIvD,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAUnD,eAAe;YAgBf,qBAAqB;YAyIrB,wBAAwB;IAiBzB,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrD,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpD,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAejD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU3C,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAsD1D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASjE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASpC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACxC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAOzC"}
|
|
@@ -6,6 +6,7 @@ const logger_1 = require("../../../logger");
|
|
|
6
6
|
const PerformanceLogger_1 = require("../../../util/PerformanceLogger");
|
|
7
7
|
const SparqlUtil_1 = require("../../../util/SparqlUtil");
|
|
8
8
|
const TripleUtil_1 = require("../../../util/TripleUtil");
|
|
9
|
+
const Util_1 = require("../../../util/Util");
|
|
9
10
|
const InMemorySparqlQueryExecutor_1 = require("./query-executor/InMemorySparqlQueryExecutor");
|
|
10
11
|
const SparqlEndpointQueryExecutor_1 = require("./query-executor/SparqlEndpointQueryExecutor");
|
|
11
12
|
const SparqlQueryBuilder_1 = require("./SparqlQueryBuilder");
|
|
@@ -99,10 +100,33 @@ class SparqlQueryAdapter {
|
|
|
99
100
|
}
|
|
100
101
|
]
|
|
101
102
|
});
|
|
103
|
+
const entitySelectVariable = options?.entitySelectVariable ?? SparqlUtil_1.entityVariable;
|
|
104
|
+
const groupBy = (0, Util_1.ensureArray)(selectQueryData?.group ?? options?.group ?? []);
|
|
105
|
+
groupBy.push(entitySelectVariable);
|
|
106
|
+
// All non-aggregated variables in SELECT must be in GROUP BY
|
|
107
|
+
for (const selectVariable of selectQueryData.selectVariables ?? []) {
|
|
108
|
+
if (!('aggregation' in selectVariable.expression) && selectVariable.expression.constructor.name === 'Variable') {
|
|
109
|
+
groupBy.push(selectVariable.expression);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
102
112
|
const entitySelectQuery = selectQueryData.where.length > 0
|
|
103
113
|
? (0, SparqlUtil_1.createSparqlSelectQuery)([
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
entitySelectVariable,
|
|
115
|
+
// (GROUP_CONCAT(DISTINCT str(?rdfType); SEPARATOR = " | ") AS ?rdfTypes)
|
|
116
|
+
{
|
|
117
|
+
expression: {
|
|
118
|
+
type: "aggregate",
|
|
119
|
+
aggregation: "group_concat",
|
|
120
|
+
separator: " | ",
|
|
121
|
+
distinct: true,
|
|
122
|
+
expression: {
|
|
123
|
+
type: "operation",
|
|
124
|
+
operator: "STR",
|
|
125
|
+
args: [SparqlUtil_1.rdfTypeVariable]
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
variable: SparqlUtil_1.rdfTypesVariable
|
|
129
|
+
},
|
|
106
130
|
...selectQueryData.selectVariables?.map(({ variable, expression }) => {
|
|
107
131
|
if (!expression)
|
|
108
132
|
return variable;
|
|
@@ -111,7 +135,7 @@ class SparqlQueryAdapter {
|
|
|
111
135
|
expression
|
|
112
136
|
};
|
|
113
137
|
}) ?? []
|
|
114
|
-
], wherePatterns, selectQueryData.orders,
|
|
138
|
+
], wherePatterns, selectQueryData.orders, groupBy, options?.limit, options?.offset)
|
|
115
139
|
: undefined;
|
|
116
140
|
let entityOrder;
|
|
117
141
|
/* If relations are present add them to where */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlQueryAdapter.js","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable capitalized-comments */\n \n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable indent */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { OrArray } from '@comake/rmlmapper-js';\nimport type { GraphObject, NodeObject } from 'jsonld';\nimport type { Frame } from 'jsonld/jsonld-spec';\nimport type {\n ConstructQuery,\n Pattern,\n Triple\n} from 'sparqljs';\nimport { Logger } from '../../../logger';\nimport { PerformanceLogger } from '../../../util/PerformanceLogger';\nimport {\n createSparqlBasicGraphPattern, createSparqlCountSelectQuery, createSparqlGraphPattern,\n createSparqlSelectGroup,\n createSparqlSelectQuery,\n createValuesPatternsForVariables,\n creteSparqlAskQuery, entityGraphTriple, entityVariable, getEntityVariableValuesFromVariables,\n getRdfTypeVariableValuesFromVariables,\n groupSelectQueryResultsByKey,\n rdfTypeNamedNode,\n rdfTypeVariable,\n selectQueryResultsAsJSValues\n} from '../../../util/SparqlUtil';\nimport {\n triplesToJsonld,\n triplesToJsonldWithFrame\n} from '../../../util/TripleUtil';\nimport type { Entity } from '../../../util/Types';\nimport type {\n FindAllOptions, FindCountOptions,\n FindExistsOptions, FindOneOptions, FindOptionsWhere\n} from '../../FindOptionsTypes';\nimport type { GroupByOptions, GroupByResponse, GroupResult } from '../../GroupOptionTypes';\nimport type { QueryAdapter, RawQueryResult } from '../QueryAdapter';\nimport { InMemorySparqlQueryExecutor } from './query-executor/InMemorySparqlQueryExecutor';\nimport { SparqlEndpointQueryExecutor } from './query-executor/SparqlEndpointQueryExecutor';\nimport type { QueryExecutor } from './query-executor/SparqlQueryExecutor';\nimport type { SparqlQueryAdapterOptions } from './SparqlQueryAdapterOptions';\nimport { SparqlQueryBuilder } from './SparqlQueryBuilder';\nimport { SparqlUpdateBuilder } from './SparqlUpdateBuilder';\n\n/**\n * A {@link QueryAdapter} that stores data in a database through a sparql endpoint.\n */\nexport class SparqlQueryAdapter implements QueryAdapter {\n protected readonly queryExecutor: QueryExecutor;\n private readonly setTimestamps: boolean;\n private readonly logger: Logger;\n\n public constructor(options: SparqlQueryAdapterOptions) {\n this.setTimestamps = options.setTimestamps ?? false;\n switch (options.type) {\n case 'memory':\n this.queryExecutor = new InMemorySparqlQueryExecutor();\n break;\n case 'sparql':\n this.queryExecutor = new SparqlEndpointQueryExecutor(options);\n break;\n default:\n throw new Error('No schema source found in setSchema args.');\n }\n this.logger = Logger.getInstance();\n }\n\n public async executeRawQuery<T extends RawQueryResult>(query: string): Promise<T[]> {\n const response =\n await this.queryExecutor.executeSparqlSelectAndGetDataRaw(query);\n if (response.length === 0) {\n return [] as T[];\n }\n return selectQueryResultsAsJSValues<T>(response);\n }\n\n public async executeRawConstructQuery(query: string, frame?: Frame): Promise<GraphObject> {\n const response = await this.queryExecutor.executeSparqlConstructAndGetDataRaw(query);\n if (response.length === 0) {\n return { '@graph': []};\n }\n return await triplesToJsonldWithFrame(response, frame);\n }\n\n public async executeRawUpdate(\n query: string\n ): Promise<void> {\n await this.queryExecutor.executeRawSparqlUpdate(query);\n }\n\n public async find(options?: FindOneOptions): Promise<Entity | null> {\n return PerformanceLogger.withSpan('Adapter.find', async() => {\n const jsonld = await this.findAllAsJsonLd({ ...options, limit: 1 });\n if (Array.isArray(jsonld) && !options?.skipFraming) {\n if (jsonld.length === 0) {\n return null;\n }\n if (jsonld.length === 1) {\n return jsonld[0] as Entity;\n }\n }\n return jsonld as Entity;\n }, { options });\n }\n\n public async findBy(where: FindOptionsWhere): Promise<Entity | null> {\n return PerformanceLogger.withSpan('Adapter.findBy', async() => this.find({ where }), { where });\n }\n\n public async findAll(options?: FindAllOptions): Promise<Entity[]> {\n return PerformanceLogger.withSpan('Adapter.findAll', async() => {\n const jsonld = await this.findAllAsJsonLd(options);\n if (Array.isArray(jsonld)) {\n return jsonld as Entity[];\n }\n return [ jsonld ] as Entity[];\n }, { options });\n }\n\n private async findAllAsJsonLd(options?: FindAllOptions): Promise<OrArray<NodeObject>> {\n const queryBuilder = new SparqlQueryBuilder();\n const { where, selectionTriples, entityOrder, rdfTypes } = await this.buildFindAllQueryData(queryBuilder, options);\n if (entityOrder && entityOrder.length === 0) {\n return [];\n }\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const query = queryBuilder.buildConstructFromEntitySelectQuery(\n where,\n selectionTriples,\n options?.select,\n queryData.selectVariables\n );\n return await this.executeEntitySelectQuery(query, options, entityOrder, rdfTypes);\n }\n\n private async buildFindAllQueryData(\n queryBuilder: SparqlQueryBuilder,\n options?: FindAllOptions\n ): Promise<{ where: Pattern[]; selectionTriples: Triple[]; entityOrder?: string[], rdfTypes?: string[] }> {\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const selectQueryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, {\n ...options,\n relations: undefined\n });\n let rdfTypes: string[] | undefined;\n const wherePatterns: Pattern[] = [ ...selectQueryData.where, ...selectQueryData.graphWhere ];\n wherePatterns.push({\n type: 'bgp',\n triples: [\n {\n subject: entityVariable,\n predicate: rdfTypeNamedNode,\n object: rdfTypeVariable\n }\n ]\n });\n const entitySelectQuery = selectQueryData.where.length > 0\n ? createSparqlSelectQuery(\n [\n options?.entitySelectVariable ?? entityVariable,\n rdfTypeVariable,\n ...selectQueryData.selectVariables?.map(({ variable, expression }) => {\n if (!expression) return variable;\n return {\n variable,\n expression\n };\n }) ?? []\n ],\n wherePatterns,\n selectQueryData.orders,\n selectQueryData.group ?? options?.group,\n options?.limit,\n options?.offset\n )\n : undefined;\n let entityOrder: string[] | undefined;\n /* If relations are present add them to where */\n if ((queryData?.relationsQueryData?.unionPatterns ?? []).length > 0) {\n queryData?.relationsQueryData?.unionPatterns.push(\n createSparqlGraphPattern(entityVariable, [ createSparqlBasicGraphPattern([ entityGraphTriple ]) ])\n );\n }\n if (queryData.orders.length > 0 && options?.limit !== 1 && entitySelectQuery) {\n const entitySelectResponse =\n await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const valuesByVariable = groupSelectQueryResultsByKey(entitySelectResponse);\n entityOrder = getEntityVariableValuesFromVariables(valuesByVariable);\n if (entityOrder.length === 0) {\n return {\n where: queryData.where,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder: []\n };\n }\n const variableValueFilters = createValuesPatternsForVariables({\n [entityVariable.value]: valuesByVariable[entityVariable.value]\n });\n queryData.graphWhere = [ ...variableValueFilters, ...queryData.graphWhere ];\n } else if (entitySelectQuery) {\n // We need entity IDs for framing when:\n // 1. There are relations (to distinguish root entities from related entities)\n // 2. There's a type constraint (to handle subclass matching where SPARQL finds subclasses but JSON-LD needs exact types)\n const hasRelations = (queryData?.relationsQueryData?.unionPatterns ?? []).length > 0;\n const hasTypeConstraint = options?.where?.type !== undefined;\n\n if ((hasRelations || hasTypeConstraint) && queryData.orders.length > 0) {\n const entitySelectResponse =\n await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const valuesByVariable = groupSelectQueryResultsByKey(entitySelectResponse);\n entityOrder = queryData.orders.length > 0 ? getEntityVariableValuesFromVariables(valuesByVariable) : [];\n if (entityOrder.length === 0) {\n return {\n where: queryData.where,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder: []\n };\n }\n }\n else if (hasRelations || hasTypeConstraint) {\n const entitySelectResponse = await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const groupedResults = groupSelectQueryResultsByKey(entitySelectResponse);\n const valuesByVariable = getRdfTypeVariableValuesFromVariables(groupedResults);\n rdfTypes = [...new Set(valuesByVariable)];\n // Also get entity IDs for framing to distinguish root entities from related ones\n // entityOrder = getEntityVariableValuesFromVariables(groupedResults);\n // if (entityOrder.length === 0) {\n // return {\n // where: queryData.where,\n // selectionTriples: queryData.graphSelectionTriples,\n // entityOrder: [],\n // rdfTypes\n // };\n // }\n }\n\n // Always add the select group query to the CONSTRUCT\n const entitySelectGroupQuery = createSparqlSelectGroup([ entitySelectQuery ]);\n queryData.graphWhere.unshift(entitySelectGroupQuery);\n // queryData.graphWhere = [ ...queryData.where, ...queryData.graphWhere ];\n }\n return {\n where: queryData.graphWhere,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder,\n rdfTypes\n };\n }\n\n private async executeEntitySelectQuery(\n query: ConstructQuery,\n options?: FindAllOptions,\n entityOrder?: string[],\n rdfTypes?: string[]\n ): Promise<OrArray<NodeObject>> {\n const responseTriples = await this.queryExecutor.executeSparqlSelectAndGetData(query);\n return await triplesToJsonld(\n responseTriples,\n options?.skipFraming,\n options?.relations,\n options?.where,\n entityOrder,\n rdfTypes\n );\n }\n\n public async findAllBy(where: FindOptionsWhere): Promise<Entity[]> {\n return PerformanceLogger.withSpan('Adapter.findAllBy', async() => this.findAll({ where }), { where });\n }\n\n public async exists(options: FindExistsOptions): Promise<boolean> {\n return PerformanceLogger.withSpan('Adapter.exists', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const values = queryData.graphWhere.filter((pattern): boolean => pattern.type === 'values');\n const query = creteSparqlAskQuery([ ...values, ...queryData.where ]);\n return await this.queryExecutor.executeAskQueryAndGetResponse(query);\n }, { options });\n }\n\n public async count(options: FindCountOptions): Promise<number> {\n return PerformanceLogger.withSpan('Adapter.count', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const values = queryData.graphWhere.filter((pattern): boolean => pattern.type === 'values');\n const query = createSparqlCountSelectQuery(\n entityVariable,\n [ ...values, ...queryData.where ],\n queryData.orders,\n options?.offset\n );\n return await this.queryExecutor.executeSelectCountAndGetResponse(query);\n }, { options });\n }\n\n public async save(entity: Entity): Promise<Entity>;\n public async save(entities: Entity[]): Promise<Entity[]>;\n public async save(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpan('Adapter.save', async() => {\n const queryBuilder = new SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });\n const query = queryBuilder.buildUpdate(entityOrEntities);\n await this.queryExecutor.executeSparqlUpdate(query);\n return entityOrEntities;\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async groupBy(options: GroupByOptions): Promise<GroupByResponse> {\n return PerformanceLogger.withSpan('Adapter.groupBy', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const { query: selectQuery, variableMapping } = await queryBuilder.buildGroupByQuery(options);\n const results = await this.queryExecutor.executeSparqlSelectAndGetData(\n selectQuery\n );\n\n // Create reverse mapping from path to variable name\n const reverseMapping = Object.entries(variableMapping).reduce<Record<string, string>>((acc, [ varName, path ]) => {\n acc[path] = varName;\n return acc;\n }, {});\n\n // Transform results\n const groupResults: GroupResult[] = results.map(result => {\n const group: Record<string, string | number> = {};\n\n options.groupBy?.forEach(path => {\n const varName = reverseMapping[path];\n if (!varName) {\n throw new Error(`No variable mapping found for path: ${path}`);\n }\n const { value } = result[varName];\n // Try to convert to number if possible\n group[path] = Number.isNaN(Number(value)) ? value : Number(value);\n });\n\n if (options.dateGrouping) {\n const dateGroupVarName = reverseMapping.dateGroup;\n group.dateGroup = result[dateGroupVarName].value;\n }\n\n const countVarName = reverseMapping.count;\n const entityIdsVarName = reverseMapping.entityIds;\n\n return {\n group,\n count: Number.parseInt(result[countVarName].value, 10),\n entityIds: result[entityIdsVarName].value.split(' ')\n };\n });\n\n return {\n results: groupResults,\n meta: {\n totalCount: groupResults.reduce((sum, curr) => sum + curr.count, 0),\n dateRange: options.dateRange,\n groupings: options.groupBy || []\n }\n };\n }, { options });\n }\n\n public async update(id: string, attributes: Partial<Entity>): Promise<void>;\n public async update(ids: string[], attributes: Partial<Entity>): Promise<void>;\n public async update(idOrIds: string | string[], attributes: Partial<Entity>): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.update', async() => {\n const queryBuilder = new SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });\n const query = queryBuilder.buildPartialUpdate(idOrIds, attributes);\n await this.queryExecutor.executeSparqlUpdate(query);\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async delete(id: string): Promise<void>;\n public async delete(ids: string[]): Promise<void>;\n public async delete(idOrIds: string | string[]): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.delete', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDeleteById(idOrIds);\n await this.queryExecutor.executeSparqlUpdate(query);\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async destroy(entity: Entity): Promise<Entity>;\n public async destroy(entities: Entity[]): Promise<Entity[]>;\n public async destroy(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpan('Adapter.destroy', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDelete(entityOrEntities);\n await this.queryExecutor.executeSparqlUpdate(query);\n return entityOrEntities;\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async destroyAll(): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.destroyAll', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDeleteAll();\n await this.queryExecutor.executeSparqlUpdate(query);\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SparqlQueryAdapter.js","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable capitalized-comments */\n \n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable indent */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport type { OrArray } from '@comake/rmlmapper-js';\nimport type { GraphObject, NodeObject } from 'jsonld';\nimport type { Frame } from 'jsonld/jsonld-spec';\nimport type {\n AggregateExpression,\n ConstructQuery,\n Pattern,\n Triple,\n Variable\n} from 'sparqljs';\nimport { Logger } from '../../../logger';\nimport { PerformanceLogger } from '../../../util/PerformanceLogger';\nimport {\n createSparqlBasicGraphPattern, createSparqlCountSelectQuery, createSparqlGraphPattern,\n createSparqlSelectGroup,\n createSparqlSelectQuery,\n createValuesPatternsForVariables,\n creteSparqlAskQuery, entityGraphTriple, entityVariable, getEntityVariableValuesFromVariables,\n getRdfTypeVariableValuesFromVariables,\n groupSelectQueryResultsByKey,\n rdfTypeNamedNode,\n rdfTypesVariable,\n rdfTypeVariable,\n selectQueryResultsAsJSValues\n} from '../../../util/SparqlUtil';\nimport {\n triplesToJsonld,\n triplesToJsonldWithFrame\n} from '../../../util/TripleUtil';\nimport type { Entity } from '../../../util/Types';\nimport { ensureArray } from '../../../util/Util';\nimport type {\n FindAllOptions, FindCountOptions,\n FindExistsOptions, FindOneOptions, FindOptionsWhere\n} from '../../FindOptionsTypes';\nimport type { GroupByOptions, GroupByResponse, GroupResult } from '../../GroupOptionTypes';\nimport type { QueryAdapter, RawQueryResult } from '../QueryAdapter';\nimport { InMemorySparqlQueryExecutor } from './query-executor/InMemorySparqlQueryExecutor';\nimport { SparqlEndpointQueryExecutor } from './query-executor/SparqlEndpointQueryExecutor';\nimport type { QueryExecutor } from './query-executor/SparqlQueryExecutor';\nimport type { SparqlQueryAdapterOptions } from './SparqlQueryAdapterOptions';\nimport { SparqlQueryBuilder } from './SparqlQueryBuilder';\nimport { SparqlUpdateBuilder } from './SparqlUpdateBuilder';\n\n/**\n * A {@link QueryAdapter} that stores data in a database through a sparql endpoint.\n */\nexport class SparqlQueryAdapter implements QueryAdapter {\n protected readonly queryExecutor: QueryExecutor;\n private readonly setTimestamps: boolean;\n private readonly logger: Logger;\n\n public constructor(options: SparqlQueryAdapterOptions) {\n this.setTimestamps = options.setTimestamps ?? false;\n switch (options.type) {\n case 'memory':\n this.queryExecutor = new InMemorySparqlQueryExecutor();\n break;\n case 'sparql':\n this.queryExecutor = new SparqlEndpointQueryExecutor(options);\n break;\n default:\n throw new Error('No schema source found in setSchema args.');\n }\n this.logger = Logger.getInstance();\n }\n\n public async executeRawQuery<T extends RawQueryResult>(query: string): Promise<T[]> {\n const response =\n await this.queryExecutor.executeSparqlSelectAndGetDataRaw(query);\n if (response.length === 0) {\n return [] as T[];\n }\n return selectQueryResultsAsJSValues<T>(response);\n }\n\n public async executeRawConstructQuery(query: string, frame?: Frame): Promise<GraphObject> {\n const response = await this.queryExecutor.executeSparqlConstructAndGetDataRaw(query);\n if (response.length === 0) {\n return { '@graph': []};\n }\n return await triplesToJsonldWithFrame(response, frame);\n }\n\n public async executeRawUpdate(\n query: string\n ): Promise<void> {\n await this.queryExecutor.executeRawSparqlUpdate(query);\n }\n\n public async find(options?: FindOneOptions): Promise<Entity | null> {\n return PerformanceLogger.withSpan('Adapter.find', async() => {\n const jsonld = await this.findAllAsJsonLd({ ...options, limit: 1 });\n if (Array.isArray(jsonld) && !options?.skipFraming) {\n if (jsonld.length === 0) {\n return null;\n }\n if (jsonld.length === 1) {\n return jsonld[0] as Entity;\n }\n }\n return jsonld as Entity;\n }, { options });\n }\n\n public async findBy(where: FindOptionsWhere): Promise<Entity | null> {\n return PerformanceLogger.withSpan('Adapter.findBy', async() => this.find({ where }), { where });\n }\n\n public async findAll(options?: FindAllOptions): Promise<Entity[]> {\n return PerformanceLogger.withSpan('Adapter.findAll', async() => {\n const jsonld = await this.findAllAsJsonLd(options);\n if (Array.isArray(jsonld)) {\n return jsonld as Entity[];\n }\n return [ jsonld ] as Entity[];\n }, { options });\n }\n\n private async findAllAsJsonLd(options?: FindAllOptions): Promise<OrArray<NodeObject>> {\n const queryBuilder = new SparqlQueryBuilder();\n const { where, selectionTriples, entityOrder, rdfTypes } = await this.buildFindAllQueryData(queryBuilder, options);\n if (entityOrder && entityOrder.length === 0) {\n return [];\n }\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const query = queryBuilder.buildConstructFromEntitySelectQuery(\n where,\n selectionTriples,\n options?.select,\n queryData.selectVariables\n );\n return await this.executeEntitySelectQuery(query, options, entityOrder, rdfTypes);\n }\n\n private async buildFindAllQueryData(\n queryBuilder: SparqlQueryBuilder,\n options?: FindAllOptions\n ): Promise<{ where: Pattern[]; selectionTriples: Triple[]; entityOrder?: string[], rdfTypes?: string[] }> {\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const selectQueryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, {\n ...options,\n relations: undefined\n });\n let rdfTypes: string[] | undefined;\n const wherePatterns: Pattern[] = [ ...selectQueryData.where, ...selectQueryData.graphWhere ];\n wherePatterns.push({\n type: 'bgp',\n triples: [\n {\n subject: entityVariable,\n predicate: rdfTypeNamedNode,\n object: rdfTypeVariable\n }\n ]\n });\n const entitySelectVariable = options?.entitySelectVariable ?? entityVariable;\n const groupBy = ensureArray(selectQueryData?.group ?? options?.group ?? []);\n groupBy.push(entitySelectVariable);\n // All non-aggregated variables in SELECT must be in GROUP BY\n for (const selectVariable of selectQueryData.selectVariables ?? []) {\n if (!('aggregation' in (selectVariable.expression as AggregateExpression)) && selectVariable.expression.constructor.name === 'Variable') {\n groupBy.push(selectVariable.expression as Variable);\n }\n }\n const entitySelectQuery = selectQueryData.where.length > 0\n ? createSparqlSelectQuery(\n [\n entitySelectVariable,\n // (GROUP_CONCAT(DISTINCT str(?rdfType); SEPARATOR = \" | \") AS ?rdfTypes)\n {\n expression: {\n type: \"aggregate\",\n aggregation: \"group_concat\",\n separator: \" | \",\n distinct: true,\n expression: {\n type: \"operation\",\n operator: \"STR\",\n args: [ rdfTypeVariable ]\n }\n },\n variable: rdfTypesVariable\n },\n ...selectQueryData.selectVariables?.map(({ variable, expression }) => {\n if (!expression) return variable;\n return {\n variable,\n expression\n };\n }) ?? []\n ],\n wherePatterns,\n selectQueryData.orders,\n groupBy,\n options?.limit,\n options?.offset\n )\n : undefined;\n let entityOrder: string[] | undefined;\n /* If relations are present add them to where */\n if ((queryData?.relationsQueryData?.unionPatterns ?? []).length > 0) {\n queryData?.relationsQueryData?.unionPatterns.push(\n createSparqlGraphPattern(entityVariable, [ createSparqlBasicGraphPattern([ entityGraphTriple ]) ])\n );\n }\n if (queryData.orders.length > 0 && options?.limit !== 1 && entitySelectQuery) {\n const entitySelectResponse =\n await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const valuesByVariable = groupSelectQueryResultsByKey(entitySelectResponse);\n entityOrder = getEntityVariableValuesFromVariables(valuesByVariable);\n if (entityOrder.length === 0) {\n return {\n where: queryData.where,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder: []\n };\n }\n const variableValueFilters = createValuesPatternsForVariables({\n [entityVariable.value]: valuesByVariable[entityVariable.value]\n });\n queryData.graphWhere = [ ...variableValueFilters, ...queryData.graphWhere ];\n } else if (entitySelectQuery) {\n // We need entity IDs for framing when:\n // 1. There are relations (to distinguish root entities from related entities)\n // 2. There's a type constraint (to handle subclass matching where SPARQL finds subclasses but JSON-LD needs exact types)\n const hasRelations = (queryData?.relationsQueryData?.unionPatterns ?? []).length > 0;\n const hasTypeConstraint = options?.where?.type !== undefined;\n\n if ((hasRelations || hasTypeConstraint) && queryData.orders.length > 0) {\n const entitySelectResponse =\n await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const valuesByVariable = groupSelectQueryResultsByKey(entitySelectResponse);\n entityOrder = queryData.orders.length > 0 ? getEntityVariableValuesFromVariables(valuesByVariable) : [];\n if (entityOrder.length === 0) {\n return {\n where: queryData.where,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder: []\n };\n }\n }\n else if (hasRelations || hasTypeConstraint) {\n const entitySelectResponse = await this.queryExecutor.executeSparqlSelectAndGetData(entitySelectQuery);\n const groupedResults = groupSelectQueryResultsByKey(entitySelectResponse);\n const valuesByVariable = getRdfTypeVariableValuesFromVariables(groupedResults);\n rdfTypes = [...new Set(valuesByVariable)];\n // Also get entity IDs for framing to distinguish root entities from related ones\n // entityOrder = getEntityVariableValuesFromVariables(groupedResults);\n // if (entityOrder.length === 0) {\n // return {\n // where: queryData.where,\n // selectionTriples: queryData.graphSelectionTriples,\n // entityOrder: [],\n // rdfTypes\n // };\n // }\n }\n\n // Always add the select group query to the CONSTRUCT\n const entitySelectGroupQuery = createSparqlSelectGroup([ entitySelectQuery ]);\n queryData.graphWhere.unshift(entitySelectGroupQuery);\n // queryData.graphWhere = [ ...queryData.where, ...queryData.graphWhere ];\n }\n return {\n where: queryData.graphWhere,\n selectionTriples: queryData.graphSelectionTriples,\n entityOrder,\n rdfTypes\n };\n }\n\n private async executeEntitySelectQuery(\n query: ConstructQuery,\n options?: FindAllOptions,\n entityOrder?: string[],\n rdfTypes?: string[]\n ): Promise<OrArray<NodeObject>> {\n const responseTriples = await this.queryExecutor.executeSparqlSelectAndGetData(query);\n return await triplesToJsonld(\n responseTriples,\n options?.skipFraming,\n options?.relations,\n options?.where,\n entityOrder,\n rdfTypes\n );\n }\n\n public async findAllBy(where: FindOptionsWhere): Promise<Entity[]> {\n return PerformanceLogger.withSpan('Adapter.findAllBy', async() => this.findAll({ where }), { where });\n }\n\n public async exists(options: FindExistsOptions): Promise<boolean> {\n return PerformanceLogger.withSpan('Adapter.exists', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const values = queryData.graphWhere.filter((pattern): boolean => pattern.type === 'values');\n const query = creteSparqlAskQuery([ ...values, ...queryData.where ]);\n return await this.queryExecutor.executeAskQueryAndGetResponse(query);\n }, { options });\n }\n\n public async count(options: FindCountOptions): Promise<number> {\n return PerformanceLogger.withSpan('Adapter.count', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const queryData = queryBuilder.buildEntitySelectPatternsFromOptions(entityVariable, options);\n const values = queryData.graphWhere.filter((pattern): boolean => pattern.type === 'values');\n const query = createSparqlCountSelectQuery(\n entityVariable,\n [ ...values, ...queryData.where ],\n queryData.orders,\n options?.offset\n );\n return await this.queryExecutor.executeSelectCountAndGetResponse(query);\n }, { options });\n }\n\n public async save(entity: Entity): Promise<Entity>;\n public async save(entities: Entity[]): Promise<Entity[]>;\n public async save(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpan('Adapter.save', async() => {\n const queryBuilder = new SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });\n const query = queryBuilder.buildUpdate(entityOrEntities);\n await this.queryExecutor.executeSparqlUpdate(query);\n return entityOrEntities;\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async groupBy(options: GroupByOptions): Promise<GroupByResponse> {\n return PerformanceLogger.withSpan('Adapter.groupBy', async() => {\n const queryBuilder = new SparqlQueryBuilder();\n const { query: selectQuery, variableMapping } = await queryBuilder.buildGroupByQuery(options);\n const results = await this.queryExecutor.executeSparqlSelectAndGetData(\n selectQuery\n );\n\n // Create reverse mapping from path to variable name\n const reverseMapping = Object.entries(variableMapping).reduce<Record<string, string>>((acc, [ varName, path ]) => {\n acc[path] = varName;\n return acc;\n }, {});\n\n // Transform results\n const groupResults: GroupResult[] = results.map(result => {\n const group: Record<string, string | number> = {};\n\n options.groupBy?.forEach(path => {\n const varName = reverseMapping[path];\n if (!varName) {\n throw new Error(`No variable mapping found for path: ${path}`);\n }\n const { value } = result[varName];\n // Try to convert to number if possible\n group[path] = Number.isNaN(Number(value)) ? value : Number(value);\n });\n\n if (options.dateGrouping) {\n const dateGroupVarName = reverseMapping.dateGroup;\n group.dateGroup = result[dateGroupVarName].value;\n }\n\n const countVarName = reverseMapping.count;\n const entityIdsVarName = reverseMapping.entityIds;\n\n return {\n group,\n count: Number.parseInt(result[countVarName].value, 10),\n entityIds: result[entityIdsVarName].value.split(' ')\n };\n });\n\n return {\n results: groupResults,\n meta: {\n totalCount: groupResults.reduce((sum, curr) => sum + curr.count, 0),\n dateRange: options.dateRange,\n groupings: options.groupBy || []\n }\n };\n }, { options });\n }\n\n public async update(id: string, attributes: Partial<Entity>): Promise<void>;\n public async update(ids: string[], attributes: Partial<Entity>): Promise<void>;\n public async update(idOrIds: string | string[], attributes: Partial<Entity>): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.update', async() => {\n const queryBuilder = new SparqlUpdateBuilder({ setTimestamps: this.setTimestamps });\n const query = queryBuilder.buildPartialUpdate(idOrIds, attributes);\n await this.queryExecutor.executeSparqlUpdate(query);\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async delete(id: string): Promise<void>;\n public async delete(ids: string[]): Promise<void>;\n public async delete(idOrIds: string | string[]): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.delete', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDeleteById(idOrIds);\n await this.queryExecutor.executeSparqlUpdate(query);\n }, { idCount: Array.isArray(idOrIds) ? idOrIds.length : 1 });\n }\n\n public async destroy(entity: Entity): Promise<Entity>;\n public async destroy(entities: Entity[]): Promise<Entity[]>;\n public async destroy(entityOrEntities: Entity | Entity[]): Promise<Entity | Entity[]> {\n return PerformanceLogger.withSpan('Adapter.destroy', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDelete(entityOrEntities);\n await this.queryExecutor.executeSparqlUpdate(query);\n return entityOrEntities;\n }, { entityCount: Array.isArray(entityOrEntities) ? entityOrEntities.length : 1 });\n }\n\n public async destroyAll(): Promise<void> {\n return PerformanceLogger.withSpan('Adapter.destroyAll', async() => {\n const queryBuilder = new SparqlUpdateBuilder();\n const query = queryBuilder.buildDeleteAll();\n await this.queryExecutor.executeSparqlUpdate(query);\n });\n }\n}\n"]}
|
|
@@ -61,6 +61,8 @@ export declare class SparqlQueryBuilder {
|
|
|
61
61
|
}[]): ConstructQuery;
|
|
62
62
|
private createWhereQueryData;
|
|
63
63
|
private createWhereQueryDataForField;
|
|
64
|
+
private createWhereQueryDataForAndClause;
|
|
65
|
+
private createWhereQueryDataForOrClause;
|
|
64
66
|
private createWhereQueryDataForIdValue;
|
|
65
67
|
private createWhereQueryDataForType;
|
|
66
68
|
private createWhereQueryDataFromKeyValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparqlQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryBuilder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAA4B,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAEV,cAAc,EACd,UAAU,EAKV,mBAAmB,EACnB,QAAQ,EACR,OAAO,EAEP,WAAW,EACX,MAAM,EAEN,aAAa,EACd,MAAM,UAAU,CAAC;AAuClB,OAAO,KAAK,EAEV,gBAAgB,EAEhB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAGhB,QAAQ,EAGT,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,sBAAsB;IAC5D,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;KAAE,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,OAAO,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,eAAe,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IAClE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;CACzB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;;IAM/C,oCAAoC,CACzC,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,yBAAyB,GAClC,qBAAqB;IAsHxB,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,8BAA8B;IAK/B,mCAAmC,CACxC,UAAU,EAAE,OAAO,EAAE,EACrB,qBAAqB,EAAE,MAAM,EAAE,EAC/B,MAAM,CAAC,EAAE,iBAAiB,EAC1B,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,EAAE,GACjE,cAAc;IA0CjB,OAAO,CAAC,oBAAoB;IAuD5B,OAAO,CAAC,4BAA4B;
|
|
1
|
+
{"version":3,"file":"SparqlQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/storage/query-adapter/sparql/SparqlQueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -237,9 +237,63 @@ class SparqlQueryBuilder {
|
|
|
237
237
|
if (field === 'type') {
|
|
238
238
|
return this.createWhereQueryDataForType(subject, value);
|
|
239
239
|
}
|
|
240
|
+
if (field === 'and') {
|
|
241
|
+
return this.createWhereQueryDataForAndClause(subject, value);
|
|
242
|
+
}
|
|
243
|
+
if (field === 'or') {
|
|
244
|
+
return this.createWhereQueryDataForOrClause(subject, value);
|
|
245
|
+
}
|
|
240
246
|
const predicate = data_model_1.default.namedNode(field);
|
|
241
247
|
return this.createWhereQueryDataFromKeyValue(subject, predicate, value);
|
|
242
248
|
}
|
|
249
|
+
createWhereQueryDataForAndClause(subject, whereClauses) {
|
|
250
|
+
// Combine all nested where conditions - all must match
|
|
251
|
+
return whereClauses.reduce((acc, nestedWhere) => {
|
|
252
|
+
const nestedData = this.createWhereQueryData(subject, nestedWhere);
|
|
253
|
+
return {
|
|
254
|
+
values: [...acc.values, ...nestedData.values],
|
|
255
|
+
triples: [...acc.triples, ...nestedData.triples],
|
|
256
|
+
filters: [...acc.filters, ...nestedData.filters],
|
|
257
|
+
patterns: [...acc.patterns ?? [], ...nestedData.patterns ?? []],
|
|
258
|
+
binds: [...acc.binds ?? [], ...nestedData.binds ?? []]
|
|
259
|
+
};
|
|
260
|
+
}, { values: [], triples: [], filters: [], patterns: [], binds: [] });
|
|
261
|
+
}
|
|
262
|
+
createWhereQueryDataForOrClause(subject, whereClauses) {
|
|
263
|
+
// Create UNION patterns - any condition can match
|
|
264
|
+
const unionPatterns = whereClauses.map((nestedWhere) => {
|
|
265
|
+
const nestedData = this.createWhereQueryData(subject, nestedWhere);
|
|
266
|
+
const patterns = [];
|
|
267
|
+
// Add values patterns
|
|
268
|
+
if (nestedData.values.length > 0) {
|
|
269
|
+
patterns.push(...nestedData.values);
|
|
270
|
+
}
|
|
271
|
+
// Add triples as basic graph pattern
|
|
272
|
+
if (nestedData.triples.length > 0) {
|
|
273
|
+
patterns.push((0, SparqlUtil_1.createSparqlBasicGraphPattern)(nestedData.triples));
|
|
274
|
+
}
|
|
275
|
+
// Add nested patterns (for deeply nested and/or)
|
|
276
|
+
if (nestedData.patterns && nestedData.patterns.length > 0) {
|
|
277
|
+
patterns.push(...nestedData.patterns);
|
|
278
|
+
}
|
|
279
|
+
// Add filters
|
|
280
|
+
if (nestedData.filters.length > 0) {
|
|
281
|
+
patterns.push((0, SparqlUtil_1.createFilterPatternFromFilters)(nestedData.filters));
|
|
282
|
+
}
|
|
283
|
+
// Add binds
|
|
284
|
+
if (nestedData.binds && nestedData.binds.length > 0) {
|
|
285
|
+
patterns.push(...nestedData.binds);
|
|
286
|
+
}
|
|
287
|
+
return (0, SparqlUtil_1.createSparqlSelectGroup)(patterns);
|
|
288
|
+
});
|
|
289
|
+
return {
|
|
290
|
+
values: [],
|
|
291
|
+
triples: [],
|
|
292
|
+
filters: [],
|
|
293
|
+
patterns: [(0, SparqlUtil_1.createSparqlUnion)(unionPatterns)],
|
|
294
|
+
binds: []
|
|
295
|
+
};
|
|
296
|
+
}
|
|
243
297
|
createWhereQueryDataForIdValue(term, value) {
|
|
244
298
|
let filters = [];
|
|
245
299
|
let values = [];
|