@comake/skl-js-engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE.md +4 -0
  2. package/README.md +46 -0
  3. package/dist/Skql.d.ts +68 -0
  4. package/dist/Skql.js +351 -0
  5. package/dist/Skql.js.map +1 -0
  6. package/dist/index.d.ts +22 -0
  7. package/dist/index.js +44 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/mapping/Mapper.d.ts +14 -0
  10. package/dist/mapping/Mapper.js +64 -0
  11. package/dist/mapping/Mapper.js.map +1 -0
  12. package/dist/sklEngine.d.ts +68 -0
  13. package/dist/sklEngine.js +351 -0
  14. package/dist/sklEngine.js.map +1 -0
  15. package/dist/storage/AggregateOperator.d.ts +12 -0
  16. package/dist/storage/AggregateOperator.js +17 -0
  17. package/dist/storage/AggregateOperator.js.map +1 -0
  18. package/dist/storage/BaseQueryAdapterOptions.d.ts +19 -0
  19. package/dist/storage/BaseQueryAdapterOptions.js +3 -0
  20. package/dist/storage/BaseQueryAdapterOptions.js.map +1 -0
  21. package/dist/storage/FindOperator.d.ts +12 -0
  22. package/dist/storage/FindOperator.js +17 -0
  23. package/dist/storage/FindOperator.js.map +1 -0
  24. package/dist/storage/FindOptionsTypes.d.ts +45 -0
  25. package/dist/storage/FindOptionsTypes.js +3 -0
  26. package/dist/storage/FindOptionsTypes.js.map +1 -0
  27. package/dist/storage/MemoryQueryAdapter.d.ts +28 -0
  28. package/dist/storage/MemoryQueryAdapter.js +215 -0
  29. package/dist/storage/MemoryQueryAdapter.js.map +1 -0
  30. package/dist/storage/QueryAdapter.d.ts +74 -0
  31. package/dist/storage/QueryAdapter.js +3 -0
  32. package/dist/storage/QueryAdapter.js.map +1 -0
  33. package/dist/storage/SparqlQueryAdapter.d.ts +34 -0
  34. package/dist/storage/SparqlQueryAdapter.js +229 -0
  35. package/dist/storage/SparqlQueryAdapter.js.map +1 -0
  36. package/dist/storage/aggregate/Max.d.ts +2 -0
  37. package/dist/storage/aggregate/Max.js +13 -0
  38. package/dist/storage/aggregate/Max.js.map +1 -0
  39. package/dist/storage/memory/MemoryQueryAdapter.d.ts +36 -0
  40. package/dist/storage/memory/MemoryQueryAdapter.js +246 -0
  41. package/dist/storage/memory/MemoryQueryAdapter.js.map +1 -0
  42. package/dist/storage/memory/MemoryQueryAdapterOptions.d.ts +12 -0
  43. package/dist/storage/memory/MemoryQueryAdapterOptions.js +3 -0
  44. package/dist/storage/memory/MemoryQueryAdapterOptions.js.map +1 -0
  45. package/dist/storage/operator/Equal.d.ts +2 -0
  46. package/dist/storage/operator/Equal.js +13 -0
  47. package/dist/storage/operator/Equal.js.map +1 -0
  48. package/dist/storage/operator/GreaterThan.d.ts +2 -0
  49. package/dist/storage/operator/GreaterThan.js +13 -0
  50. package/dist/storage/operator/GreaterThan.js.map +1 -0
  51. package/dist/storage/operator/GreaterThanOrEqual.d.ts +2 -0
  52. package/dist/storage/operator/GreaterThanOrEqual.js +13 -0
  53. package/dist/storage/operator/GreaterThanOrEqual.js.map +1 -0
  54. package/dist/storage/operator/In.d.ts +2 -0
  55. package/dist/storage/operator/In.js +13 -0
  56. package/dist/storage/operator/In.js.map +1 -0
  57. package/dist/storage/operator/Inverse.d.ts +2 -0
  58. package/dist/storage/operator/Inverse.js +13 -0
  59. package/dist/storage/operator/Inverse.js.map +1 -0
  60. package/dist/storage/operator/LessThan.d.ts +2 -0
  61. package/dist/storage/operator/LessThan.js +13 -0
  62. package/dist/storage/operator/LessThan.js.map +1 -0
  63. package/dist/storage/operator/LessThanOrEqual.d.ts +2 -0
  64. package/dist/storage/operator/LessThanOrEqual.js +13 -0
  65. package/dist/storage/operator/LessThanOrEqual.js.map +1 -0
  66. package/dist/storage/operator/Not.d.ts +2 -0
  67. package/dist/storage/operator/Not.js +13 -0
  68. package/dist/storage/operator/Not.js.map +1 -0
  69. package/dist/storage/sparql/SparqlQueryAdapter.d.ts +40 -0
  70. package/dist/storage/sparql/SparqlQueryAdapter.js +235 -0
  71. package/dist/storage/sparql/SparqlQueryAdapter.js.map +1 -0
  72. package/dist/storage/sparql/SparqlQueryAdapterOptions.d.ts +15 -0
  73. package/dist/storage/sparql/SparqlQueryAdapterOptions.js +3 -0
  74. package/dist/storage/sparql/SparqlQueryAdapterOptions.js.map +1 -0
  75. package/dist/storage/sparql/SparqlQueryBuilder.d.ts +81 -0
  76. package/dist/storage/sparql/SparqlQueryBuilder.js +553 -0
  77. package/dist/storage/sparql/SparqlQueryBuilder.js.map +1 -0
  78. package/dist/storage/sparql/SparqlUpdateBuilder.d.ts +31 -0
  79. package/dist/storage/sparql/SparqlUpdateBuilder.js +190 -0
  80. package/dist/storage/sparql/SparqlUpdateBuilder.js.map +1 -0
  81. package/dist/storage/sparql/VariableGenerator.d.ts +4 -0
  82. package/dist/storage/sparql/VariableGenerator.js +14 -0
  83. package/dist/storage/sparql/VariableGenerator.js.map +1 -0
  84. package/dist/util/TripleUtil.d.ts +21 -0
  85. package/dist/util/TripleUtil.js +221 -0
  86. package/dist/util/TripleUtil.js.map +1 -0
  87. package/dist/util/Types.d.ts +10 -0
  88. package/dist/util/Types.js +3 -0
  89. package/dist/util/Types.js.map +1 -0
  90. package/dist/util/Util.d.ts +15 -0
  91. package/dist/util/Util.js +94 -0
  92. package/dist/util/Util.js.map +1 -0
  93. package/dist/util/VariableGenerator.d.ts +5 -0
  94. package/dist/util/VariableGenerator.js +29 -0
  95. package/dist/util/VariableGenerator.js.map +1 -0
  96. package/dist/util/Vocabularies.d.ts +12 -0
  97. package/dist/util/Vocabularies.js +118 -0
  98. package/dist/util/Vocabularies.js.map +1 -0
  99. package/package.json +92 -0
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SparqlUpdateBuilder = void 0;
7
+ const rmlmapper_js_1 = require("@comake/rmlmapper-js");
8
+ const data_model_1 = __importDefault(require("@rdfjs/data-model"));
9
+ const TripleUtil_1 = require("../../util/TripleUtil");
10
+ const Util_1 = require("../../util/Util");
11
+ const Vocabularies_1 = require("../../util/Vocabularies");
12
+ const VariableGenerator_1 = require("./VariableGenerator");
13
+ class SparqlUpdateBuilder {
14
+ constructor(args) {
15
+ this.variableGenerator = new VariableGenerator_1.VariableGenerator();
16
+ this.setTimestamps = args?.setTimestamps ?? false;
17
+ }
18
+ buildUpdate(entityOrEntities) {
19
+ const entities = (0, Util_1.ensureArray)(entityOrEntities);
20
+ const { insertions, deletions } = this.entitiesToGraphDeletionsAndInsertions(entities);
21
+ return this.buildUpdateWithInsertionsAndDeletions(deletions, insertions);
22
+ }
23
+ buildDelete(entityOrEntities) {
24
+ const entities = (0, Util_1.ensureArray)(entityOrEntities);
25
+ const deletions = this.entitiesToGraphDeletions(entities);
26
+ return this.buildUpdateWithInsertionsAndDeletions(deletions);
27
+ }
28
+ buildDeleteAll() {
29
+ const updates = [{
30
+ updateType: 'deletewhere',
31
+ delete: [{
32
+ type: 'bgp',
33
+ triples: [{ subject: TripleUtil_1.subjectNode, predicate: TripleUtil_1.predicateNode, object: TripleUtil_1.objectNode }],
34
+ }],
35
+ }];
36
+ return this.sparqlUpdate(updates);
37
+ }
38
+ entitiesToGraphDeletionsAndInsertions(entities) {
39
+ return entities.reduce((obj, entity) => {
40
+ const entityGraphName = data_model_1.default.namedNode(entity['@id']);
41
+ obj.deletions.push(this.entityToGraphDeletion(entityGraphName));
42
+ obj.insertions.push(this.entityToGraphInsertion(entityGraphName, entity));
43
+ return obj;
44
+ }, { insertions: [], deletions: [] });
45
+ }
46
+ entitiesToGraphDeletions(entities) {
47
+ return entities.reduce((arr, entity) => {
48
+ const entityGraphName = data_model_1.default.namedNode(entity['@id']);
49
+ arr.push(this.entityToGraphDeletion(entityGraphName));
50
+ return arr;
51
+ }, []);
52
+ }
53
+ entityToGraphInsertion(entityGraphName, entity) {
54
+ const triples = this.entityToTriples(entity, entityGraphName);
55
+ return {
56
+ type: 'graph',
57
+ name: entityGraphName,
58
+ triples,
59
+ };
60
+ }
61
+ entityToGraphDeletion(entityGraphName) {
62
+ const subject = data_model_1.default.variable(this.variableGenerator.getNext());
63
+ const predicate = data_model_1.default.variable(this.variableGenerator.getNext());
64
+ const object = data_model_1.default.variable(this.variableGenerator.getNext());
65
+ return {
66
+ type: 'graph',
67
+ name: entityGraphName,
68
+ triples: [{ subject, predicate, object }],
69
+ };
70
+ }
71
+ entityToTriples(entity, subject) {
72
+ const entityTriples = Object.entries(entity).reduce((triples, [key, value]) => {
73
+ const values = (0, Util_1.ensureArray)(value);
74
+ if (key !== '@id') {
75
+ if (key === '@type') {
76
+ return [
77
+ ...triples,
78
+ ...this.buildTriplesWithSubjectPredicateAndIriValue(subject, TripleUtil_1.rdfTypeNamedNode, values),
79
+ ];
80
+ }
81
+ return [
82
+ ...triples,
83
+ ...this.buildTriplesForSubjectPredicateAndValues(subject, key, values),
84
+ ];
85
+ }
86
+ return triples;
87
+ }, []);
88
+ if (this.setTimestamps && subject.termType === 'NamedNode') {
89
+ if (!entity[Vocabularies_1.DCTERMS.created]) {
90
+ entityTriples.push({ subject, predicate: TripleUtil_1.created, object: TripleUtil_1.now });
91
+ }
92
+ entityTriples.push({ subject, predicate: TripleUtil_1.modified, object: TripleUtil_1.now });
93
+ }
94
+ return entityTriples;
95
+ }
96
+ buildTriplesForSubjectPredicateAndValues(subject, predicate, values) {
97
+ const predicateTerm = data_model_1.default.namedNode(predicate);
98
+ return values.flatMap((value) => this.buildTriplesWithSubjectPredicateAndValue(subject, predicateTerm, value));
99
+ }
100
+ buildTriplesWithSubjectPredicateAndIriValue(subject, predicate, values) {
101
+ return values.map((valueItem) => ({
102
+ subject,
103
+ predicate,
104
+ object: data_model_1.default.namedNode(valueItem),
105
+ }));
106
+ }
107
+ buildTriplesWithSubjectPredicateAndValue(subject, predicate, value) {
108
+ const isObject = typeof value === 'object';
109
+ if (isObject) {
110
+ if ('@value' in value) {
111
+ return [{ subject, predicate, object: this.jsonLdValueObjectToLiteral(value) }];
112
+ }
113
+ const isReferenceObject = '@id' in value;
114
+ const isBlankNodeReferenceObject = !isReferenceObject || value['@id'].startsWith('_:');
115
+ if (isBlankNodeReferenceObject) {
116
+ return this.buildTriplesForBlankNode(subject, predicate, value);
117
+ }
118
+ if (isReferenceObject) {
119
+ return [{ subject, predicate, object: data_model_1.default.namedNode(value['@id']) }];
120
+ }
121
+ }
122
+ return [{ subject, predicate, object: (0, TripleUtil_1.valueToLiteral)(value) }];
123
+ }
124
+ jsonLdValueObjectToLiteral(value) {
125
+ if (typeof value['@value'] === 'object') {
126
+ return data_model_1.default.literal(JSON.stringify(value['@value']), rmlmapper_js_1.RDF.JSON);
127
+ }
128
+ if (value['@language']) {
129
+ return data_model_1.default.literal(value['@value'], value['@language']);
130
+ }
131
+ if (value['@type']) {
132
+ return data_model_1.default.literal(value['@value'].toString(), value['@type']);
133
+ }
134
+ return (0, TripleUtil_1.valueToLiteral)(value['@value']);
135
+ }
136
+ buildTriplesForBlankNode(subject, predicate, value) {
137
+ const blankNode = data_model_1.default.blankNode(this.variableGenerator.getNext());
138
+ return [
139
+ { subject, predicate, object: blankNode },
140
+ ...this.entityToTriples(value, blankNode),
141
+ ];
142
+ }
143
+ buildUpdateWithInsertionsAndDeletions(deletions, insertions = []) {
144
+ const updates = this.createUpdatesFromInsertionsAndDeletions(deletions, insertions);
145
+ return this.sparqlUpdate(updates);
146
+ }
147
+ createUpdatesFromInsertionsAndDeletions(deletions, insertions) {
148
+ const updates = [];
149
+ if (deletions.length > 0) {
150
+ updates.push({
151
+ updateType: 'deletewhere',
152
+ delete: deletions,
153
+ });
154
+ }
155
+ if (insertions.length > 0) {
156
+ const insert = { updateType: 'insert', insert: insertions };
157
+ if (this.setTimestamps) {
158
+ insert.where = [this.selectNow()];
159
+ }
160
+ updates.push(insert);
161
+ }
162
+ return updates;
163
+ }
164
+ sparqlUpdate(updates) {
165
+ return {
166
+ type: 'update',
167
+ prefixes: {},
168
+ updates,
169
+ };
170
+ }
171
+ selectNow() {
172
+ return {
173
+ type: 'query',
174
+ queryType: 'SELECT',
175
+ prefixes: {},
176
+ variables: [TripleUtil_1.now],
177
+ where: [{
178
+ type: 'bind',
179
+ variable: TripleUtil_1.now,
180
+ expression: {
181
+ type: 'operation',
182
+ operator: 'now',
183
+ args: [],
184
+ },
185
+ }],
186
+ };
187
+ }
188
+ }
189
+ exports.SparqlUpdateBuilder = SparqlUpdateBuilder;
190
+ //# sourceMappingURL=SparqlUpdateBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SparqlUpdateBuilder.js","sourceRoot":"","sources":["../../../src/storage/sparql/SparqlUpdateBuilder.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA2C;AAC3C,mEAA4C;AAW5C,sDAS+B;AAE/B,0CAA8C;AAC9C,0DAAkD;AAClD,2DAAwD;AAWxD,MAAa,mBAAmB;IAI9B,YAAmB,IAA8B;QAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;IACpD,CAAC;IAEM,WAAW,CAAC,gBAAmC;QACpD,MAAM,QAAQ,GAAG,IAAA,kBAAW,EAAC,gBAAgB,CAAC,CAAC;QAC/C,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,qCAAqC,CAAC,QAAQ,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,qCAAqC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;IAEM,WAAW,CAAC,gBAAmC;QACpD,MAAM,QAAQ,GAAG,IAAA,kBAAW,EAAC,gBAAgB,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,qCAAqC,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAEM,cAAc;QACnB,MAAM,OAAO,GAAG,CAAC;gBACf,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,CAAC;wBACP,IAAI,EAAE,KAAK;wBACX,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,wBAAW,EAAE,SAAS,EAAE,0BAAa,EAAE,MAAM,EAAE,uBAAU,EAAE,CAAC;qBAClF,CAAC;aACH,CAA4B,CAAC;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEO,qCAAqC,CAC3C,QAAkB;QAElB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAwB,EAAE,MAAM,EAAuB,EAAE;YAC/E,MAAM,eAAe,GAAG,oBAAW,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;YAChE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1E,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC,CAAC;IACvC,CAAC;IAEO,wBAAwB,CAC9B,QAAkB;QAElB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAiB,EAAE,MAAM,EAAgB,EAAE;YACjE,MAAM,eAAe,GAAG,oBAAW,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;YACtD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEO,sBAAsB,CAAC,eAA0B,EAAE,MAAc;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC9D,OAAO;YACL,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,eAAe;YACrB,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,eAA0B;QACtD,MAAM,OAAO,GAAG,oBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,oBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,oBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,OAAO;YACL,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,MAAkB,EAAE,OAA8B;QACxE,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAiB,EAAE,CAAE,GAAG,EAAE,KAAK,CAAE,EAAY,EAAE;YAClG,MAAM,MAAM,GAAG,IAAA,kBAAW,EAAC,KAAK,CAAC,CAAC;YAClC,IAAI,GAAG,KAAK,KAAK,EAAE;gBACjB,IAAI,GAAG,KAAK,OAAO,EAAE;oBACnB,OAAO;wBACL,GAAG,OAAO;wBACV,GAAG,IAAI,CAAC,2CAA2C,CACjD,OAAO,EACP,6BAAgB,EAChB,MAAkB,CACnB;qBACF,CAAC;iBACH;gBACD,OAAO;oBACL,GAAG,OAAO;oBACV,GAAG,IAAI,CAAC,wCAAwC,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC;iBACvE,CAAC;aACH;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,KAAK,WAAW,EAAE;YAC1D,IAAI,CAAC,MAAM,CAAC,sBAAO,CAAC,OAAO,CAAC,EAAE;gBAC5B,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,oBAAO,EAAE,MAAM,EAAE,gBAAG,EAAE,CAAC,CAAC;aAClE;YACD,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAQ,EAAE,MAAM,EAAE,gBAAG,EAAE,CAAC,CAAC;SACnE;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,wCAAwC,CAC9C,OAA8B,EAC9B,SAAiB,EACjB,MAAa;QAEb,MAAM,aAAa,GAAG,oBAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,EAAY,EAAE,CAC7C,IAAI,CAAC,wCAAwC,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IAEO,2CAA2C,CACjD,OAA8B,EAC9B,SAAoB,EACpB,MAAgB;QAEhB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAU,EAAE,CAAC,CAAC;YACxC,OAAO;YACP,SAAS;YACT,MAAM,EAAE,oBAAW,CAAC,SAAS,CAAC,SAAS,CAAC;SAC9B,CAAA,CAAC,CAAC;IAChB,CAAC;IAEO,wCAAwC,CAC9C,OAA8B,EAC9B,SAAoB,EACpB,KAAU;QAEV,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;QAC3C,IAAI,QAAQ,EAAE;YACZ,IAAI,QAAQ,IAAI,KAAK,EAAE;gBACrB,OAAO,CAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAY,CAAE,CAAC;aAC7F;YAED,MAAM,iBAAiB,GAAG,KAAK,IAAI,KAAK,CAAC;YACzC,MAAM,0BAA0B,GAAG,CAAC,iBAAiB,IAAK,KAAK,CAAC,KAAK,CAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnG,IAAI,0BAA0B,EAAE;gBAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAmB,CAAC,CAAC;aAC/E;YACD,IAAI,iBAAiB,EAAE;gBACrB,OAAO,CAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAW,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAY,CAAE,CAAC;aAC1F;SACF;QACD,OAAO,CAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAA,2BAAc,EAAC,KAAK,CAAC,EAAY,CAAE,CAAC;IAC7E,CAAC;IAEO,0BAA0B,CAAC,KAAkB;QACnD,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;YACvC,OAAO,oBAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,kBAAG,CAAC,IAAI,CAAC,CAAC;SACvE;QACD,IAAK,KAAa,CAAC,WAAW,CAAC,EAAE;YAC/B,OAAO,oBAAW,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAW,EAAG,KAAa,CAAC,WAAW,CAAC,CAAC,CAAC;SACpF;QACD,IAAK,KAAa,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,oBAAW,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAG,KAAa,CAAC,OAAO,CAAC,CAAC,CAAC;SACjF;QACD,OAAO,IAAA,2BAAc,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,wBAAwB,CAAC,OAA8B,EAAE,SAAoB,EAAE,KAAiB;QACtG,MAAM,SAAS,GAAG,oBAAW,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,OAAO;YACL,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;YACzC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC;SAC1C,CAAC;IACJ,CAAC;IAEO,qCAAqC,CAC3C,SAAuB,EACvB,aAA2B,EAAE;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,uCAAuC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEO,uCAAuC,CAC7C,SAAuB,EACvB,UAAwB;QAExB,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,SAAS;aACO,CAAC,CAAC;SAC7B;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAA2B,CAAC;YACrF,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,MAAM,CAAC,KAAK,GAAG,CAAE,IAAI,CAAC,SAAS,EAAE,CAAE,CAAC;aACrC;YACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtB;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,YAAY,CAAC,OAA0B;QAC7C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,OAAO;YACL,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,CAAE,gBAAG,CAAE;YAClB,KAAK,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,gBAAG;oBACb,UAAU,EAAE;wBACV,IAAI,EAAE,WAAW;wBACjB,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,EAAE;qBACT;iBACF,CAAC;SACH,CAAC;IACJ,CAAC;CACF;AAhOD,kDAgOC"}
@@ -0,0 +1,4 @@
1
+ export declare class VariableGenerator {
2
+ private currentVariable;
3
+ getNext(): string;
4
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VariableGenerator = void 0;
4
+ class VariableGenerator {
5
+ constructor() {
6
+ this.currentVariable = 0;
7
+ }
8
+ getNext() {
9
+ this.currentVariable += 1;
10
+ return `c${this.currentVariable}`;
11
+ }
12
+ }
13
+ exports.VariableGenerator = VariableGenerator;
14
+ //# sourceMappingURL=VariableGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VariableGenerator.js","sourceRoot":"","sources":["../../../src/storage/sparql/VariableGenerator.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;IAA9B;QACU,oBAAe,GAAG,CAAC,CAAC;IAM9B,CAAC;IAJQ,OAAO;QACZ,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;IACpC,CAAC;CACF;AAPD,8CAOC"}
@@ -0,0 +1,21 @@
1
+ import type { Quad, Literal } from '@rdfjs/types';
2
+ import type { GraphObject, NodeObject } from 'jsonld';
3
+ import type { Frame } from 'jsonld/jsonld-spec';
4
+ import type { PropertyPath } from 'sparqljs';
5
+ import type { FindOptionsRelations } from '../storage/FindOptionsTypes';
6
+ import type { OrArray } from './Types';
7
+ export declare const rdfTypeNamedNode: import("@rdfjs/types").NamedNode<"http://www.w3.org/1999/02/22-rdf-syntax-ns#type">;
8
+ export declare const rdfsSubClassOfNamedNode: import("@rdfjs/types").NamedNode<"http://www.w3.org/2000/01/rdf-schema#subClassOf">;
9
+ export declare const subjectNode: import("@rdfjs/types").Variable;
10
+ export declare const predicateNode: import("@rdfjs/types").Variable;
11
+ export declare const objectNode: import("@rdfjs/types").Variable;
12
+ export declare const entityVariable: import("@rdfjs/types").Variable;
13
+ export declare const countVariable: import("@rdfjs/types").Variable;
14
+ export declare const now: import("@rdfjs/types").Variable;
15
+ export declare const created: import("@rdfjs/types").NamedNode<"http://purl.org/dc/terms/created">;
16
+ export declare const modified: import("@rdfjs/types").NamedNode<"http://purl.org/dc/terms/modified">;
17
+ export declare const allTypesAndSuperTypesPath: PropertyPath;
18
+ export declare function toJSValueFromDataType(value: string, dataType: string): number | boolean | string;
19
+ export declare function triplesToJsonld(triples: Quad[], relations?: FindOptionsRelations, orderedNodeIds?: string[]): Promise<OrArray<NodeObject>>;
20
+ export declare function triplesToJsonldWithFrame(triples: Quad[], frame?: Frame, relations?: FindOptionsRelations): Promise<GraphObject>;
21
+ export declare function valueToLiteral(value: string | boolean | number | Date): Literal;
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.valueToLiteral = exports.triplesToJsonldWithFrame = exports.triplesToJsonld = exports.toJSValueFromDataType = exports.allTypesAndSuperTypesPath = exports.modified = exports.created = exports.now = exports.countVariable = exports.entityVariable = exports.objectNode = exports.predicateNode = exports.subjectNode = exports.rdfsSubClassOfNamedNode = exports.rdfTypeNamedNode = void 0;
30
+ /* eslint-disable @typescript-eslint/naming-convention */
31
+ const data_model_1 = __importDefault(require("@rdfjs/data-model"));
32
+ const jsonld = __importStar(require("jsonld"));
33
+ const Vocabularies_1 = require("./Vocabularies");
34
+ exports.rdfTypeNamedNode = data_model_1.default.namedNode(Vocabularies_1.RDF.type);
35
+ exports.rdfsSubClassOfNamedNode = data_model_1.default.namedNode(Vocabularies_1.RDFS.subClassOf);
36
+ exports.subjectNode = data_model_1.default.variable('subject');
37
+ exports.predicateNode = data_model_1.default.variable('predicate');
38
+ exports.objectNode = data_model_1.default.variable('object');
39
+ exports.entityVariable = data_model_1.default.variable('entity');
40
+ exports.countVariable = data_model_1.default.variable('count');
41
+ exports.now = data_model_1.default.variable('now');
42
+ exports.created = data_model_1.default.namedNode(Vocabularies_1.DCTERMS.created);
43
+ exports.modified = data_model_1.default.namedNode(Vocabularies_1.DCTERMS.modified);
44
+ const BLANK_NODE_PREFIX = '_:';
45
+ exports.allTypesAndSuperTypesPath = {
46
+ type: 'path',
47
+ pathType: '/',
48
+ items: [
49
+ exports.rdfTypeNamedNode,
50
+ {
51
+ type: 'path',
52
+ pathType: '*',
53
+ items: [exports.rdfsSubClassOfNamedNode],
54
+ },
55
+ ],
56
+ };
57
+ function toJSValueFromDataType(value, dataType) {
58
+ switch (dataType) {
59
+ case Vocabularies_1.XSD.int:
60
+ case Vocabularies_1.XSD.positiveInteger:
61
+ case Vocabularies_1.XSD.negativeInteger:
62
+ case Vocabularies_1.XSD.integer: {
63
+ return Number.parseInt(value, 10);
64
+ }
65
+ case Vocabularies_1.XSD.boolean: {
66
+ if (value === 'true') {
67
+ return true;
68
+ }
69
+ if (value === 'false') {
70
+ return false;
71
+ }
72
+ return value;
73
+ }
74
+ case Vocabularies_1.XSD.double:
75
+ case Vocabularies_1.XSD.decimal:
76
+ case Vocabularies_1.XSD.float: {
77
+ return Number.parseFloat(value);
78
+ }
79
+ case Vocabularies_1.RDF.JSON:
80
+ return JSON.parse(value);
81
+ default: {
82
+ return value;
83
+ }
84
+ }
85
+ }
86
+ exports.toJSValueFromDataType = toJSValueFromDataType;
87
+ function toJsonLdObject(object) {
88
+ if (object.termType === 'Literal') {
89
+ if (object.language && object.language.length > 0) {
90
+ return {
91
+ '@value': object.value,
92
+ '@language': object.language,
93
+ };
94
+ }
95
+ return {
96
+ '@value': toJSValueFromDataType(object.value, object.datatype.value),
97
+ '@type': object.datatype.value === Vocabularies_1.RDF.JSON ? '@json' : object.datatype.value,
98
+ };
99
+ }
100
+ if (object.termType === 'BlankNode') {
101
+ return { '@id': `_:${object.value}` };
102
+ }
103
+ return { '@id': object.value };
104
+ }
105
+ function toJsonLdSubject(object) {
106
+ if (object.termType === 'BlankNode') {
107
+ return `_:${object.value}`;
108
+ }
109
+ return object.value;
110
+ }
111
+ function relationsToFrame(relations) {
112
+ return Object.entries(relations).reduce((obj, [field, value]) => ({
113
+ ...obj,
114
+ [field]: typeof value === 'boolean' ? {} : relationsToFrame(value),
115
+ }), {});
116
+ }
117
+ function triplesToNodes(triples) {
118
+ const nodeIdOrder = [];
119
+ const nodesById = triples.reduce((obj, triple) => {
120
+ const subject = toJsonLdSubject(triple.subject);
121
+ const isTypePredicate = triple.predicate.value === Vocabularies_1.RDF.type;
122
+ const predicate = isTypePredicate ? '@type' : triple.predicate.value;
123
+ const object = isTypePredicate ? triple.object.value : toJsonLdObject(triple.object);
124
+ if (obj[subject]) {
125
+ if (obj[subject][predicate]) {
126
+ if (Array.isArray(obj[subject][predicate])) {
127
+ obj[subject][predicate].push(object);
128
+ }
129
+ else {
130
+ obj[subject][predicate] = [
131
+ obj[subject][predicate],
132
+ object,
133
+ ];
134
+ }
135
+ }
136
+ else {
137
+ obj[subject][predicate] = object;
138
+ }
139
+ }
140
+ else {
141
+ obj[subject] = {
142
+ '@id': subject,
143
+ [predicate]: object,
144
+ };
145
+ if (!subject.startsWith(BLANK_NODE_PREFIX)) {
146
+ nodeIdOrder.push(subject);
147
+ }
148
+ }
149
+ return obj;
150
+ }, {});
151
+ return { nodesById, nodeIdOrder };
152
+ }
153
+ async function frameWithRelationsOrNonBlankNodes(nodesById, relations, frame) {
154
+ let appliedFrame;
155
+ if (!frame) {
156
+ if (relations) {
157
+ appliedFrame = relationsToFrame(relations);
158
+ }
159
+ else {
160
+ const nonBlankNodes = Object.keys(nodesById)
161
+ .filter((nodeId) => !nodeId.startsWith(BLANK_NODE_PREFIX));
162
+ appliedFrame = { '@id': nonBlankNodes };
163
+ }
164
+ }
165
+ else {
166
+ appliedFrame = frame;
167
+ }
168
+ return await jsonld.frame({ '@graph': Object.values(nodesById) }, appliedFrame);
169
+ }
170
+ function sortNodesByOrder(nodes, nodeIdOrder) {
171
+ return nodes
172
+ .sort((aNode, bNode) => nodeIdOrder.indexOf(aNode['@id']) - nodeIdOrder.indexOf(bNode['@id']));
173
+ }
174
+ function sortGraphOfNodeObject(graphObject, nodeIdOrder) {
175
+ return {
176
+ ...graphObject,
177
+ '@graph': sortNodesByOrder(graphObject['@graph'], nodeIdOrder),
178
+ };
179
+ }
180
+ async function triplesToJsonld(triples, relations, orderedNodeIds) {
181
+ const { nodeIdOrder, nodesById } = triplesToNodes(triples);
182
+ const framed = await frameWithRelationsOrNonBlankNodes(nodesById, relations);
183
+ if ('@graph' in framed) {
184
+ return sortNodesByOrder(framed['@graph'], orderedNodeIds ?? nodeIdOrder);
185
+ }
186
+ return framed;
187
+ }
188
+ exports.triplesToJsonld = triplesToJsonld;
189
+ async function triplesToJsonldWithFrame(triples, frame, relations) {
190
+ const { nodeIdOrder, nodesById } = triplesToNodes(triples);
191
+ const framed = await frameWithRelationsOrNonBlankNodes(nodesById, relations, frame);
192
+ if ('@graph' in framed) {
193
+ return sortGraphOfNodeObject(framed, nodeIdOrder);
194
+ }
195
+ const { '@context': context, ...framedWithoutContext } = framed;
196
+ const graphObject = {
197
+ '@graph': [framedWithoutContext],
198
+ };
199
+ if (context) {
200
+ graphObject['@context'] = context;
201
+ }
202
+ return graphObject;
203
+ }
204
+ exports.triplesToJsonldWithFrame = triplesToJsonldWithFrame;
205
+ function valueToLiteral(value) {
206
+ if (typeof value === 'number') {
207
+ if (Number.isInteger(value)) {
208
+ return data_model_1.default.literal(value.toString(), Vocabularies_1.XSD.integer);
209
+ }
210
+ return data_model_1.default.literal(value.toString(), Vocabularies_1.XSD.decimal);
211
+ }
212
+ if (typeof value === 'boolean') {
213
+ return data_model_1.default.literal(value.toString(), Vocabularies_1.XSD.boolean);
214
+ }
215
+ if (value instanceof Date) {
216
+ return data_model_1.default.literal(value.toISOString(), Vocabularies_1.XSD.dateTime);
217
+ }
218
+ return data_model_1.default.literal(value.toString());
219
+ }
220
+ exports.valueToLiteral = valueToLiteral;
221
+ //# sourceMappingURL=TripleUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TripleUtil.js","sourceRoot":"","sources":["../../src/util/TripleUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { GraphObject, IdMap, IncludedBlock, IndexMap, LanguageMap, ListObject, NodeObject, SetObject, TypeMap, ValueObject } from 'jsonld';
2
+ export declare type PossibleArrayFieldValues = boolean | number | string | NodeObject | GraphObject | ValueObject | ListObject | SetObject;
3
+ export declare type EntityFieldSingularValue = boolean | number | string | NodeObject | GraphObject | ValueObject | ListObject | SetObject;
4
+ export declare type EntityFieldValue = OrArray<EntityFieldSingularValue> | LanguageMap | IndexMap | IncludedBlock | IdMap | TypeMap | NodeObject[keyof NodeObject];
5
+ export interface Entity {
6
+ '@id': string;
7
+ '@type': OrArray<string>;
8
+ [key: string]: EntityFieldValue;
9
+ }
10
+ export declare type OrArray<T> = T | T[];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["../../src/util/Types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { NodeObject } from 'jsonld';
2
+ import { Store } from 'n3';
3
+ import type { EntityFieldValue } from './Types';
4
+ export declare type JSONPrimitive = string | number | boolean | null;
5
+ export declare type JSONObject = Record<string, JSONValue>;
6
+ export interface JSONArray extends Array<JSONValue> {
7
+ }
8
+ export declare type JSONValue = JSONPrimitive | {
9
+ [x: string]: JSONValue;
10
+ } | JSONValue[];
11
+ export declare function convertJsonLdToQuads(jsonldDoc: any): Promise<Store>;
12
+ export declare function toJSON(jsonLd: NodeObject, convertBeyondFirstLevel?: boolean): JSONObject;
13
+ export declare function ensureArray<T>(arrayable: T | T[]): T[];
14
+ export declare function getValueIfDefined<T>(fieldValue?: EntityFieldValue): T | undefined;
15
+ export declare function isUrl(value: any): boolean;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.isUrl = exports.getValueIfDefined = exports.ensureArray = exports.toJSON = exports.convertJsonLdToQuads = void 0;
27
+ const jsonld = __importStar(require("jsonld"));
28
+ const n3_1 = require("n3");
29
+ async function convertJsonLdToQuads(jsonldDoc) {
30
+ const nquads = await jsonld.toRDF(jsonldDoc, { format: 'application/n-quads' });
31
+ const turtleParser = new n3_1.Parser({ format: 'application/n-quads' });
32
+ const store = new n3_1.Store();
33
+ turtleParser.parse(nquads).forEach((quad) => {
34
+ store.addQuad(quad);
35
+ });
36
+ return store;
37
+ }
38
+ exports.convertJsonLdToQuads = convertJsonLdToQuads;
39
+ function toJSON(jsonLd, convertBeyondFirstLevel = true) {
40
+ ['@context', '@id', '@type'].forEach((key) => {
41
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
42
+ delete jsonLd[key];
43
+ });
44
+ if (convertBeyondFirstLevel) {
45
+ Object.keys(jsonLd).forEach((key) => {
46
+ if (Array.isArray(jsonLd[key])) {
47
+ jsonLd[key].forEach((item, index) => {
48
+ if (typeof item === 'object') {
49
+ jsonLd[key][index] = toJSON(item);
50
+ }
51
+ });
52
+ }
53
+ else if (typeof jsonLd[key] === 'object') {
54
+ jsonLd[key] = toJSON(jsonLd[key]);
55
+ }
56
+ });
57
+ }
58
+ return jsonLd;
59
+ }
60
+ exports.toJSON = toJSON;
61
+ function ensureArray(arrayable) {
62
+ if (arrayable !== null && arrayable !== undefined) {
63
+ return Array.isArray(arrayable) ? arrayable : [arrayable];
64
+ }
65
+ return [];
66
+ }
67
+ exports.ensureArray = ensureArray;
68
+ function getValueIfDefined(fieldValue) {
69
+ if (fieldValue && Array.isArray(fieldValue)) {
70
+ return fieldValue.map((valueItem) => getValueIfDefined(valueItem));
71
+ }
72
+ if (fieldValue && typeof fieldValue === 'object') {
73
+ return fieldValue['@value'];
74
+ }
75
+ if (fieldValue !== undefined && fieldValue !== null) {
76
+ return fieldValue;
77
+ }
78
+ }
79
+ exports.getValueIfDefined = getValueIfDefined;
80
+ function isUrl(value) {
81
+ if (typeof value !== 'string') {
82
+ return false;
83
+ }
84
+ try {
85
+ // eslint-disable-next-line no-new
86
+ new URL(value);
87
+ return true;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ exports.isUrl = isUrl;
94
+ //# sourceMappingURL=Util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../../src/util/Util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class VariableGenerator {
2
+ private currentVariable;
3
+ getNext(): string;
4
+ private increaseByOne;
5
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VariableGenerator = void 0;
4
+ const alphabet = [
5
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
6
+ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
7
+ ];
8
+ class VariableGenerator {
9
+ constructor() {
10
+ this.currentVariable = [];
11
+ }
12
+ getNext() {
13
+ const next = this.increaseByOne(this.currentVariable);
14
+ this.currentVariable = next;
15
+ return next.map((idx) => alphabet[idx]).join('');
16
+ }
17
+ increaseByOne(arr) {
18
+ if (arr.length === 0) {
19
+ return [0];
20
+ }
21
+ const first = arr[0];
22
+ if (first === alphabet.length - 1) {
23
+ return [0, ...this.increaseByOne(arr.slice(1))];
24
+ }
25
+ return [arr[0] + 1, ...arr.slice(1)];
26
+ }
27
+ }
28
+ exports.VariableGenerator = VariableGenerator;
29
+ //# sourceMappingURL=VariableGenerator.js.map