@comake/skl-js-engine 1.3.8 → 1.3.10

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.
Files changed (297) hide show
  1. package/dist/JsExecutor/PermissionBuilder.d.ts +1 -0
  2. package/dist/JsExecutor/PermissionBuilder.d.ts.map +1 -0
  3. package/dist/JsExecutor/PermissionBuilder.js.map +1 -1
  4. package/dist/JsExecutor/constants.d.ts +1 -0
  5. package/dist/JsExecutor/constants.d.ts.map +1 -0
  6. package/dist/JsExecutor/constants.js.map +1 -1
  7. package/dist/JsExecutor/denoUtils.d.ts +1 -0
  8. package/dist/JsExecutor/denoUtils.d.ts.map +1 -0
  9. package/dist/JsExecutor/denoUtils.js.map +1 -1
  10. package/dist/JsExecutor/errors.d.ts +1 -0
  11. package/dist/JsExecutor/errors.d.ts.map +1 -0
  12. package/dist/JsExecutor/errors.js.map +1 -1
  13. package/dist/JsExecutor/examples/basic/index.d.ts +1 -0
  14. package/dist/JsExecutor/examples/basic/index.d.ts.map +1 -0
  15. package/dist/JsExecutor/examples/basic/index.js.map +1 -1
  16. package/dist/JsExecutor/examples/basic/process.d.ts +1 -0
  17. package/dist/JsExecutor/examples/basic/process.d.ts.map +1 -0
  18. package/dist/JsExecutor/examples/basic/process.js.map +1 -1
  19. package/dist/JsExecutor/examples/jsExecutor/index.d.ts +1 -0
  20. package/dist/JsExecutor/examples/jsExecutor/index.d.ts.map +1 -0
  21. package/dist/JsExecutor/examples/jsExecutor/index.js.map +1 -1
  22. package/dist/JsExecutor/examples/jsExecutor/process.d.ts +1 -0
  23. package/dist/JsExecutor/examples/jsExecutor/process.d.ts.map +1 -0
  24. package/dist/JsExecutor/examples/jsExecutor/process.js.map +1 -1
  25. package/dist/JsExecutor/index.d.ts +1 -0
  26. package/dist/JsExecutor/index.d.ts.map +1 -0
  27. package/dist/JsExecutor/index.js.map +1 -1
  28. package/dist/JsExecutor/jsExecutor.d.ts +1 -0
  29. package/dist/JsExecutor/jsExecutor.d.ts.map +1 -0
  30. package/dist/JsExecutor/jsExecutor.js.map +1 -1
  31. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts +1 -0
  32. package/dist/JsExecutor/jsonRpc/JsonRpcClient.d.ts.map +1 -0
  33. package/dist/JsExecutor/jsonRpc/JsonRpcClient.js.map +1 -1
  34. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts +1 -0
  35. package/dist/JsExecutor/jsonRpc/JsonRpcServer.d.ts.map +1 -0
  36. package/dist/JsExecutor/jsonRpc/JsonRpcServer.js.map +1 -1
  37. package/dist/JsExecutor/jsonRpc/index.d.ts +1 -0
  38. package/dist/JsExecutor/jsonRpc/index.d.ts.map +1 -0
  39. package/dist/JsExecutor/jsonRpc/index.js.map +1 -1
  40. package/dist/JsExecutor/jsonRpc/types.d.ts +1 -0
  41. package/dist/JsExecutor/jsonRpc/types.d.ts.map +1 -0
  42. package/dist/JsExecutor/jsonRpc/types.js.map +1 -1
  43. package/dist/JsExecutor/transport/Transport.d.ts +1 -0
  44. package/dist/JsExecutor/transport/Transport.d.ts.map +1 -0
  45. package/dist/JsExecutor/transport/Transport.js.map +1 -1
  46. package/dist/JsExecutor/transport/base/BaseTransport.d.ts +1 -0
  47. package/dist/JsExecutor/transport/base/BaseTransport.d.ts.map +1 -0
  48. package/dist/JsExecutor/transport/base/BaseTransport.js.map +1 -1
  49. package/dist/JsExecutor/transport/index.d.ts +1 -0
  50. package/dist/JsExecutor/transport/index.d.ts.map +1 -0
  51. package/dist/JsExecutor/transport/index.js.map +1 -1
  52. package/dist/JsExecutor/transport/process/ProcessManager.d.ts +1 -0
  53. package/dist/JsExecutor/transport/process/ProcessManager.d.ts.map +1 -0
  54. package/dist/JsExecutor/transport/process/ProcessManager.js.map +1 -1
  55. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts +1 -0
  56. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.d.ts.map +1 -0
  57. package/dist/JsExecutor/transport/stdio/ChildStdioTransport.js.map +1 -1
  58. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts +1 -0
  59. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.d.ts.map +1 -0
  60. package/dist/JsExecutor/transport/stdio/ParentStdioTransport.js.map +1 -1
  61. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts +1 -0
  62. package/dist/JsExecutor/transport/utils/MessageUtils.d.ts.map +1 -0
  63. package/dist/JsExecutor/transport/utils/MessageUtils.js.map +1 -1
  64. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts +1 -0
  65. package/dist/JsExecutor/transport/utils/PollingUtils.d.ts.map +1 -0
  66. package/dist/JsExecutor/transport/utils/PollingUtils.js.map +1 -1
  67. package/dist/JsExecutor/types.d.ts +1 -0
  68. package/dist/JsExecutor/types.d.ts.map +1 -0
  69. package/dist/JsExecutor/types.js.map +1 -1
  70. package/dist/SklEngine.d.ts +1 -0
  71. package/dist/SklEngine.d.ts.map +1 -0
  72. package/dist/SklEngine.js.map +1 -1
  73. package/dist/SklEngineOptions.d.ts +1 -0
  74. package/dist/SklEngineOptions.d.ts.map +1 -0
  75. package/dist/SklEngineOptions.js.map +1 -1
  76. package/dist/constants.d.ts +1 -0
  77. package/dist/constants.d.ts.map +1 -0
  78. package/dist/constants.js.map +1 -1
  79. package/dist/customCapabilities.d.ts +1 -0
  80. package/dist/customCapabilities.d.ts.map +1 -0
  81. package/dist/customCapabilities.js.map +1 -1
  82. package/dist/examples/customCapabilitiesExample.d.ts +1 -0
  83. package/dist/examples/customCapabilitiesExample.d.ts.map +1 -0
  84. package/dist/examples/customCapabilitiesExample.js.map +1 -1
  85. package/dist/hooks/globalHooks.d.ts +1 -0
  86. package/dist/hooks/globalHooks.d.ts.map +1 -0
  87. package/dist/hooks/globalHooks.js.map +1 -1
  88. package/dist/hooks/types.d.ts +1 -0
  89. package/dist/hooks/types.d.ts.map +1 -0
  90. package/dist/hooks/types.js.map +1 -1
  91. package/dist/index.d.ts +1 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js.map +1 -1
  94. package/dist/logger.d.ts +1 -0
  95. package/dist/logger.d.ts.map +1 -0
  96. package/dist/logger.js.map +1 -1
  97. package/dist/mapping/Mapper.d.ts +1 -0
  98. package/dist/mapping/Mapper.d.ts.map +1 -0
  99. package/dist/mapping/Mapper.js.map +1 -1
  100. package/dist/storage/FindOperator.d.ts +1 -0
  101. package/dist/storage/FindOperator.d.ts.map +1 -0
  102. package/dist/storage/FindOperator.js.map +1 -1
  103. package/dist/storage/FindOptionsTypes.d.ts +1 -0
  104. package/dist/storage/FindOptionsTypes.d.ts.map +1 -0
  105. package/dist/storage/FindOptionsTypes.js.map +1 -1
  106. package/dist/storage/GroupOptionTypes.d.ts +1 -0
  107. package/dist/storage/GroupOptionTypes.d.ts.map +1 -0
  108. package/dist/storage/GroupOptionTypes.js.map +1 -1
  109. package/dist/storage/operator/And.d.ts +1 -0
  110. package/dist/storage/operator/And.d.ts.map +1 -0
  111. package/dist/storage/operator/And.js.map +1 -1
  112. package/dist/storage/operator/Contains.d.ts +1 -0
  113. package/dist/storage/operator/Contains.d.ts.map +1 -0
  114. package/dist/storage/operator/Contains.js.map +1 -1
  115. package/dist/storage/operator/Equal.d.ts +1 -0
  116. package/dist/storage/operator/Equal.d.ts.map +1 -0
  117. package/dist/storage/operator/Equal.js.map +1 -1
  118. package/dist/storage/operator/Exists.d.ts +1 -0
  119. package/dist/storage/operator/Exists.d.ts.map +1 -0
  120. package/dist/storage/operator/Exists.js.map +1 -1
  121. package/dist/storage/operator/GreaterThan.d.ts +1 -0
  122. package/dist/storage/operator/GreaterThan.d.ts.map +1 -0
  123. package/dist/storage/operator/GreaterThan.js.map +1 -1
  124. package/dist/storage/operator/GreaterThanOrEqual.d.ts +1 -0
  125. package/dist/storage/operator/GreaterThanOrEqual.d.ts.map +1 -0
  126. package/dist/storage/operator/GreaterThanOrEqual.js.map +1 -1
  127. package/dist/storage/operator/In.d.ts +1 -0
  128. package/dist/storage/operator/In.d.ts.map +1 -0
  129. package/dist/storage/operator/In.js.map +1 -1
  130. package/dist/storage/operator/Inverse.d.ts +1 -0
  131. package/dist/storage/operator/Inverse.d.ts.map +1 -0
  132. package/dist/storage/operator/Inverse.js.map +1 -1
  133. package/dist/storage/operator/InversePath.d.ts +1 -0
  134. package/dist/storage/operator/InversePath.d.ts.map +1 -0
  135. package/dist/storage/operator/InversePath.js.map +1 -1
  136. package/dist/storage/operator/InverseRelation.d.ts +1 -0
  137. package/dist/storage/operator/InverseRelation.d.ts.map +1 -0
  138. package/dist/storage/operator/InverseRelation.js.map +1 -1
  139. package/dist/storage/operator/InverseRelationOrder.d.ts +1 -0
  140. package/dist/storage/operator/InverseRelationOrder.d.ts.map +1 -0
  141. package/dist/storage/operator/InverseRelationOrder.js.map +1 -1
  142. package/dist/storage/operator/LessThan.d.ts +1 -0
  143. package/dist/storage/operator/LessThan.d.ts.map +1 -0
  144. package/dist/storage/operator/LessThan.js.map +1 -1
  145. package/dist/storage/operator/LessThanOrEqual.d.ts +1 -0
  146. package/dist/storage/operator/LessThanOrEqual.d.ts.map +1 -0
  147. package/dist/storage/operator/LessThanOrEqual.js.map +1 -1
  148. package/dist/storage/operator/Not.d.ts +1 -0
  149. package/dist/storage/operator/Not.d.ts.map +1 -0
  150. package/dist/storage/operator/Not.js.map +1 -1
  151. package/dist/storage/operator/OneOrMorePath.d.ts +1 -0
  152. package/dist/storage/operator/OneOrMorePath.d.ts.map +1 -0
  153. package/dist/storage/operator/OneOrMorePath.js.map +1 -1
  154. package/dist/storage/operator/Sequence.d.ts +1 -0
  155. package/dist/storage/operator/Sequence.d.ts.map +1 -0
  156. package/dist/storage/operator/Sequence.js.map +1 -1
  157. package/dist/storage/operator/SequencePath.d.ts +1 -0
  158. package/dist/storage/operator/SequencePath.d.ts.map +1 -0
  159. package/dist/storage/operator/SequencePath.js.map +1 -1
  160. package/dist/storage/operator/ZeroOrMorePath.d.ts +1 -0
  161. package/dist/storage/operator/ZeroOrMorePath.d.ts.map +1 -0
  162. package/dist/storage/operator/ZeroOrMorePath.js.map +1 -1
  163. package/dist/storage/query-adapter/QueryAdapter.d.ts +1 -0
  164. package/dist/storage/query-adapter/QueryAdapter.d.ts.map +1 -0
  165. package/dist/storage/query-adapter/QueryAdapter.js.map +1 -1
  166. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts +1 -0
  167. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.d.ts.map +1 -0
  168. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js +28 -4
  169. package/dist/storage/query-adapter/sparql/SparqlQueryAdapter.js.map +1 -1
  170. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts +1 -0
  171. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.d.ts.map +1 -0
  172. package/dist/storage/query-adapter/sparql/SparqlQueryAdapterOptions.js.map +1 -1
  173. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts +1 -0
  174. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.d.ts.map +1 -0
  175. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js +7 -21
  176. package/dist/storage/query-adapter/sparql/SparqlQueryBuilder.js.map +1 -1
  177. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts +1 -0
  178. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.d.ts.map +1 -0
  179. package/dist/storage/query-adapter/sparql/SparqlUpdateBuilder.js.map +1 -1
  180. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts +1 -0
  181. package/dist/storage/query-adapter/sparql/VariableGenerator.d.ts.map +1 -0
  182. package/dist/storage/query-adapter/sparql/VariableGenerator.js.map +1 -1
  183. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts +1 -0
  184. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.d.ts.map +1 -0
  185. package/dist/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.js.map +1 -1
  186. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts +1 -0
  187. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.d.ts.map +1 -0
  188. package/dist/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.js.map +1 -1
  189. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts +1 -0
  190. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.d.ts.map +1 -0
  191. package/dist/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.js.map +1 -1
  192. package/dist/util/PerformanceLogger.d.ts +1 -0
  193. package/dist/util/PerformanceLogger.d.ts.map +1 -0
  194. package/dist/util/PerformanceLogger.js.map +1 -1
  195. package/dist/util/SparqlUtil.d.ts +1 -0
  196. package/dist/util/SparqlUtil.d.ts.map +1 -0
  197. package/dist/util/SparqlUtil.js.map +1 -1
  198. package/dist/util/TripleUtil.d.ts +1 -0
  199. package/dist/util/TripleUtil.d.ts.map +1 -0
  200. package/dist/util/TripleUtil.js +10 -0
  201. package/dist/util/TripleUtil.js.map +1 -1
  202. package/dist/util/Types.d.ts +1 -0
  203. package/dist/util/Types.d.ts.map +1 -0
  204. package/dist/util/Types.js.map +1 -1
  205. package/dist/util/Util.d.ts +1 -0
  206. package/dist/util/Util.d.ts.map +1 -0
  207. package/dist/util/Util.js.map +1 -1
  208. package/dist/util/Vocabularies/Shared.d.ts +1 -0
  209. package/dist/util/Vocabularies/Shared.d.ts.map +1 -0
  210. package/dist/util/Vocabularies/Shared.js.map +1 -1
  211. package/dist/util/Vocabularies/helper.d.ts +1 -0
  212. package/dist/util/Vocabularies/helper.d.ts.map +1 -0
  213. package/dist/util/Vocabularies/helper.js.map +1 -1
  214. package/dist/util/Vocabularies/index.d.ts +1 -0
  215. package/dist/util/Vocabularies/index.d.ts.map +1 -0
  216. package/dist/util/Vocabularies/index.js.map +1 -1
  217. package/dist/util/safeJsonStringify.d.ts +1 -0
  218. package/dist/util/safeJsonStringify.d.ts.map +1 -0
  219. package/dist/util/safeJsonStringify.js.map +1 -1
  220. package/package.json +6 -3
  221. package/src/JsExecutor/PermissionBuilder.ts +60 -0
  222. package/src/JsExecutor/constants.ts +27 -0
  223. package/src/JsExecutor/denoUtils.ts +20 -0
  224. package/src/JsExecutor/errors.ts +63 -0
  225. package/src/JsExecutor/examples/basic/index.ts +54 -0
  226. package/src/JsExecutor/examples/basic/process.ts +39 -0
  227. package/src/JsExecutor/examples/jsExecutor/README.md +3 -0
  228. package/src/JsExecutor/examples/jsExecutor/index.ts +50 -0
  229. package/src/JsExecutor/examples/jsExecutor/process.ts +79 -0
  230. package/src/JsExecutor/index.ts +19 -0
  231. package/src/JsExecutor/jsExecutor.ts +194 -0
  232. package/src/JsExecutor/jsonRpc/JsonRpcClient.ts +422 -0
  233. package/src/JsExecutor/jsonRpc/JsonRpcServer.ts +454 -0
  234. package/src/JsExecutor/jsonRpc/index.ts +4 -0
  235. package/src/JsExecutor/jsonRpc/types.ts +231 -0
  236. package/src/JsExecutor/transport/README.md +67 -0
  237. package/src/JsExecutor/transport/Transport.ts +106 -0
  238. package/src/JsExecutor/transport/base/BaseTransport.ts +83 -0
  239. package/src/JsExecutor/transport/index.ts +56 -0
  240. package/src/JsExecutor/transport/process/ProcessManager.ts +281 -0
  241. package/src/JsExecutor/transport/stdio/ChildStdioTransport.ts +251 -0
  242. package/src/JsExecutor/transport/stdio/ParentStdioTransport.ts +308 -0
  243. package/src/JsExecutor/transport/utils/MessageUtils.ts +139 -0
  244. package/src/JsExecutor/transport/utils/PollingUtils.ts +114 -0
  245. package/src/JsExecutor/types.ts +130 -0
  246. package/src/SklEngine.ts +1828 -0
  247. package/src/SklEngineOptions.ts +28 -0
  248. package/src/constants.ts +120 -0
  249. package/src/customCapabilities.ts +65 -0
  250. package/src/examples/customCapabilitiesExample.ts +77 -0
  251. package/src/hooks/globalHooks.ts +238 -0
  252. package/src/hooks/types.ts +7 -0
  253. package/src/index.ts +45 -0
  254. package/src/logger.ts +144 -0
  255. package/src/mapping/Mapper.ts +52 -0
  256. package/src/storage/FindOperator.ts +55 -0
  257. package/src/storage/FindOptionsTypes.ts +107 -0
  258. package/src/storage/GroupOptionTypes.ts +32 -0
  259. package/src/storage/operator/And.ts +10 -0
  260. package/src/storage/operator/Contains.ts +9 -0
  261. package/src/storage/operator/Equal.ts +13 -0
  262. package/src/storage/operator/Exists.ts +6 -0
  263. package/src/storage/operator/GreaterThan.ts +12 -0
  264. package/src/storage/operator/GreaterThanOrEqual.ts +12 -0
  265. package/src/storage/operator/In.ts +12 -0
  266. package/src/storage/operator/Inverse.ts +11 -0
  267. package/src/storage/operator/InversePath.ts +17 -0
  268. package/src/storage/operator/InverseRelation.ts +18 -0
  269. package/src/storage/operator/InverseRelationOrder.ts +17 -0
  270. package/src/storage/operator/LessThan.ts +12 -0
  271. package/src/storage/operator/LessThanOrEqual.ts +12 -0
  272. package/src/storage/operator/Not.ts +11 -0
  273. package/src/storage/operator/OneOrMorePath.ts +17 -0
  274. package/src/storage/operator/Sequence.ts +11 -0
  275. package/src/storage/operator/SequencePath.ts +17 -0
  276. package/src/storage/operator/ZeroOrMorePath.ts +17 -0
  277. package/src/storage/query-adapter/QueryAdapter.ts +110 -0
  278. package/src/storage/query-adapter/sparql/SparqlQueryAdapter.ts +400 -0
  279. package/src/storage/query-adapter/sparql/SparqlQueryAdapterOptions.ts +38 -0
  280. package/src/storage/query-adapter/sparql/SparqlQueryBuilder.ts +1524 -0
  281. package/src/storage/query-adapter/sparql/SparqlUpdateBuilder.ts +347 -0
  282. package/src/storage/query-adapter/sparql/VariableGenerator.ts +8 -0
  283. package/src/storage/query-adapter/sparql/query-executor/InMemorySparqlQueryExecutor.ts +135 -0
  284. package/src/storage/query-adapter/sparql/query-executor/SparqlEndpointQueryExecutor.ts +146 -0
  285. package/src/storage/query-adapter/sparql/query-executor/SparqlQueryExecutor.ts +51 -0
  286. package/src/util/PerformanceLogger.ts +286 -0
  287. package/src/util/SparqlUtil.ts +516 -0
  288. package/src/util/TripleUtil.ts +412 -0
  289. package/src/util/Types.ts +399 -0
  290. package/src/util/Util.ts +116 -0
  291. package/src/util/Vocabularies/Shared.ts +99 -0
  292. package/src/util/Vocabularies/helper.ts +14 -0
  293. package/src/util/Vocabularies/index.ts +108 -0
  294. package/src/util/safeJsonStringify.ts +19 -0
  295. package/dist/JsExecutor/transport/StdioTransport.d.ts +0 -0
  296. package/dist/JsExecutor/transport/StdioTransport.js +0 -641
  297. package/dist/JsExecutor/transport/StdioTransport.js.map +0 -1
@@ -0,0 +1,516 @@
1
+ import DataFactory from '@rdfjs/data-model';
2
+ import type { Literal, NamedNode } from '@rdfjs/types';
3
+ import type {
4
+ AggregateExpression,
5
+ AskQuery,
6
+ BgpPattern,
7
+ BindPattern,
8
+ ClearDropOperation,
9
+ ConstructQuery,
10
+ Expression,
11
+ FilterPattern,
12
+ GraphPattern,
13
+ GraphQuads,
14
+ Grouping,
15
+ GroupPattern,
16
+ InsertDeleteOperation,
17
+ IriTerm,
18
+ OperationExpression,
19
+ OptionalPattern,
20
+ Ordering,
21
+ Pattern,
22
+ PropertyPath,
23
+ SelectQuery,
24
+ ServicePattern,
25
+ Triple,
26
+ UnionPattern,
27
+ Update,
28
+ UpdateOperation,
29
+ ValuePatternRow,
30
+ ValuesPattern,
31
+ Variable
32
+ } from 'sparqljs';
33
+ import { EngineConstants } from '../constants';
34
+ import type { RawQueryResult } from '../storage/query-adapter/QueryAdapter';
35
+ import type { SelectVariableQueryResult } from '../storage/query-adapter/sparql/query-executor/SparqlQueryExecutor';
36
+ import { toJSValueFromDataType } from './TripleUtil';
37
+ import { RDF, RDFS } from './Vocabularies';
38
+
39
+ export const rdfTypeNamedNode = DataFactory.namedNode(RDF.type);
40
+ export const rdfsSubClassOfNamedNode = DataFactory.namedNode(RDFS.subClassOf);
41
+ export const subjectNode = DataFactory.variable('subject');
42
+ export const predicateNode = DataFactory.variable('predicate');
43
+ export const objectNode = DataFactory.variable('object');
44
+ export const entityVariable = DataFactory.variable('entity');
45
+ export const rdfTypeVariable = DataFactory.variable('rdfType');
46
+ export const countVariable = DataFactory.variable('count');
47
+ export const now = DataFactory.variable('now');
48
+ export const created = DataFactory.namedNode(EngineConstants.prop.dateCreated);
49
+ export const modified = DataFactory.namedNode(EngineConstants.prop.dateModified);
50
+ export const firstPredicate = DataFactory.namedNode(RDF.first);
51
+ export const restPredicate = DataFactory.namedNode(RDF.rest);
52
+ export const nilPredicate = DataFactory.namedNode(RDF.nil);
53
+ export const anyPredicatePropertyPath = {
54
+ type: 'path',
55
+ pathType: '!',
56
+ items: [ DataFactory.namedNode('') ]
57
+ } as PropertyPath;
58
+
59
+ export const allTypesAndSuperTypesPath: PropertyPath = {
60
+ type: 'path',
61
+ pathType: '/',
62
+ items: [
63
+ rdfTypeNamedNode,
64
+ {
65
+ type: 'path',
66
+ pathType: '*',
67
+ items: [ rdfsSubClassOfNamedNode ]
68
+ }
69
+ ]
70
+ };
71
+
72
+ export const bindNow: BindPattern = {
73
+ type: 'bind',
74
+ variable: now,
75
+ expression: {
76
+ type: 'operation',
77
+ operator: 'now',
78
+ args: []
79
+ }
80
+ };
81
+
82
+ export const dropAll: ClearDropOperation = {
83
+ type: 'drop',
84
+ silent: true,
85
+ graph: {
86
+ type: 'graph',
87
+ all: true
88
+ }
89
+ };
90
+
91
+ export const entityGraphTriple = { subject: subjectNode, predicate: predicateNode, object: objectNode };
92
+
93
+ export function createSparqlGraphQuads(graph: NamedNode, triples: Triple[]): GraphQuads {
94
+ return {
95
+ type: 'graph',
96
+ name: graph,
97
+ triples
98
+ };
99
+ }
100
+
101
+ export function createSparqlClearUpdate(graph: NamedNode): ClearDropOperation {
102
+ return {
103
+ type: 'clear',
104
+ silent: true,
105
+ graph: {
106
+ type: 'graph',
107
+ name: graph
108
+ }
109
+ };
110
+ }
111
+
112
+ export function createSparqlDropUpdate(graph: NamedNode): ClearDropOperation {
113
+ return {
114
+ type: 'drop',
115
+ silent: true,
116
+ graph: {
117
+ type: 'graph',
118
+ name: graph
119
+ }
120
+ };
121
+ }
122
+
123
+ export function createSparqlUpdate(updates: UpdateOperation[]): Update {
124
+ return {
125
+ type: 'update',
126
+ prefixes: {},
127
+ updates
128
+ };
129
+ }
130
+
131
+ export function createSparqlGraphPattern(name: Variable | NamedNode, patterns: Pattern[]): GraphPattern {
132
+ return {
133
+ type: 'graph',
134
+ name,
135
+ patterns
136
+ } as GraphPattern;
137
+ }
138
+
139
+ export function createSparqlConstructQuery(triples: Triple[], where: Pattern[]): ConstructQuery {
140
+ return {
141
+ type: 'query',
142
+ prefixes: {},
143
+ queryType: 'CONSTRUCT',
144
+ template: triples,
145
+ where
146
+ };
147
+ }
148
+
149
+ export function createSparqlCountSelectQuery(
150
+ subject: Variable,
151
+ where: Pattern[],
152
+ order: Ordering[],
153
+ offset?: number
154
+ ): SelectQuery {
155
+ return {
156
+ type: 'query',
157
+ queryType: 'SELECT',
158
+ variables: [
159
+ {
160
+ expression: {
161
+ type: 'aggregate',
162
+ aggregation: 'count',
163
+ distinct: true,
164
+ expression: subject
165
+ } as AggregateExpression,
166
+ variable: countVariable
167
+ }
168
+ ],
169
+ where,
170
+ order: order.length > 0 ? order : undefined,
171
+ offset,
172
+ prefixes: {}
173
+ };
174
+ }
175
+
176
+ export function creteSparqlAskQuery(where: Pattern[]): AskQuery {
177
+ return {
178
+ type: 'query',
179
+ queryType: 'ASK',
180
+ where,
181
+ prefixes: {}
182
+ };
183
+ }
184
+
185
+ export function createSparqlSelectGroup(patterns: Pattern[]): GroupPattern {
186
+ return {
187
+ type: 'group',
188
+ patterns
189
+ };
190
+ }
191
+
192
+ export function createSparqlOptional(patterns: Pattern[]): OptionalPattern {
193
+ return {
194
+ type: 'optional',
195
+ patterns
196
+ };
197
+ }
198
+
199
+ export function createSparqlUnion(patterns: Pattern[]): UnionPattern {
200
+ return {
201
+ type: 'union',
202
+ patterns
203
+ };
204
+ }
205
+
206
+ export function createSparqlBasicGraphPattern(triples: Triple[]): BgpPattern {
207
+ return { type: 'bgp', triples };
208
+ }
209
+
210
+ export function createSparqlOptionalGraphSelection(name: Variable | NamedNode, triples: Triple[]): GraphPattern {
211
+ return {
212
+ type: 'graph',
213
+ name: name as IriTerm,
214
+ patterns: [ createSparqlOptional([ createSparqlBasicGraphPattern(triples) ]) ]
215
+ };
216
+ }
217
+
218
+ export function createSparqlServicePattern(serviceName: string, triples: Triple[]): ServicePattern {
219
+ return {
220
+ type: 'service',
221
+ patterns: [ createSparqlBasicGraphPattern(triples) ],
222
+ name: DataFactory.namedNode(serviceName),
223
+ silent: false
224
+ };
225
+ }
226
+
227
+ export function ensureVariable(variableLike: string | Variable): Variable {
228
+ if (typeof variableLike === 'string' && variableLike.startsWith('?')) {
229
+ return DataFactory.variable(variableLike.slice(1));
230
+ }
231
+ return variableLike as Variable;
232
+ }
233
+
234
+ export function ensureGrouping(variableLike: Variable | string): Grouping {
235
+ return {
236
+ expression: ensureVariable(variableLike)
237
+ } as Grouping;
238
+ }
239
+
240
+ export function createSparqlSelectQuery(
241
+ variable: Variable | Variable[],
242
+ where: Pattern[],
243
+ order: Ordering[],
244
+ group?: Variable | Variable[],
245
+ limit?: number,
246
+ offset?: number
247
+ ): SelectQuery {
248
+ let groupings: Grouping[] | undefined;
249
+ if (group) {
250
+ if (Array.isArray(group)) {
251
+ // eslint-disable-next-line id-length
252
+ groupings = group.map(g => ensureGrouping(g));
253
+ } else {
254
+ groupings = [ ensureGrouping(group) ];
255
+ }
256
+ }
257
+ return {
258
+ type: 'query',
259
+ queryType: 'SELECT',
260
+ variables: Array.isArray(variable) ? variable.map(ensureVariable) : [ ensureVariable(variable) ],
261
+ distinct: true,
262
+ where,
263
+ group: groupings,
264
+ order: order.length > 0 ? order : undefined,
265
+ limit,
266
+ offset,
267
+ prefixes: {}
268
+ };
269
+ }
270
+
271
+ export function createSparqlFilterWithExpression(expression: Expression): FilterPattern {
272
+ return { type: 'filter', expression };
273
+ }
274
+
275
+ export function createFilterPatternFromFilters(filters: Expression[]): FilterPattern {
276
+ if (filters.length > 2) {
277
+ return createFilterPatternFromFilters([
278
+ {
279
+ type: 'operation',
280
+ operator: '&&',
281
+ args: filters.slice(0, 2)
282
+ },
283
+ ...filters.slice(2)
284
+ ]);
285
+ }
286
+ if (filters.length > 1) {
287
+ return createSparqlFilterWithExpression({
288
+ type: 'operation',
289
+ operator: '&&',
290
+ args: filters
291
+ });
292
+ }
293
+ return createSparqlFilterWithExpression(filters[0]);
294
+ }
295
+
296
+ export function createSparqlBindPattern(expression: Expression, variable: Variable): BindPattern {
297
+ return {
298
+ type: 'bind',
299
+ expression,
300
+ variable
301
+ } as BindPattern;
302
+ }
303
+
304
+ export function createSparqlEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
305
+ return {
306
+ type: 'operation',
307
+ operator: '=',
308
+ args: [ leftSide, rightSide ]
309
+ };
310
+ }
311
+
312
+ export function createSparqlLcaseOperation(expression: Expression): OperationExpression {
313
+ return {
314
+ type: 'operation',
315
+ operator: 'lcase',
316
+ args: [ expression ]
317
+ };
318
+ }
319
+
320
+ export function createSparqlContainsOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
321
+ return {
322
+ type: 'operation',
323
+ operator: 'contains',
324
+ args: [ leftSide, rightSide ]
325
+ };
326
+ }
327
+
328
+ export function createSparqlGtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
329
+ return {
330
+ type: 'operation',
331
+ operator: '>',
332
+ args: [ leftSide, rightSide ]
333
+ };
334
+ }
335
+
336
+ export function createSparqlGteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
337
+ return {
338
+ type: 'operation',
339
+ operator: '>=',
340
+ args: [ leftSide, rightSide ]
341
+ };
342
+ }
343
+
344
+ export function createSparqlLtOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
345
+ return {
346
+ type: 'operation',
347
+ operator: '<',
348
+ args: [ leftSide, rightSide ]
349
+ };
350
+ }
351
+
352
+ export function createSparqlLteOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
353
+ return {
354
+ type: 'operation',
355
+ operator: '<=',
356
+ args: [ leftSide, rightSide ]
357
+ };
358
+ }
359
+
360
+ export function createSparqlNotEqualOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
361
+ return {
362
+ type: 'operation',
363
+ operator: '!=',
364
+ args: [ leftSide, rightSide ]
365
+ };
366
+ }
367
+
368
+ export function createSparqlInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
369
+ return {
370
+ type: 'operation',
371
+ operator: 'in',
372
+ args: [ leftSide, rightSide ]
373
+ };
374
+ }
375
+
376
+ export function createSparqlNotInOperation(leftSide: Expression, rightSide: Expression): OperationExpression {
377
+ return {
378
+ type: 'operation',
379
+ operator: 'notin',
380
+ args: [ leftSide, rightSide ]
381
+ };
382
+ }
383
+
384
+ export function createSparqlNotExistsOperation(args: Expression[]): OperationExpression {
385
+ return {
386
+ type: 'operation',
387
+ operator: 'notexists',
388
+ args
389
+ };
390
+ }
391
+
392
+ export function createSparqlExistsOperation(args: Expression[]): OperationExpression {
393
+ return {
394
+ type: 'operation',
395
+ operator: 'exists',
396
+ args
397
+ };
398
+ }
399
+
400
+ export function createSparqlInversePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {
401
+ return {
402
+ type: 'path',
403
+ pathType: '^',
404
+ items: predicates
405
+ };
406
+ }
407
+
408
+ export function createSparqlOrPredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {
409
+ return {
410
+ type: 'path',
411
+ pathType: '|',
412
+ items: predicates
413
+ };
414
+ }
415
+
416
+ export function createSparqlSequencePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {
417
+ return {
418
+ type: 'path',
419
+ pathType: '/',
420
+ items: predicates
421
+ };
422
+ }
423
+
424
+ export function createSparqlZeroOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {
425
+ return {
426
+ type: 'path',
427
+ pathType: '*',
428
+ items: predicates
429
+ };
430
+ }
431
+
432
+ export function createSparqlOneOrMorePredicate(predicates: (IriTerm | PropertyPath)[]): PropertyPath {
433
+ return {
434
+ type: 'path',
435
+ pathType: '+',
436
+ items: predicates
437
+ };
438
+ }
439
+
440
+ export function createSparqlInsertDeleteOperation(
441
+ graph: NamedNode,
442
+ insertionTriples: Triple[],
443
+ deletionTriples: Triple[]
444
+ ): InsertDeleteOperation {
445
+ return {
446
+ updateType: 'insertdelete',
447
+ delete: [ createSparqlGraphQuads(graph, deletionTriples) ],
448
+ insert: [ createSparqlGraphQuads(graph, insertionTriples) ],
449
+ where: [ createSparqlBasicGraphPattern(deletionTriples) ],
450
+ using: {
451
+ default: [ graph ]
452
+ }
453
+ } as InsertDeleteOperation;
454
+ }
455
+
456
+ export function selectQueryResultsAsJSValues<T extends RawQueryResult>(results: SelectVariableQueryResult<T>[]): T[] {
457
+ return results.map(
458
+ (result): T =>
459
+ Object.entries(result).reduce<T>(
460
+ (obj, [ key, value ]): T => ({
461
+ ...obj,
462
+ [key]: value.termType === 'Literal' ? toJSValueFromDataType(value.value, value.datatype?.value) : value.value
463
+
464
+ }),
465
+ // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter
466
+ {} as T
467
+ )
468
+ );
469
+ }
470
+
471
+ export function groupSelectQueryResultsByKey(
472
+ results: SelectVariableQueryResult<any>[]
473
+ ): Record<string, (NamedNode | Literal)[]> {
474
+ return results.reduce(
475
+ (obj: Record<string, (NamedNode | Literal)[]>, result): Record<string, (NamedNode | Literal)[]> => {
476
+ for (const [ key, value ] of Object.entries(result)) {
477
+ if (!(key in obj)) {
478
+ obj[key] = [ value ];
479
+ } else {
480
+ obj[key].push(value);
481
+ }
482
+ }
483
+ return obj;
484
+ },
485
+ {}
486
+ );
487
+ }
488
+
489
+ export function getEntityVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {
490
+ if (!(entityVariable.value in variables)) {
491
+ return [];
492
+ }
493
+ return (variables[entityVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);
494
+ }
495
+
496
+ export function getRdfTypeVariableValuesFromVariables(variables: Record<string, (Literal | NamedNode)[]>): string[] {
497
+ if (!(rdfTypeVariable.value in variables)) {
498
+ return [];
499
+ }
500
+ return (variables[rdfTypeVariable.value] as NamedNode[]).map((namedNode: NamedNode): string => namedNode.value);
501
+ }
502
+
503
+ export function createValuesPatternsForVariables(
504
+ valuesByVariable: Record<string, (NamedNode | Literal)[]>
505
+ ): ValuesPattern[] {
506
+ return Object.entries(valuesByVariable).map(
507
+ ([ variableName, values ]): ValuesPattern => ({
508
+ type: 'values',
509
+ values: values.map(
510
+ (value): ValuePatternRow => ({
511
+ [`?${variableName}`]: value
512
+ })
513
+ )
514
+ })
515
+ );
516
+ }