@comake/skl-js-engine 1.3.15 → 1.3.16

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.
@@ -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;AAwBhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,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;YAkHrB,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"}
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
- options?.entitySelectVariable ?? SparqlUtil_1.entityVariable,
105
- SparqlUtil_1.rdfTypeVariable,
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, selectQueryData.group ?? options?.group, options?.limit, options?.offset)
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":";AAAA,yCAAyC;;;AAazC,4CAAyC;AACzC,uEAAoE;AACpE,yDAWkC;AAClC,yDAGkC;AAQlC,8FAA2F;AAC3F,8FAA2F;AAG3F,6DAA0D;AAC1D,+DAA4D;AAE5D;;GAEG;AACH,MAAa,kBAAkB;IAK7B,YAAmB,OAAkC;QACnD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QACpD,QAAQ,OAAO,CAAC,IAAI,EAAE;YACpB,KAAK,QAAQ;gBACX,IAAI,CAAC,aAAa,GAAG,IAAI,yDAA2B,EAAE,CAAC;gBACvD,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,aAAa,GAAG,IAAI,yDAA2B,CAAC,OAAO,CAAC,CAAC;gBAC9D,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,MAAM,GAAG,eAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,eAAe,CAA2B,KAAa;QAClE,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO,EAAS,CAAC;SAClB;QACD,OAAO,IAAA,yCAA4B,EAAI,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,KAAa,EAAE,KAAa;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC;QACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAC,CAAC;SACxB;QACD,OAAO,MAAM,IAAA,qCAAwB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,KAAa;QAEb,MAAM,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAAwB;QACxC,OAAO,qCAAiB,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,IAAG,EAAE;YAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;gBAClD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,OAAO,IAAI,CAAC;iBACb;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,OAAO,MAAM,CAAC,CAAC,CAAW,CAAC;iBAC5B;aACF;YACD,OAAO,MAAgB,CAAC;QAC1B,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAuB;QACzC,OAAO,qCAAiB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,IAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,OAAwB;QAC3C,OAAO,qCAAiB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,IAAG,EAAE;YAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzB,OAAO,MAAkB,CAAC;aAC3B;YACD,OAAO,CAAE,MAAM,CAAc,CAAC;QAChC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,OAAwB;QACpD,MAAM,YAAY,GAAG,IAAI,uCAAkB,EAAE,CAAC;QAC9C,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACnH,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3C,OAAO,EAAE,CAAC;SACX;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,oCAAoC,CAAC,2BAAc,EAAE,OAAO,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,YAAY,CAAC,mCAAmC,CAC5D,KAAK,EACL,gBAAgB,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,eAAe,CAC1B,CAAC;QACF,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACpF,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,YAAgC,EAChC,OAAwB;QAExB,MAAM,SAAS,GAAG,YAAY,CAAC,oCAAoC,CAAC,2BAAc,EAAE,OAAO,CAAC,CAAC;QAC7F,MAAM,eAAe,GAAG,YAAY,CAAC,oCAAoC,CAAC,2BAAc,EAAE;YACxF,GAAG,OAAO;YACV,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QACH,IAAI,QAA8B,CAAC;QACnC,MAAM,aAAa,GAAc,CAAE,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,eAAe,CAAC,UAAU,CAAE,CAAC;QAC7F,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE,2BAAc;oBACvB,SAAS,EAAE,6BAAgB;oBAC3B,MAAM,EAAE,4BAAe;iBACxB;aACF;SACF,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACxD,CAAC,CAAC,IAAA,oCAAuB,EACvB;gBACE,OAAO,EAAE,oBAAoB,IAAI,2BAAc;gBAC/C,4BAAe;gBACf,GAAG,eAAe,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;oBACnE,IAAI,CAAC,UAAU;wBAAE,OAAO,QAAQ,CAAC;oBACjC,OAAO;wBACL,QAAQ;wBACR,UAAU;qBACX,CAAC;gBACJ,CAAC,CAAC,IAAI,EAAE;aACT,EACD,aAAa,EACb,eAAe,CAAC,MAAM,EACtB,eAAe,CAAC,KAAK,IAAI,OAAO,EAAE,KAAK,EACvC,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,MAAM,CAChB;YACD,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,WAAiC,CAAC;QACtC,gDAAgD;QAChD,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACnE,SAAS,EAAE,kBAAkB,EAAE,aAAa,CAAC,IAAI,CAC/C,IAAA,qCAAwB,EAAC,2BAAc,EAAE,CAAE,IAAA,0CAA6B,EAAC,CAAE,8BAAiB,CAAE,CAAC,CAAE,CAAC,CACnG,CAAC;SACH;QACD,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,EAAE,KAAK,KAAK,CAAC,IAAI,iBAAiB,EAAE;YAC5E,MAAM,oBAAoB,GAC1B,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;YAC1E,MAAM,gBAAgB,GAAG,IAAA,yCAA4B,EAAC,oBAAoB,CAAC,CAAC;YAC5E,WAAW,GAAG,IAAA,iDAAoC,EAAC,gBAAgB,CAAC,CAAC;YACrE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5B,OAAO;oBACL,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,gBAAgB,EAAE,SAAS,CAAC,qBAAqB;oBACjD,WAAW,EAAE,EAAE;iBAChB,CAAC;aACH;YACD,MAAM,oBAAoB,GAAG,IAAA,6CAAgC,EAAC;gBAC5D,CAAC,2BAAc,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,2BAAc,CAAC,KAAK,CAAC;aAC/D,CAAC,CAAC;YACH,SAAS,CAAC,UAAU,GAAG,CAAE,GAAG,oBAAoB,EAAE,GAAG,SAAS,CAAC,UAAU,CAAE,CAAC;SAC7E;aAAM,IAAI,iBAAiB,EAAE;YAC5B,uCAAuC;YACvC,8EAA8E;YAC9E,yHAAyH;YACzH,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACrF,MAAM,iBAAiB,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC;YAE7D,IAAI,CAAC,YAAY,IAAI,iBAAiB,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtE,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;gBAC5E,MAAM,gBAAgB,GAAG,IAAA,yCAA4B,EAAC,oBAAoB,CAAC,CAAC;gBAC5E,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,iDAAoC,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxG,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5B,OAAO;wBACL,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,gBAAgB,EAAE,SAAS,CAAC,qBAAqB;wBACjD,WAAW,EAAE,EAAE;qBAChB,CAAC;iBACH;aACF;iBACI,IAAI,YAAY,IAAI,iBAAiB,EAAE;gBAC1C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;gBACvG,MAAM,cAAc,GAAG,IAAA,yCAA4B,EAAC,oBAAoB,CAAC,CAAC;gBAC1E,MAAM,gBAAgB,GAAG,IAAA,kDAAqC,EAAC,cAAc,CAAC,CAAC;gBAC/E,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC1C,iFAAiF;gBACjF,sEAAsE;gBACtE,kCAAkC;gBAClC,aAAa;gBACb,8BAA8B;gBAC9B,yDAAyD;gBACzD,uBAAuB;gBACvB,eAAe;gBACf,OAAO;gBACP,IAAI;aACL;YAED,qDAAqD;YACrD,MAAM,sBAAsB,GAAG,IAAA,oCAAuB,EAAC,CAAE,iBAAiB,CAAE,CAAC,CAAC;YAC9E,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YACrD,0EAA0E;SAC3E;QACD,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,UAAU;YAC3B,gBAAgB,EAAE,SAAS,CAAC,qBAAqB;YACjD,WAAW;YACX,QAAQ;SACT,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,KAAqB,EACrB,OAAwB,EACxB,WAAsB,EACtB,QAAmB;QAEnB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QACtF,OAAO,MAAM,IAAA,4BAAe,EAC1B,eAAe,EACf,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,KAAK,EACd,WAAW,EACX,QAAQ,CACT,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,KAAuB;QAC5C,OAAO,qCAAiB,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,IAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxG,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAA0B;QAC5C,OAAO,qCAAiB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,IAAG,EAAE;YAC5D,MAAM,YAAY,GAAG,IAAI,uCAAkB,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,oCAAoC,CAAC,2BAAc,EAAE,OAAO,CAAC,CAAC;YAC7F,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAW,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC5F,MAAM,KAAK,GAAG,IAAA,gCAAmB,EAAC,CAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAE,CAAC,CAAC;YACrE,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QACvE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,OAAyB;QAC1C,OAAO,qCAAiB,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,IAAG,EAAE;YAC3D,MAAM,YAAY,GAAG,IAAI,uCAAkB,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,oCAAoC,CAAC,2BAAc,EAAE,OAAO,CAAC,CAAC;YAC7F,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAW,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC5F,MAAM,KAAK,GAAG,IAAA,yCAA4B,EACxC,2BAAc,EACd,CAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAE,EACjC,SAAS,CAAC,MAAM,EAChB,OAAO,EAAE,MAAM,CAChB,CAAC;YACF,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC;QAC1E,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAClB,CAAC;IAIM,KAAK,CAAC,IAAI,CAAC,gBAAmC;QACnD,OAAO,qCAAiB,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,IAAG,EAAE;YAC1D,MAAM,YAAY,GAAG,IAAI,yCAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACpF,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,gBAAgB,CAAC;QAC1B,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,OAAuB;QAC1C,OAAO,qCAAiB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,IAAG,EAAE;YAC7D,MAAM,YAAY,GAAG,IAAI,uCAAkB,EAAE,CAAC;YAC9C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC9F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CACpE,WAAW,CACZ,CAAC;YAEF,oDAAoD;YACpD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,CAAE,OAAO,EAAE,IAAI,CAAE,EAAE,EAAE;gBAC/G,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;gBACpB,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,oBAAoB;YACpB,MAAM,YAAY,GAAkB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACvD,MAAM,KAAK,GAAoC,EAAE,CAAC;gBAElD,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC9B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,CAAC,OAAO,EAAE;wBACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;qBAChE;oBACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;oBAClC,uCAAuC;oBACvC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,YAAY,EAAE;oBACxB,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC;oBAClD,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC;iBAClD;gBAED,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC;gBAC1C,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC;gBAElD,OAAO;oBACL,KAAK;oBACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;oBACtD,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;iBACrD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,YAAY;gBACrB,IAAI,EAAE;oBACJ,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oBACnE,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,SAAS,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;iBACjC;aACF,CAAC;QACJ,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAClB,CAAC;IAIM,KAAK,CAAC,MAAM,CAAC,OAA0B,EAAE,UAA2B;QACzE,OAAO,qCAAiB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,IAAG,EAAE;YAC5D,MAAM,YAAY,GAAG,IAAI,yCAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACpF,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACnE,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAIM,KAAK,CAAC,MAAM,CAAC,OAA0B;QAC5C,OAAO,qCAAiB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,IAAG,EAAE;YAC5D,MAAM,YAAY,GAAG,IAAI,yCAAmB,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAIM,KAAK,CAAC,OAAO,CAAC,gBAAmC;QACtD,OAAO,qCAAiB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,IAAG,EAAE;YAC7D,MAAM,YAAY,GAAG,IAAI,yCAAmB,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,gBAAgB,CAAC;QAC1B,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,OAAO,qCAAiB,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,IAAG,EAAE;YAChE,MAAM,YAAY,GAAG,IAAI,yCAAmB,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA/VD,gDA+VC","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"]}
@@ -9,6 +9,7 @@ export declare const predicateNode: import("@rdfjs/types").Variable;
9
9
  export declare const objectNode: import("@rdfjs/types").Variable;
10
10
  export declare const entityVariable: import("@rdfjs/types").Variable;
11
11
  export declare const rdfTypeVariable: import("@rdfjs/types").Variable;
12
+ export declare const rdfTypesVariable: import("@rdfjs/types").Variable;
12
13
  export declare const countVariable: import("@rdfjs/types").Variable;
13
14
  export declare const now: import("@rdfjs/types").Variable;
14
15
  export declare const created: NamedNode<"https://skl.ai/dateTimeCreated">;
@@ -1 +1 @@
1
- {"version":3,"file":"SparqlUtil.d.ts","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SparqlUtil.d.ts","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createSparqlNotExistsOperation = exports.createSparqlNotInOperation = exports.createSparqlInOperation = exports.createSparqlNotEqualOperation = exports.createSparqlLteOperation = exports.createSparqlLtOperation = exports.createSparqlGteOperation = exports.createSparqlGtOperation = exports.createSparqlContainsOperation = exports.createSparqlLcaseOperation = exports.createSparqlEqualOperation = exports.createSparqlBindPattern = exports.createFilterPatternFromFilters = exports.createSparqlFilterWithExpression = exports.createSparqlSelectQuery = exports.ensureGrouping = exports.ensureVariable = exports.createSparqlServicePattern = exports.createSparqlOptionalGraphSelection = exports.createSparqlBasicGraphPattern = exports.createSparqlUnion = exports.createSparqlOptional = exports.createSparqlSelectGroup = exports.creteSparqlAskQuery = exports.createSparqlCountSelectQuery = exports.createSparqlConstructQuery = exports.createSparqlGraphPattern = exports.createSparqlUpdate = exports.createSparqlDropUpdate = exports.createSparqlClearUpdate = exports.createSparqlGraphQuads = exports.entityGraphTriple = exports.dropAll = exports.bindNow = exports.allTypesAndSuperTypesPath = exports.anyPredicatePropertyPath = exports.nilPredicate = exports.restPredicate = exports.firstPredicate = exports.modified = exports.created = exports.now = exports.countVariable = exports.rdfTypeVariable = exports.entityVariable = exports.objectNode = exports.predicateNode = exports.subjectNode = exports.rdfsSubClassOfNamedNode = exports.rdfTypeNamedNode = void 0;
7
- exports.createValuesPatternsForVariables = exports.getRdfTypeVariableValuesFromVariables = exports.getEntityVariableValuesFromVariables = exports.groupSelectQueryResultsByKey = exports.selectQueryResultsAsJSValues = exports.createSparqlInsertDeleteOperation = exports.createSparqlOneOrMorePredicate = exports.createSparqlZeroOrMorePredicate = exports.createSparqlSequencePredicate = exports.createSparqlOrPredicate = exports.createSparqlInversePredicate = exports.createSparqlExistsOperation = void 0;
6
+ exports.createSparqlNotInOperation = exports.createSparqlInOperation = exports.createSparqlNotEqualOperation = exports.createSparqlLteOperation = exports.createSparqlLtOperation = exports.createSparqlGteOperation = exports.createSparqlGtOperation = exports.createSparqlContainsOperation = exports.createSparqlLcaseOperation = exports.createSparqlEqualOperation = exports.createSparqlBindPattern = exports.createFilterPatternFromFilters = exports.createSparqlFilterWithExpression = exports.createSparqlSelectQuery = exports.ensureGrouping = exports.ensureVariable = exports.createSparqlServicePattern = exports.createSparqlOptionalGraphSelection = exports.createSparqlBasicGraphPattern = exports.createSparqlUnion = exports.createSparqlOptional = exports.createSparqlSelectGroup = exports.creteSparqlAskQuery = exports.createSparqlCountSelectQuery = exports.createSparqlConstructQuery = exports.createSparqlGraphPattern = exports.createSparqlUpdate = exports.createSparqlDropUpdate = exports.createSparqlClearUpdate = exports.createSparqlGraphQuads = exports.entityGraphTriple = exports.dropAll = exports.bindNow = exports.allTypesAndSuperTypesPath = exports.anyPredicatePropertyPath = exports.nilPredicate = exports.restPredicate = exports.firstPredicate = exports.modified = exports.created = exports.now = exports.countVariable = exports.rdfTypesVariable = exports.rdfTypeVariable = exports.entityVariable = exports.objectNode = exports.predicateNode = exports.subjectNode = exports.rdfsSubClassOfNamedNode = exports.rdfTypeNamedNode = void 0;
7
+ exports.createValuesPatternsForVariables = exports.getRdfTypeVariableValuesFromVariables = exports.getEntityVariableValuesFromVariables = exports.groupSelectQueryResultsByKey = exports.selectQueryResultsAsJSValues = exports.createSparqlInsertDeleteOperation = exports.createSparqlOneOrMorePredicate = exports.createSparqlZeroOrMorePredicate = exports.createSparqlSequencePredicate = exports.createSparqlOrPredicate = exports.createSparqlInversePredicate = exports.createSparqlExistsOperation = exports.createSparqlNotExistsOperation = void 0;
8
8
  const data_model_1 = __importDefault(require("@rdfjs/data-model"));
9
9
  const constants_1 = require("../constants");
10
10
  const TripleUtil_1 = require("./TripleUtil");
@@ -16,6 +16,7 @@ exports.predicateNode = data_model_1.default.variable('predicate');
16
16
  exports.objectNode = data_model_1.default.variable('object');
17
17
  exports.entityVariable = data_model_1.default.variable('entity');
18
18
  exports.rdfTypeVariable = data_model_1.default.variable('rdfType');
19
+ exports.rdfTypesVariable = data_model_1.default.variable('rdfTypes');
19
20
  exports.countVariable = data_model_1.default.variable('count');
20
21
  exports.now = data_model_1.default.variable('now');
21
22
  exports.created = data_model_1.default.namedNode(constants_1.EngineConstants.prop.dateCreated);
@@ -437,10 +438,10 @@ function getEntityVariableValuesFromVariables(variables) {
437
438
  }
438
439
  exports.getEntityVariableValuesFromVariables = getEntityVariableValuesFromVariables;
439
440
  function getRdfTypeVariableValuesFromVariables(variables) {
440
- if (!(exports.rdfTypeVariable.value in variables)) {
441
+ if (!(exports.rdfTypesVariable.value in variables)) {
441
442
  return [];
442
443
  }
443
- return variables[exports.rdfTypeVariable.value].map((namedNode) => namedNode.value);
444
+ return variables[exports.rdfTypesVariable.value].flatMap((literal) => literal.value.split(' | '));
444
445
  }
445
446
  exports.getRdfTypeVariableValuesFromVariables = getRdfTypeVariableValuesFromVariables;
446
447
  function createValuesPatternsForVariables(valuesByVariable) {
@@ -1 +1 @@
1
- {"version":3,"file":"SparqlUtil.js","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import DataFactory from '@rdfjs/data-model';\nimport type { Literal, NamedNode } from '@rdfjs/types';\nimport type {\n AggregateExpression,\n AskQuery,\n BgpPattern,\n BindPattern,\n ClearDropOperation,\n ConstructQuery,\n Expression,\n FilterPattern,\n GraphPattern,\n GraphQuads,\n Grouping,\n GroupPattern,\n InsertDeleteOperation,\n IriTerm,\n OperationExpression,\n OptionalPattern,\n Ordering,\n Pattern,\n PropertyPath,\n SelectQuery,\n ServicePattern,\n Triple,\n UnionPattern,\n Update,\n UpdateOperation,\n ValuePatternRow,\n ValuesPattern,\n Variable\n} from 'sparqljs';\nimport { EngineConstants } from '../constants';\nimport type { RawQueryResult } from '../storage/query-adapter/QueryAdapter';\nimport type { SelectVariableQueryResult } from '../storage/query-adapter/sparql/query-executor/SparqlQueryExecutor';\nimport { toJSValueFromDataType } from './TripleUtil';\nimport { RDF, RDFS } from './Vocabularies';\n\nexport const rdfTypeNamedNode = DataFactory.namedNode(RDF.type);\nexport const rdfsSubClassOfNamedNode = DataFactory.namedNode(RDFS.subClassOf);\nexport const subjectNode = DataFactory.variable('subject');\nexport const predicateNode = DataFactory.variable('predicate');\nexport const objectNode = DataFactory.variable('object');\nexport const entityVariable = DataFactory.variable('entity');\nexport const rdfTypeVariable = DataFactory.variable('rdfType');\nexport const countVariable = DataFactory.variable('count');\nexport const now = DataFactory.variable('now');\nexport const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);\nexport const modified = DataFactory.namedNode(EngineConstants.prop.dateModified);\nexport const firstPredicate = DataFactory.namedNode(RDF.first);\nexport const restPredicate = DataFactory.namedNode(RDF.rest);\nexport const nilPredicate = DataFactory.namedNode(RDF.nil);\nexport const anyPredicatePropertyPath = {\n type: 'path',\n pathType: '!',\n items: [ DataFactory.namedNode('') ]\n} as PropertyPath;\n\nexport const allTypesAndSuperTypesPath: PropertyPath = {\n type: 'path',\n pathType: '/',\n items: [\n rdfTypeNamedNode,\n {\n type: 'path',\n pathType: '*',\n items: [ rdfsSubClassOfNamedNode ]\n }\n ]\n};\n\nexport const bindNow: BindPattern = {\n type: 'bind',\n variable: now,\n expression: {\n type: 'operation',\n operator: 'now',\n args: []\n }\n};\n\nexport const dropAll: ClearDropOperation = {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n all: true\n }\n};\n\nexport const entityGraphTriple = { subject: subjectNode, predicate: predicateNode, object: objectNode };\n\nexport function createSparqlGraphQuads(graph: NamedNode, triples: Triple[]): GraphQuads {\n return {\n type: 'graph',\n name: graph,\n triples\n };\n}\n\nexport function createSparqlClearUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'clear',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlDropUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlUpdate(updates: UpdateOperation[]): Update {\n return {\n type: 'update',\n prefixes: {},\n updates\n };\n}\n\nexport function createSparqlGraphPattern(name: Variable | NamedNode, patterns: Pattern[]): GraphPattern {\n return {\n type: 'graph',\n name,\n patterns\n } as GraphPattern;\n}\n\nexport function createSparqlConstructQuery(triples: Triple[], where: Pattern[]): ConstructQuery {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: triples,\n where\n };\n}\n\nexport function createSparqlCountSelectQuery(\n subject: Variable,\n where: Pattern[],\n order: Ordering[],\n offset?: number\n): SelectQuery {\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: [\n {\n expression: {\n type: 'aggregate',\n aggregation: 'count',\n distinct: true,\n expression: subject\n } as AggregateExpression,\n variable: countVariable\n }\n ],\n where,\n order: order.length > 0 ? order : undefined,\n offset,\n prefixes: {}\n };\n}\n\nexport function creteSparqlAskQuery(where: Pattern[]): AskQuery {\n return {\n type: 'query',\n queryType: 'ASK',\n where,\n prefixes: {}\n };\n}\n\nexport function createSparqlSelectGroup(patterns: Pattern[]): GroupPattern {\n return {\n type: 'group',\n patterns\n };\n}\n\nexport function createSparqlOptional(patterns: Pattern[]): OptionalPattern {\n return {\n type: 'optional',\n patterns\n };\n}\n\nexport function createSparqlUnion(patterns: Pattern[]): UnionPattern {\n return {\n type: 'union',\n patterns\n };\n}\n\nexport function createSparqlBasicGraphPattern(triples: Triple[]): BgpPattern {\n return { type: 'bgp', triples };\n}\n\nexport function createSparqlOptionalGraphSelection(name: Variable | NamedNode, triples: Triple[]): GraphPattern {\n return {\n type: 'graph',\n name: name as IriTerm,\n patterns: [ createSparqlOptional([ createSparqlBasicGraphPattern(triples) ]) ]\n };\n}\n\nexport function createSparqlServicePattern(serviceName: string, triples: Triple[]): ServicePattern {\n return {\n type: 'service',\n patterns: [ createSparqlBasicGraphPattern(triples) ],\n name: DataFactory.namedNode(serviceName),\n silent: false\n };\n}\n\nexport function ensureVariable(variableLike: string | Variable): Variable {\n if (typeof variableLike === 'string' && variableLike.startsWith('?')) {\n return DataFactory.variable(variableLike.slice(1));\n }\n return variableLike as Variable;\n}\n\nexport function ensureGrouping(variableLike: Variable | string): Grouping {\n return {\n expression: ensureVariable(variableLike)\n } as Grouping;\n}\n\nexport function createSparqlSelectQuery(\n variable: Variable | Variable[],\n where: Pattern[],\n order: Ordering[],\n group?: Variable | Variable[],\n limit?: number,\n offset?: number\n): SelectQuery {\n let groupings: Grouping[] | undefined;\n if (group) {\n if (Array.isArray(group)) {\n // eslint-disable-next-line id-length\n groupings = group.map(g => ensureGrouping(g));\n } else {\n groupings = [ ensureGrouping(group) ];\n }\n }\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: Array.isArray(variable) ? variable.map(ensureVariable) : [ ensureVariable(variable) ],\n distinct: true,\n where,\n group: groupings,\n order: order.length > 0 ? order : undefined,\n limit,\n offset,\n prefixes: {}\n };\n}\n\nexport function createSparqlFilterWithExpression(expression: Expression): FilterPattern {\n return { type: 'filter', expression };\n}\n\nexport function createFilterPatternFromFilters(filters: Expression[]): FilterPattern {\n if (filters.length > 2) {\n return createFilterPatternFromFilters([\n {\n type: 'operation',\n operator: '&&',\n args: filters.slice(0, 2)\n },\n ...filters.slice(2)\n ]);\n }\n if (filters.length > 1) {\n return createSparqlFilterWithExpression({\n type: 'operation',\n operator: '&&',\n args: filters\n });\n }\n return createSparqlFilterWithExpression(filters[0]);\n}\n\nexport function createSparqlBindPattern(expression: Expression, variable: Variable): BindPattern {\n return {\n type: 'bind',\n expression,\n variable\n } as BindPattern;\n}\n\nexport function createSparqlEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLcaseOperation(expression: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'lcase',\n args: [ expression ]\n };\n}\n\nexport function createSparqlContainsOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'contains',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '!=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'in',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'notin',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'notexists',\n args\n };\n}\n\nexport function createSparqlExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'exists',\n args\n };\n}\n\nexport function createSparqlInversePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '^',\n items: predicates\n };\n}\n\nexport function createSparqlOrPredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '|',\n items: predicates\n };\n}\n\nexport function createSparqlSequencePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '/',\n items: predicates\n };\n}\n\nexport function createSparqlZeroOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '*',\n items: predicates\n };\n}\n\nexport function createSparqlOneOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '+',\n items: predicates\n };\n}\n\nexport function createSparqlInsertDeleteOperation(\n graph: NamedNode,\n insertionTriples: Triple[],\n deletionTriples: Triple[]\n): InsertDeleteOperation {\n return {\n updateType: 'insertdelete',\n delete: [ createSparqlGraphQuads(graph, deletionTriples) ],\n insert: [ createSparqlGraphQuads(graph, insertionTriples) ],\n where: [ createSparqlBasicGraphPattern(deletionTriples) ],\n using: {\n default: [ graph ]\n }\n } as InsertDeleteOperation;\n}\n\nexport function selectQueryResultsAsJSValues<T extends RawQueryResult>(results: SelectVariableQueryResult<T>[]): T[] {\n return results.map(\n (result): T =>\n Object.entries(result).reduce<T>(\n (obj, [ key, value ]): T => ({\n ...obj,\n [key]: value.termType === 'Literal' ? toJSValueFromDataType(value.value, value.datatype?.value) : value.value\n\n }),\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter\n {} as T\n )\n );\n}\n\nexport function groupSelectQueryResultsByKey(\n results: SelectVariableQueryResult<any>[]\n): Record<string, (NamedNode | Literal)[]> {\n return results.reduce(\n (obj: Record<string, (NamedNode | Literal)[]>, result): Record<string, (NamedNode | Literal)[]> => {\n for (const [ key, value ] of Object.entries(result)) {\n if (!(key in obj)) {\n obj[key] = [ value ];\n } else {\n obj[key].push(value);\n }\n }\n return obj;\n },\n {}\n );\n}\n\nexport function getEntityVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(entityVariable.value in variables)) {\n return [];\n }\n return (variables[entityVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(rdfTypeVariable.value in variables)) {\n return [];\n }\n return (variables[rdfTypeVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function createValuesPatternsForVariables(\n valuesByVariable: Record<string, (NamedNode | Literal)[]>\n): ValuesPattern[] {\n return Object.entries(valuesByVariable).map(\n ([ variableName, values ]): ValuesPattern => ({\n type: 'values',\n values: values.map(\n (value): ValuePatternRow => ({\n [`?${variableName}`]: value\n })\n )\n })\n );\n}\n"]}
1
+ {"version":3,"file":"SparqlUtil.js","sourceRoot":"","sources":["../../src/util/SparqlUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import DataFactory from '@rdfjs/data-model';\nimport type { Literal, NamedNode } from '@rdfjs/types';\nimport type {\n AggregateExpression,\n AskQuery,\n BgpPattern,\n BindPattern,\n ClearDropOperation,\n ConstructQuery,\n Expression,\n FilterPattern,\n GraphPattern,\n GraphQuads,\n Grouping,\n GroupPattern,\n InsertDeleteOperation,\n IriTerm,\n OperationExpression,\n OptionalPattern,\n Ordering,\n Pattern,\n PropertyPath,\n SelectQuery,\n ServicePattern,\n Triple,\n UnionPattern,\n Update,\n UpdateOperation,\n ValuePatternRow,\n ValuesPattern,\n Variable\n} from 'sparqljs';\nimport { EngineConstants } from '../constants';\nimport type { RawQueryResult } from '../storage/query-adapter/QueryAdapter';\nimport type { SelectVariableQueryResult } from '../storage/query-adapter/sparql/query-executor/SparqlQueryExecutor';\nimport { toJSValueFromDataType } from './TripleUtil';\nimport { RDF, RDFS } from './Vocabularies';\n\nexport const rdfTypeNamedNode = DataFactory.namedNode(RDF.type);\nexport const rdfsSubClassOfNamedNode = DataFactory.namedNode(RDFS.subClassOf);\nexport const subjectNode = DataFactory.variable('subject');\nexport const predicateNode = DataFactory.variable('predicate');\nexport const objectNode = DataFactory.variable('object');\nexport const entityVariable = DataFactory.variable('entity');\nexport const rdfTypeVariable = DataFactory.variable('rdfType');\nexport const rdfTypesVariable = DataFactory.variable('rdfTypes');\nexport const countVariable = DataFactory.variable('count');\nexport const now = DataFactory.variable('now');\nexport const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);\nexport const modified = DataFactory.namedNode(EngineConstants.prop.dateModified);\nexport const firstPredicate = DataFactory.namedNode(RDF.first);\nexport const restPredicate = DataFactory.namedNode(RDF.rest);\nexport const nilPredicate = DataFactory.namedNode(RDF.nil);\nexport const anyPredicatePropertyPath = {\n type: 'path',\n pathType: '!',\n items: [ DataFactory.namedNode('') ]\n} as PropertyPath;\n\nexport const allTypesAndSuperTypesPath: PropertyPath = {\n type: 'path',\n pathType: '/',\n items: [\n rdfTypeNamedNode,\n {\n type: 'path',\n pathType: '*',\n items: [ rdfsSubClassOfNamedNode ]\n }\n ]\n};\n\nexport const bindNow: BindPattern = {\n type: 'bind',\n variable: now,\n expression: {\n type: 'operation',\n operator: 'now',\n args: []\n }\n};\n\nexport const dropAll: ClearDropOperation = {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n all: true\n }\n};\n\nexport const entityGraphTriple = { subject: subjectNode, predicate: predicateNode, object: objectNode };\n\nexport function createSparqlGraphQuads(graph: NamedNode, triples: Triple[]): GraphQuads {\n return {\n type: 'graph',\n name: graph,\n triples\n };\n}\n\nexport function createSparqlClearUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'clear',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlDropUpdate(graph: NamedNode): ClearDropOperation {\n return {\n type: 'drop',\n silent: true,\n graph: {\n type: 'graph',\n name: graph\n }\n };\n}\n\nexport function createSparqlUpdate(updates: UpdateOperation[]): Update {\n return {\n type: 'update',\n prefixes: {},\n updates\n };\n}\n\nexport function createSparqlGraphPattern(name: Variable | NamedNode, patterns: Pattern[]): GraphPattern {\n return {\n type: 'graph',\n name,\n patterns\n } as GraphPattern;\n}\n\nexport function createSparqlConstructQuery(triples: Triple[], where: Pattern[]): ConstructQuery {\n return {\n type: 'query',\n prefixes: {},\n queryType: 'CONSTRUCT',\n template: triples,\n where\n };\n}\n\nexport function createSparqlCountSelectQuery(\n subject: Variable,\n where: Pattern[],\n order: Ordering[],\n offset?: number\n): SelectQuery {\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: [\n {\n expression: {\n type: 'aggregate',\n aggregation: 'count',\n distinct: true,\n expression: subject\n } as AggregateExpression,\n variable: countVariable\n }\n ],\n where,\n order: order.length > 0 ? order : undefined,\n offset,\n prefixes: {}\n };\n}\n\nexport function creteSparqlAskQuery(where: Pattern[]): AskQuery {\n return {\n type: 'query',\n queryType: 'ASK',\n where,\n prefixes: {}\n };\n}\n\nexport function createSparqlSelectGroup(patterns: Pattern[]): GroupPattern {\n return {\n type: 'group',\n patterns\n };\n}\n\nexport function createSparqlOptional(patterns: Pattern[]): OptionalPattern {\n return {\n type: 'optional',\n patterns\n };\n}\n\nexport function createSparqlUnion(patterns: Pattern[]): UnionPattern {\n return {\n type: 'union',\n patterns\n };\n}\n\nexport function createSparqlBasicGraphPattern(triples: Triple[]): BgpPattern {\n return { type: 'bgp', triples };\n}\n\nexport function createSparqlOptionalGraphSelection(name: Variable | NamedNode, triples: Triple[]): GraphPattern {\n return {\n type: 'graph',\n name: name as IriTerm,\n patterns: [ createSparqlOptional([ createSparqlBasicGraphPattern(triples) ]) ]\n };\n}\n\nexport function createSparqlServicePattern(serviceName: string, triples: Triple[]): ServicePattern {\n return {\n type: 'service',\n patterns: [ createSparqlBasicGraphPattern(triples) ],\n name: DataFactory.namedNode(serviceName),\n silent: false\n };\n}\n\nexport function ensureVariable(variableLike: string | Variable): Variable {\n if (typeof variableLike === 'string' && variableLike.startsWith('?')) {\n return DataFactory.variable(variableLike.slice(1));\n }\n return variableLike as Variable;\n}\n\nexport function ensureGrouping(variableLike: Variable | string): Grouping {\n return {\n expression: ensureVariable(variableLike)\n } as Grouping;\n}\n\nexport function createSparqlSelectQuery(\n variable: Variable | Variable[],\n where: Pattern[],\n order: Ordering[],\n group?: Variable | Variable[],\n limit?: number,\n offset?: number\n): SelectQuery {\n let groupings: Grouping[] | undefined;\n if (group) {\n if (Array.isArray(group)) {\n // eslint-disable-next-line id-length\n groupings = group.map(g => ensureGrouping(g));\n } else {\n groupings = [ ensureGrouping(group) ];\n }\n }\n return {\n type: 'query',\n queryType: 'SELECT',\n variables: Array.isArray(variable) ? variable.map(ensureVariable) : [ ensureVariable(variable) ],\n distinct: true,\n where,\n group: groupings,\n order: order.length > 0 ? order : undefined,\n limit,\n offset,\n prefixes: {}\n };\n}\n\nexport function createSparqlFilterWithExpression(expression: Expression): FilterPattern {\n return { type: 'filter', expression };\n}\n\nexport function createFilterPatternFromFilters(filters: Expression[]): FilterPattern {\n if (filters.length > 2) {\n return createFilterPatternFromFilters([\n {\n type: 'operation',\n operator: '&&',\n args: filters.slice(0, 2)\n },\n ...filters.slice(2)\n ]);\n }\n if (filters.length > 1) {\n return createSparqlFilterWithExpression({\n type: 'operation',\n operator: '&&',\n args: filters\n });\n }\n return createSparqlFilterWithExpression(filters[0]);\n}\n\nexport function createSparqlBindPattern(expression: Expression, variable: Variable): BindPattern {\n return {\n type: 'bind',\n expression,\n variable\n } as BindPattern;\n}\n\nexport function createSparqlEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLcaseOperation(expression: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'lcase',\n args: [ expression ]\n };\n}\n\nexport function createSparqlContainsOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'contains',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlGteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '>=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlLteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '<=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: '!=',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'in',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {\n return {\n type: 'operation',\n operator: 'notin',\n args: [ leftSide, rightSide ]\n };\n}\n\nexport function createSparqlNotExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'notexists',\n args\n };\n}\n\nexport function createSparqlExistsOperation(args: Expression[]): OperationExpression {\n return {\n type: 'operation',\n operator: 'exists',\n args\n };\n}\n\nexport function createSparqlInversePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '^',\n items: predicates\n };\n}\n\nexport function createSparqlOrPredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '|',\n items: predicates\n };\n}\n\nexport function createSparqlSequencePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '/',\n items: predicates\n };\n}\n\nexport function createSparqlZeroOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '*',\n items: predicates\n };\n}\n\nexport function createSparqlOneOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {\n return {\n type: 'path',\n pathType: '+',\n items: predicates\n };\n}\n\nexport function createSparqlInsertDeleteOperation(\n graph: NamedNode,\n insertionTriples: Triple[],\n deletionTriples: Triple[]\n): InsertDeleteOperation {\n return {\n updateType: 'insertdelete',\n delete: [ createSparqlGraphQuads(graph, deletionTriples) ],\n insert: [ createSparqlGraphQuads(graph, insertionTriples) ],\n where: [ createSparqlBasicGraphPattern(deletionTriples) ],\n using: {\n default: [ graph ]\n }\n } as InsertDeleteOperation;\n}\n\nexport function selectQueryResultsAsJSValues<T extends RawQueryResult>(results: SelectVariableQueryResult<T>[]): T[] {\n return results.map(\n (result): T =>\n Object.entries(result).reduce<T>(\n (obj, [ key, value ]): T => ({\n ...obj,\n [key]: value.termType === 'Literal' ? toJSValueFromDataType(value.value, value.datatype?.value) : value.value\n\n }),\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter\n {} as T\n )\n );\n}\n\nexport function groupSelectQueryResultsByKey(\n results: SelectVariableQueryResult<any>[]\n): Record<string, (NamedNode | Literal)[]> {\n return results.reduce(\n (obj: Record<string, (NamedNode | Literal)[]>, result): Record<string, (NamedNode | Literal)[]> => {\n for (const [ key, value ] of Object.entries(result)) {\n if (!(key in obj)) {\n obj[key] = [ value ];\n } else {\n obj[key].push(value);\n }\n }\n return obj;\n },\n {}\n );\n}\n\nexport function getEntityVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(entityVariable.value in variables)) {\n return [];\n }\n return (variables[entityVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);\n}\n\nexport function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {\n if (!(rdfTypesVariable.value in variables)) {\n return [];\n }\n return (variables[rdfTypesVariable.value] as Literal[]).flatMap((literal: Literal): string[] => literal.value.split(' | '));\n}\n\nexport function createValuesPatternsForVariables(\n valuesByVariable: Record<string, (NamedNode | Literal)[]>\n): ValuesPattern[] {\n return Object.entries(valuesByVariable).map(\n ([ variableName, values ]): ValuesPattern => ({\n type: 'values',\n values: values.map(\n (value): ValuePatternRow => ({\n [`?${variableName}`]: value\n })\n )\n })\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comake/skl-js-engine",
3
- "version": "1.3.15",
3
+ "version": "1.3.16",
4
4
  "description": "Standard Knowledge Language Javascript Engine",
5
5
  "keywords": [
6
6
  "skl",
@@ -7,9 +7,11 @@ import type { OrArray } from '@comake/rmlmapper-js';
7
7
  import type { GraphObject, NodeObject } from 'jsonld';
8
8
  import type { Frame } from 'jsonld/jsonld-spec';
9
9
  import type {
10
+ AggregateExpression,
10
11
  ConstructQuery,
11
12
  Pattern,
12
- Triple
13
+ Triple,
14
+ Variable
13
15
  } from 'sparqljs';
14
16
  import { Logger } from '../../../logger';
15
17
  import { PerformanceLogger } from '../../../util/PerformanceLogger';
@@ -22,6 +24,7 @@ import {
22
24
  getRdfTypeVariableValuesFromVariables,
23
25
  groupSelectQueryResultsByKey,
24
26
  rdfTypeNamedNode,
27
+ rdfTypesVariable,
25
28
  rdfTypeVariable,
26
29
  selectQueryResultsAsJSValues
27
30
  } from '../../../util/SparqlUtil';
@@ -30,6 +33,7 @@ import {
30
33
  triplesToJsonldWithFrame
31
34
  } from '../../../util/TripleUtil';
32
35
  import type { Entity } from '../../../util/Types';
36
+ import { ensureArray } from '../../../util/Util';
33
37
  import type {
34
38
  FindAllOptions, FindCountOptions,
35
39
  FindExistsOptions, FindOneOptions, FindOptionsWhere
@@ -155,11 +159,34 @@ export class SparqlQueryAdapter implements QueryAdapter {
155
159
  }
156
160
  ]
157
161
  });
162
+ const entitySelectVariable = options?.entitySelectVariable ?? entityVariable;
163
+ const groupBy = ensureArray(selectQueryData?.group ?? options?.group ?? []);
164
+ groupBy.push(entitySelectVariable);
165
+ // All non-aggregated variables in SELECT must be in GROUP BY
166
+ for (const selectVariable of selectQueryData.selectVariables ?? []) {
167
+ if (!('aggregation' in (selectVariable.expression as AggregateExpression)) && selectVariable.expression.constructor.name === 'Variable') {
168
+ groupBy.push(selectVariable.expression as Variable);
169
+ }
170
+ }
158
171
  const entitySelectQuery = selectQueryData.where.length > 0
159
172
  ? createSparqlSelectQuery(
160
173
  [
161
- options?.entitySelectVariable ?? entityVariable,
162
- rdfTypeVariable,
174
+ entitySelectVariable,
175
+ // (GROUP_CONCAT(DISTINCT str(?rdfType); SEPARATOR = " | ") AS ?rdfTypes)
176
+ {
177
+ expression: {
178
+ type: "aggregate",
179
+ aggregation: "group_concat",
180
+ separator: " | ",
181
+ distinct: true,
182
+ expression: {
183
+ type: "operation",
184
+ operator: "STR",
185
+ args: [ rdfTypeVariable ]
186
+ }
187
+ },
188
+ variable: rdfTypesVariable
189
+ },
163
190
  ...selectQueryData.selectVariables?.map(({ variable, expression }) => {
164
191
  if (!expression) return variable;
165
192
  return {
@@ -170,7 +197,7 @@ export class SparqlQueryAdapter implements QueryAdapter {
170
197
  ],
171
198
  wherePatterns,
172
199
  selectQueryData.orders,
173
- selectQueryData.group ?? options?.group,
200
+ groupBy,
174
201
  options?.limit,
175
202
  options?.offset
176
203
  )
@@ -43,6 +43,7 @@ export const predicateNode = DataFactory.variable('predicate');
43
43
  export const objectNode = DataFactory.variable('object');
44
44
  export const entityVariable = DataFactory.variable('entity');
45
45
  export const rdfTypeVariable = DataFactory.variable('rdfType');
46
+ export const rdfTypesVariable = DataFactory.variable('rdfTypes');
46
47
  export const countVariable = DataFactory.variable('count');
47
48
  export const now = DataFactory.variable('now');
48
49
  export const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);
@@ -494,10 +495,10 @@ export function getEntityVariableValuesFromVariables(variables: Record<string, (
494
495
  }
495
496
 
496
497
  export function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {
497
- if (!(rdfTypeVariable.value in variables)) {
498
+ if (!(rdfTypesVariable.value in variables)) {
498
499
  return [];
499
500
  }
500
- return (variables[rdfTypeVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);
501
+ return (variables[rdfTypesVariable.value] as Literal[]).flatMap((literal: Literal): string[] => literal.value.split(' | '));
501
502
  }
502
503
 
503
504
  export function createValuesPatternsForVariables(