ldkit 0.6.4 → 0.7.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 (60) hide show
  1. package/README.md +15 -15
  2. package/esm/library/encoder.js +5 -4
  3. package/esm/library/global.js +2 -2
  4. package/esm/library/{resource/resource.js → lens/lens.js} +17 -2
  5. package/esm/library/lens/mod.js +1 -0
  6. package/esm/library/{resource → lens}/query_builder.js +33 -33
  7. package/esm/library/{resource → lens}/query_helper.js +0 -0
  8. package/esm/library/{resource → lens}/types.js +0 -0
  9. package/esm/library/rdf.js +2 -2
  10. package/esm/library/sparql/escape.js +22 -0
  11. package/esm/library/sparql/mod.js +3 -0
  12. package/esm/library/sparql/sparql_query_builders.js +73 -0
  13. package/esm/library/sparql/sparql_shared_builders.js +46 -0
  14. package/esm/library/sparql/sparql_tag.js +47 -0
  15. package/esm/library/sparql/sparql_update_builders.js +34 -0
  16. package/esm/library/sparql/stringify.js +50 -0
  17. package/esm/mod.js +1 -1
  18. package/esm/sparql.js +1 -1
  19. package/package.json +1 -3
  20. package/script/library/encoder.js +5 -4
  21. package/script/library/global.js +2 -2
  22. package/script/library/{resource/resource.js → lens/lens.js} +20 -4
  23. package/script/library/lens/mod.js +6 -0
  24. package/script/library/{resource → lens}/query_builder.js +38 -38
  25. package/script/library/{resource → lens}/query_helper.js +0 -0
  26. package/script/library/{resource → lens}/types.js +0 -0
  27. package/script/library/rdf.js +2 -1
  28. package/script/library/sparql/escape.js +26 -0
  29. package/script/library/sparql/mod.js +14 -0
  30. package/script/library/sparql/sparql_query_builders.js +77 -0
  31. package/script/library/sparql/sparql_shared_builders.js +52 -0
  32. package/script/library/sparql/sparql_tag.js +54 -0
  33. package/script/library/sparql/sparql_update_builders.js +38 -0
  34. package/script/library/sparql/stringify.js +61 -0
  35. package/script/mod.js +3 -2
  36. package/script/sparql.js +1 -1
  37. package/types/library/{resource/resource.d.ts → lens/lens.d.ts} +17 -2
  38. package/types/library/lens/mod.d.ts +1 -0
  39. package/types/library/{resource → lens}/query_builder.d.ts +0 -0
  40. package/types/library/{resource → lens}/query_helper.d.ts +0 -0
  41. package/types/library/lens/types.d.ts +5 -0
  42. package/types/library/rdf.d.ts +2 -2
  43. package/types/library/schema/interface.d.ts +2 -2
  44. package/types/library/schema/mod.d.ts +1 -1
  45. package/types/library/sparql/escape.d.ts +1 -0
  46. package/types/library/sparql/mod.d.ts +3 -0
  47. package/types/library/sparql/sparql_query_builders.d.ts +39 -0
  48. package/types/library/sparql/sparql_shared_builders.d.ts +15 -0
  49. package/types/library/sparql/sparql_tag.d.ts +3 -0
  50. package/types/library/sparql/sparql_update_builders.d.ts +22 -0
  51. package/types/library/sparql/stringify.d.ts +6 -0
  52. package/types/mod.d.ts +1 -1
  53. package/types/sparql.d.ts +1 -1
  54. package/esm/library/resource/mod.js +0 -1
  55. package/esm/library/sparql.js +0 -2
  56. package/script/library/resource/mod.js +0 -6
  57. package/script/library/sparql.js +0 -13
  58. package/types/library/resource/mod.d.ts +0 -1
  59. package/types/library/resource/types.d.ts +0 -5
  60. package/types/library/sparql.d.ts +0 -2
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.QueryBuilder = void 0;
7
7
  const mod_js_1 = require("../schema/mod.js");
8
- const sparql_js_1 = require("../sparql.js");
8
+ const mod_js_2 = require("../sparql/mod.js");
9
9
  const rdf_js_1 = require("../rdf.js");
10
10
  const ldkit_js_1 = __importDefault(require("../namespaces/ldkit.js"));
11
11
  const rdf_js_2 = __importDefault(require("../namespaces/rdf.js"));
@@ -42,11 +42,11 @@ class QueryBuilder {
42
42
  configurable: true,
43
43
  writable: true,
44
44
  value: (iris) => {
45
- return (0, sparql_js_1.DELETE) `
46
- ?s ?p ?o
47
- `.WHERE `
48
- ?s ?p ?o .
49
- VALUES ?s { ${iris.map(this.df.namedNode)} }
45
+ return (0, mod_js_2.DELETE) `
46
+ ?s ?p ?o
47
+ `.WHERE `
48
+ ?s ?p ?o .
49
+ VALUES ?s { ${iris.map(this.df.namedNode)} }
50
50
  `.build();
51
51
  }
52
52
  });
@@ -83,14 +83,14 @@ class QueryBuilder {
83
83
  return;
84
84
  }
85
85
  if (wrapOptional && isOptional) {
86
- conditions.push((0, sparql_js_1.$) `\nOPTIONAL {`);
86
+ conditions.push((0, mod_js_2.sparql) `\nOPTIONAL {`);
87
87
  }
88
88
  conditions.push(this.df.quad(this.df.variable(varPrefix), this.df.namedNode(property["@id"]), this.df.variable(`${varPrefix}_${index}`)));
89
89
  if (typeof property["@context"] === "object") {
90
90
  populateConditionsRecursive(property["@context"], `${varPrefix}_${index}`);
91
91
  }
92
92
  if (wrapOptional && isOptional) {
93
- conditions.push((0, sparql_js_1.$) `\n}\n`);
93
+ conditions.push((0, mod_js_2.sparql) `\n}\n`);
94
94
  }
95
95
  });
96
96
  };
@@ -99,39 +99,39 @@ class QueryBuilder {
99
99
  }
100
100
  countQuery() {
101
101
  const quads = this.getShape();
102
- return (0, sparql_js_1.SELECT) `(count(?iri) as ?count)`.WHERE `${quads}`.build();
102
+ return (0, mod_js_2.SELECT) `(count(?iri) as ?count)`.WHERE `${quads}`.build();
103
103
  }
104
104
  getQuery(where, limit = 1000) {
105
- const selectSubQuery = (0, sparql_js_1.SELECT) `
106
- ${this.df.variable("iri")}
107
- `.WHERE `
108
- ${this.getShape(false, true)}
109
- ${where}
110
- `.LIMIT(limit);
111
- const query = (0, sparql_js_1.CONSTRUCT) `
112
- ${this.getResourceSignature()}
113
- ${this.getTypesSignature()}
114
- ${this.getShape(true, false, true)}
115
- `.WHERE `
116
- ${this.getTypesSignature()}
117
- ${this.getShape(true, true, true)}
118
- {
119
- ${selectSubQuery}
120
- }
105
+ const selectSubQuery = (0, mod_js_2.SELECT) `
106
+ ${this.df.variable("iri")}
107
+ `.WHERE `
108
+ ${this.getShape(false, true)}
109
+ ${where}
110
+ `.LIMIT(limit).build();
111
+ const query = (0, mod_js_2.CONSTRUCT) `
112
+ ${this.getResourceSignature()}
113
+ ${this.getTypesSignature()}
114
+ ${this.getShape(true, false, true)}
115
+ `.WHERE `
116
+ ${this.getTypesSignature()}
117
+ ${this.getShape(true, true, true)}
118
+ {
119
+ ${selectSubQuery}
120
+ }
121
121
  `.build();
122
122
  return query;
123
123
  }
124
124
  getByIrisQuery(iris) {
125
- const query = (0, sparql_js_1.CONSTRUCT) `
126
- ${this.getResourceSignature()}
127
- ${this.getTypesSignature()}
128
- ${this.getShape(true, false, true)}
129
- `.WHERE `
130
- ${this.getTypesSignature()}
131
- ${this.getShape(true, true, true)}
132
- VALUES ?iri {
133
- ${iris.map(this.df.namedNode)}
134
- }
125
+ const query = (0, mod_js_2.CONSTRUCT) `
126
+ ${this.getResourceSignature()}
127
+ ${this.getTypesSignature()}
128
+ ${this.getShape(true, false, true)}
129
+ `.WHERE `
130
+ ${this.getTypesSignature()}
131
+ ${this.getShape(true, true, true)}
132
+ VALUES ?iri {
133
+ ${iris.map(this.df.namedNode)}
134
+ }
135
135
  `.build();
136
136
  return query;
137
137
  }
@@ -140,10 +140,10 @@ class QueryBuilder {
140
140
  return this.insertDataQuery(quads);
141
141
  }
142
142
  insertDataQuery(quads) {
143
- return sparql_js_1.INSERT.DATA `${quads}`.build();
143
+ return mod_js_2.INSERT.DATA `${quads}`.build();
144
144
  }
145
145
  deleteDataQuery(quads) {
146
- return (0, sparql_js_1.$) `DELETE DATA { ${quads} }`.toString();
146
+ return mod_js_2.DELETE.DATA `${quads}`.build();
147
147
  }
148
148
  updateQuery(entities) {
149
149
  const deleteQuads = [];
@@ -155,7 +155,7 @@ class QueryBuilder {
155
155
  insertQuads.push(...helper.getInsertQuads());
156
156
  whereQuads.push(...helper.getWhereQuads());
157
157
  });
158
- return (0, sparql_js_1.DELETE) `${deleteQuads}`.INSERT `${insertQuads}`
158
+ return (0, mod_js_2.DELETE) `${deleteQuads}`.INSERT `${insertQuads}`
159
159
  .WHERE `${deleteQuads}`.build();
160
160
  }
161
161
  }
File without changes
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QuadFactory = exports.BindingsFactory = exports.ReadOnlyBindings = exports.TermFactory = exports.quadsToGraph = exports.DataFactory = exports.toRdf = exports.fromRdf = void 0;
3
+ exports.QuadFactory = exports.BindingsFactory = exports.ReadOnlyBindings = exports.TermFactory = exports.quadsToGraph = exports.DefaultGraph = exports.DataFactory = exports.toRdf = exports.fromRdf = void 0;
4
4
  var rdf_literal_1 = require("rdf-literal");
5
5
  Object.defineProperty(exports, "fromRdf", { enumerable: true, get: function () { return rdf_literal_1.fromRdf; } });
6
6
  Object.defineProperty(exports, "toRdf", { enumerable: true, get: function () { return rdf_literal_1.toRdf; } });
7
7
  const rdf_data_factory_1 = require("rdf-data-factory");
8
8
  Object.defineProperty(exports, "DataFactory", { enumerable: true, get: function () { return rdf_data_factory_1.DataFactory; } });
9
+ Object.defineProperty(exports, "DefaultGraph", { enumerable: true, get: function () { return rdf_data_factory_1.DefaultGraph; } });
9
10
  const quadsToGraph = (quads) => {
10
11
  const graph = new Map();
11
12
  for (const quad of quads) {
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escape = void 0;
4
+ const escapeCharRegEx = /["\\\n\r]/;
5
+ const escapeCharRegExAll = /["\\\n\r]/g;
6
+ const replacer = (char) => {
7
+ switch (char) {
8
+ case `"`:
9
+ return `\\"`;
10
+ case `\\`:
11
+ return `\\\\`;
12
+ case `\n`:
13
+ return `\\n`;
14
+ case `\r`:
15
+ return `\\r`;
16
+ default:
17
+ return char; // this should never happen
18
+ }
19
+ };
20
+ const escape = (value) => {
21
+ if (escapeCharRegEx.test(value)) {
22
+ return value.replace(escapeCharRegExAll, replacer);
23
+ }
24
+ return value;
25
+ };
26
+ exports.escape = escape;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WITH = exports.INSERT = exports.DELETE = exports.SELECT = exports.DESCRIBE = exports.CONSTRUCT = exports.ASK = exports.sparql = void 0;
4
+ var sparql_tag_js_1 = require("./sparql_tag.js");
5
+ Object.defineProperty(exports, "sparql", { enumerable: true, get: function () { return sparql_tag_js_1.sparql; } });
6
+ var sparql_query_builders_js_1 = require("./sparql_query_builders.js");
7
+ Object.defineProperty(exports, "ASK", { enumerable: true, get: function () { return sparql_query_builders_js_1.ASK; } });
8
+ Object.defineProperty(exports, "CONSTRUCT", { enumerable: true, get: function () { return sparql_query_builders_js_1.CONSTRUCT; } });
9
+ Object.defineProperty(exports, "DESCRIBE", { enumerable: true, get: function () { return sparql_query_builders_js_1.DESCRIBE; } });
10
+ Object.defineProperty(exports, "SELECT", { enumerable: true, get: function () { return sparql_query_builders_js_1.SELECT; } });
11
+ var sparql_update_builders_js_1 = require("./sparql_update_builders.js");
12
+ Object.defineProperty(exports, "DELETE", { enumerable: true, get: function () { return sparql_update_builders_js_1.DELETE; } });
13
+ Object.defineProperty(exports, "INSERT", { enumerable: true, get: function () { return sparql_update_builders_js_1.INSERT; } });
14
+ Object.defineProperty(exports, "WITH", { enumerable: true, get: function () { return sparql_update_builders_js_1.WITH; } });
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DESCRIBE = exports.ASK = exports.CONSTRUCT = exports.SELECT = void 0;
4
+ const sparql_shared_builders_js_1 = require("./sparql_shared_builders.js");
5
+ class SparqlQueryBuilder extends sparql_shared_builders_js_1.SparqlBuilder {
6
+ OFFSET(number) {
7
+ return this.number(number, "OFFSET");
8
+ }
9
+ LIMIT(number) {
10
+ return this.number(number, "LIMIT");
11
+ }
12
+ ORDER_BY(strings, ...values) {
13
+ return this.template(strings, values, "ORDER BY");
14
+ }
15
+ HAVING(strings, ...values) {
16
+ return this.template(strings, values, "HAVING", sparql_shared_builders_js_1.parentheses);
17
+ }
18
+ GROUP_BY(strings, ...values) {
19
+ return this.template(strings, values, "GROUP BY");
20
+ }
21
+ WHERE(strings, ...values) {
22
+ return this.template(strings, values, "WHERE", sparql_shared_builders_js_1.braces);
23
+ }
24
+ FROM_NAMED(stringOrNamedNode) {
25
+ return this.namedNode(stringOrNamedNode, "FROM NAMED");
26
+ }
27
+ FROM(stringOrNamedNode) {
28
+ return this.namedNode(stringOrNamedNode, "FROM");
29
+ }
30
+ SELECT(strings, ...values) {
31
+ return this.template(strings, values, "SELECT");
32
+ }
33
+ SELECT_DISTINCT(strings, ...values) {
34
+ return this.template(strings, values, "SELECT DISTINCT");
35
+ }
36
+ SELECT_REDUCED(strings, ...values) {
37
+ return this.template(strings, values, "SELECT REDUCED");
38
+ }
39
+ CONSTRUCT(strings, ...values) {
40
+ return this.template(strings, values, "CONSTRUCT", sparql_shared_builders_js_1.braces);
41
+ }
42
+ CONSTRUCT_WHERE(strings, ...values) {
43
+ return this.template(strings, values, "CONSTRUCT WHERE", sparql_shared_builders_js_1.braces);
44
+ }
45
+ ASK(strings, ...values) {
46
+ return this.template(strings, values, "ASK", sparql_shared_builders_js_1.braces);
47
+ }
48
+ ASK_FROM(stringOrNamedNode) {
49
+ return this.namedNode(stringOrNamedNode, "ASK\nFROM");
50
+ }
51
+ ASK_FROM_NAMED(stringOrNamedNode) {
52
+ return this.namedNode(stringOrNamedNode, "ASK\nFROM NAMED");
53
+ }
54
+ ASK_WHERE(strings, ...values) {
55
+ return this.template(strings, values, "ASK\nWHERE", sparql_shared_builders_js_1.braces);
56
+ }
57
+ DESCRIBE(strings, ...values) {
58
+ return this.template(strings, values, "DESCRIBE");
59
+ }
60
+ }
61
+ exports.SELECT = Object.assign((strings, ...values) => new SparqlQueryBuilder().SELECT(strings, ...values), {
62
+ DISTINCT: (strings, ...values) => new SparqlQueryBuilder().SELECT_DISTINCT(strings, ...values),
63
+ REDUCED: (strings, ...values) => new SparqlQueryBuilder().SELECT_REDUCED(strings, ...values),
64
+ get ALL() {
65
+ return new SparqlQueryBuilder().SELECT `*`;
66
+ },
67
+ });
68
+ exports.CONSTRUCT = Object.assign((strings, ...values) => new SparqlQueryBuilder().CONSTRUCT(strings, ...values), {
69
+ WHERE: (strings, ...values) => new SparqlQueryBuilder().CONSTRUCT_WHERE(strings, ...values),
70
+ });
71
+ exports.ASK = Object.assign((strings, ...values) => new SparqlQueryBuilder().ASK(strings, ...values), {
72
+ FROM: (stringOrNamedNode) => new SparqlQueryBuilder().ASK_FROM(stringOrNamedNode),
73
+ FROM_NAMED: (stringOrNamedNode) => new SparqlQueryBuilder().ASK_FROM_NAMED(stringOrNamedNode),
74
+ WHERE: (strings, ...values) => new SparqlQueryBuilder().ASK_WHERE(strings, ...values),
75
+ });
76
+ const DESCRIBE = (strings, ...values) => new SparqlQueryBuilder().DESCRIBE(strings, ...values);
77
+ exports.DESCRIBE = DESCRIBE;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SparqlBuilder = exports.parentheses = exports.braces = void 0;
4
+ const rdf_js_1 = require("../rdf.js");
5
+ const sparql_tag_js_1 = require("./sparql_tag.js");
6
+ const braces = (keyword, value) => `${keyword} {\n${value}\n}\n`;
7
+ exports.braces = braces;
8
+ const parentheses = (keyword, value) => `${keyword} (${value})\n`;
9
+ exports.parentheses = parentheses;
10
+ const none = (keyword, value) => `${keyword} ${value}\n`;
11
+ class SparqlBuilder {
12
+ constructor() {
13
+ Object.defineProperty(this, "value", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: ""
18
+ });
19
+ Object.defineProperty(this, "dataFactory", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: new rdf_js_1.DataFactory()
24
+ });
25
+ }
26
+ build() {
27
+ return this.value;
28
+ }
29
+ sparql(strings, ...values) {
30
+ return !values || values.length < 1
31
+ ? (0, sparql_tag_js_1.sparql)(strings)
32
+ : (0, sparql_tag_js_1.sparql)(strings, ...values);
33
+ }
34
+ template(strings, values, keyword, wrap = none) {
35
+ const inputSparql = this.sparql(strings, ...values);
36
+ this.value += wrap(keyword, inputSparql);
37
+ return this;
38
+ }
39
+ namedNode(stringOrNamedNode, keyword, wrap = none) {
40
+ const namedNode = typeof stringOrNamedNode === "string"
41
+ ? this.dataFactory.namedNode(stringOrNamedNode)
42
+ : stringOrNamedNode;
43
+ const inputSparql = this.sparql `${namedNode}`;
44
+ this.value += wrap(keyword, inputSparql);
45
+ return this;
46
+ }
47
+ number(number, keyword, wrap = none) {
48
+ this.value += wrap(keyword, number.toString());
49
+ return this;
50
+ }
51
+ }
52
+ exports.SparqlBuilder = SparqlBuilder;
@@ -0,0 +1,54 @@
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.sparql = void 0;
7
+ const rdf_js_1 = require("../rdf.js");
8
+ const xsd_js_1 = __importDefault(require("../namespaces/xsd.js"));
9
+ const stringify_js_1 = require("./stringify.js");
10
+ const sparql = (strings, ...values) => {
11
+ let counter = 0;
12
+ let result = "";
13
+ for (const value of values) {
14
+ result += strings[counter++];
15
+ result += valueToString(value);
16
+ }
17
+ result += strings[counter];
18
+ return result;
19
+ };
20
+ exports.sparql = sparql;
21
+ const isIterable = (obj) => {
22
+ return Symbol.iterator in Object(obj);
23
+ };
24
+ const df = new rdf_js_1.DataFactory();
25
+ const valueToString = (value) => {
26
+ if (typeof value === "undefined" || value === null) {
27
+ return "";
28
+ }
29
+ if (typeof value === "string") {
30
+ return value;
31
+ }
32
+ if (typeof value === "number") {
33
+ const numberDataType = Number.isInteger(value) ? xsd_js_1.default.integer : xsd_js_1.default.decimal;
34
+ return (0, stringify_js_1.stringify)(df.literal(value.toString(), df.namedNode(numberDataType)));
35
+ }
36
+ if (typeof value === "boolean") {
37
+ return (0, stringify_js_1.stringify)(df.literal(value.toString(), df.namedNode(xsd_js_1.default.boolean)));
38
+ }
39
+ if (value instanceof Date) {
40
+ return (0, stringify_js_1.stringify)(df.literal(value.toISOString(), df.namedNode(xsd_js_1.default.dateTime)));
41
+ }
42
+ if (isIterable(value)) {
43
+ const [first, ...rest] = value;
44
+ let result = valueToString(first);
45
+ for (const part of rest) {
46
+ result += `\n${valueToString(part)}`;
47
+ }
48
+ return result;
49
+ }
50
+ if (value.termType) {
51
+ return (0, stringify_js_1.stringify)(value);
52
+ }
53
+ throw new Error("Not supported input type detected.");
54
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WITH = exports.DELETE = exports.INSERT = void 0;
4
+ const sparql_shared_builders_js_1 = require("./sparql_shared_builders.js");
5
+ class SparqlUpdateBuilder extends sparql_shared_builders_js_1.SparqlBuilder {
6
+ WHERE(strings, ...values) {
7
+ return this.template(strings, values, "WHERE", sparql_shared_builders_js_1.braces);
8
+ }
9
+ USING_NAMED(stringOrNamedNode) {
10
+ return this.namedNode(stringOrNamedNode, "USING NAMED");
11
+ }
12
+ USING(stringOrNamedNode) {
13
+ return this.namedNode(stringOrNamedNode, "USING");
14
+ }
15
+ INSERT(strings, ...values) {
16
+ return this.template(strings, values, "INSERT", sparql_shared_builders_js_1.braces);
17
+ }
18
+ INSERT_DATA(strings, ...values) {
19
+ return this.template(strings, values, "INSERT DATA", sparql_shared_builders_js_1.braces);
20
+ }
21
+ DELETE(strings, ...values) {
22
+ return this.template(strings, values, "DELETE", sparql_shared_builders_js_1.braces);
23
+ }
24
+ DELETE_DATA(strings, ...values) {
25
+ return this.template(strings, values, "DELETE DATA", sparql_shared_builders_js_1.braces);
26
+ }
27
+ WITH(stringOrNamedNode) {
28
+ return this.namedNode(stringOrNamedNode, "WITH");
29
+ }
30
+ }
31
+ exports.INSERT = Object.assign((strings, ...values) => new SparqlUpdateBuilder().INSERT(strings, ...values), {
32
+ DATA: (strings, ...values) => new SparqlUpdateBuilder().INSERT_DATA(strings, ...values),
33
+ });
34
+ exports.DELETE = Object.assign((strings, ...values) => new SparqlUpdateBuilder().DELETE(strings, ...values), {
35
+ DATA: (strings, ...values) => new SparqlUpdateBuilder().DELETE_DATA(strings, ...values),
36
+ });
37
+ const WITH = (stringOrNamedNode) => new SparqlUpdateBuilder().WITH(stringOrNamedNode);
38
+ exports.WITH = WITH;
@@ -0,0 +1,61 @@
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.stringify = exports.literal = exports.variable = exports.namedNode = exports.blankNode = void 0;
7
+ const rdf_js_1 = require("../rdf.js");
8
+ const xsd_js_1 = __importDefault(require("../namespaces/xsd.js"));
9
+ const escape_js_1 = require("./escape.js");
10
+ const blankNode = (term) => {
11
+ return `_:${term.value}`;
12
+ };
13
+ exports.blankNode = blankNode;
14
+ const namedNode = (term) => {
15
+ return `<${term.value}>`;
16
+ };
17
+ exports.namedNode = namedNode;
18
+ const variable = (term) => {
19
+ return `?${term.value}`;
20
+ };
21
+ exports.variable = variable;
22
+ const literal = (term) => {
23
+ const datatype = term.datatype.value;
24
+ if (datatype === xsd_js_1.default.integer || datatype === xsd_js_1.default.boolean ||
25
+ datatype === xsd_js_1.default.decimal) {
26
+ return term.value;
27
+ }
28
+ const value = `"${(0, escape_js_1.escape)(term.value)}"`;
29
+ if (term.language) {
30
+ return `${value}@${term.language}`;
31
+ }
32
+ if (datatype !== xsd_js_1.default.string) {
33
+ return `${value}^^${(0, exports.namedNode)(term.datatype)}`;
34
+ }
35
+ return value;
36
+ };
37
+ exports.literal = literal;
38
+ const quad = (term) => {
39
+ const triple = `${(0, exports.stringify)(term.subject)} ${(0, exports.stringify)(term.predicate)} ${(0, exports.stringify)(term.object)} .`;
40
+ if (term.graph.equals(rdf_js_1.DefaultGraph.INSTANCE)) {
41
+ return triple;
42
+ }
43
+ return `GRAPH ${(0, exports.stringify)(term.graph)} { ${triple} }`;
44
+ };
45
+ const stringify = (term) => {
46
+ switch (term.termType) {
47
+ case "BlankNode":
48
+ return (0, exports.blankNode)(term);
49
+ case "NamedNode":
50
+ return (0, exports.namedNode)(term);
51
+ case "Variable":
52
+ return (0, exports.variable)(term);
53
+ case "Literal":
54
+ return (0, exports.literal)(term);
55
+ case "Quad":
56
+ return quad(term);
57
+ default:
58
+ throw new Error("Unknown RDF type found.");
59
+ }
60
+ };
61
+ exports.stringify = stringify;
package/script/mod.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createNamespace = exports.createResource = exports.setDefaultEngine = exports.setDefaultContext = void 0;
3
+ exports.createNamespace = exports.createResource = exports.createLens = exports.setDefaultEngine = exports.setDefaultContext = void 0;
4
4
  var global_js_1 = require("./library/global.js");
5
5
  Object.defineProperty(exports, "setDefaultContext", { enumerable: true, get: function () { return global_js_1.setDefaultContext; } });
6
6
  Object.defineProperty(exports, "setDefaultEngine", { enumerable: true, get: function () { return global_js_1.setDefaultEngine; } });
7
- var mod_js_1 = require("./library/resource/mod.js");
7
+ var mod_js_1 = require("./library/lens/mod.js");
8
+ Object.defineProperty(exports, "createLens", { enumerable: true, get: function () { return mod_js_1.createLens; } });
8
9
  Object.defineProperty(exports, "createResource", { enumerable: true, get: function () { return mod_js_1.createResource; } });
9
10
  var namespace_js_1 = require("./library/namespaces/namespace.js");
10
11
  Object.defineProperty(exports, "createNamespace", { enumerable: true, get: function () { return namespace_js_1.createNamespace; } });
package/script/sparql.js CHANGED
@@ -14,4 +14,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./library/sparql.js"), exports);
17
+ __exportStar(require("./library/sparql/mod.js"), exports);
@@ -1,8 +1,23 @@
1
1
  import type { Context, IQueryEngine, Iri, RDF } from "../rdf.js";
2
2
  import { type SchemaInterface, type SchemaInterfaceIdentity, type SchemaPrototype } from "../schema/mod.js";
3
3
  import type { Entity } from "./types.js";
4
- export declare const createResource: <T extends SchemaPrototype>(spec: T, context?: Context, engine?: IQueryEngine) => Resource<T, SchemaInterface<T>>;
5
- export declare class Resource<S extends SchemaPrototype, I = SchemaInterface<S>> {
4
+ /**
5
+ * Lens lets you query and update RDF data via data schema using TypeScript native data types.
6
+ *
7
+ * https://ldkit.io/docs/components/lens
8
+ *
9
+ * @param schema data schema which extends `SchemaPrototype`
10
+ * @param context optional `Context` - contains LDkit and query engine configuration
11
+ * @param engine optional Query Engine
12
+ * @returns Lens instance
13
+ */
14
+ export declare const createLens: <T extends SchemaPrototype>(schema: T, context?: Context, engine?: IQueryEngine) => Lens<T, SchemaInterface<T>>;
15
+ /**
16
+ * @deprecated
17
+ * Use `createLens` instead
18
+ */
19
+ export declare const createResource: <T extends SchemaPrototype>(schema: T, context?: Context, engine?: IQueryEngine) => Lens<T, SchemaInterface<T>>;
20
+ export declare class Lens<S extends SchemaPrototype, I = SchemaInterface<S>> {
6
21
  private readonly schema;
7
22
  private readonly context;
8
23
  private readonly engine;
@@ -0,0 +1 @@
1
+ export { createLens, createResource, type Lens } from "./lens.js";
@@ -0,0 +1,5 @@
1
+ import type { SchemaInterfaceIdentity } from "../schema/mod.js";
2
+ export declare type Entity<T extends unknown = Record<string, unknown>> = DeepPartial<T> & SchemaInterfaceIdentity;
3
+ export declare type DeepPartial<T> = T extends Record<string, unknown> ? {
4
+ [P in keyof T]?: DeepPartial<T[P]>;
5
+ } : T;
@@ -1,8 +1,8 @@
1
1
  import type * as RDF from "rdf-js";
2
2
  export type { RDF };
3
3
  export { fromRdf, toRdf } from "rdf-literal";
4
- import { DataFactory } from "rdf-data-factory";
5
- export { DataFactory };
4
+ import { DataFactory, DefaultGraph } from "rdf-data-factory";
5
+ export { DataFactory, DefaultGraph };
6
6
  import type { IDataSource, IQueryContextCommon } from "@comunica/types";
7
7
  export declare type LDkitContext = {
8
8
  graph?: string;
@@ -1,5 +1,5 @@
1
1
  import type { SupportedDataTypes } from "./data_types.js";
2
- import type { SchemaPrototype, PropertyPrototype } from "./schema.js";
2
+ import type { PropertyPrototype, SchemaPrototype } from "./schema.js";
3
3
  declare type IsOptional<Property extends PropertyPrototype> = Property extends {
4
4
  "@optional": true;
5
5
  } ? true : false;
@@ -13,7 +13,7 @@ declare type ValidPropertyDefinition = PropertyPrototype | string;
13
13
  declare type ConvertPropertyType<T extends PropertyPrototype> = T extends {
14
14
  "@context": SchemaPrototype;
15
15
  } ? SchemaInterface<T["@context"]> : T extends {
16
- "@type": any;
16
+ "@type": unknown;
17
17
  } ? T["@type"] extends keyof SupportedDataTypes ? SupportedDataTypes[T["@type"]] : never : string;
18
18
  declare type ConvertPropertyOptional<T extends PropertyPrototype> = IsOptional<T> extends true ? ConvertPropertyType<T> | undefined : ConvertPropertyType<T>;
19
19
  declare type ConvertPropertyArray<T extends PropertyPrototype> = IsArray<T> extends true ? ConvertPropertyType<T>[] : ConvertPropertyOptional<T>;
@@ -1,3 +1,3 @@
1
1
  export type { SchemaInterface, SchemaInterfaceIdentity, SchemaInterfaceType, } from "./interface.js";
2
- export type { Schema, SchemaPrototype, Property, PropertyPrototype, } from "./schema.js";
2
+ export type { Property, PropertyPrototype, Schema, SchemaPrototype, } from "./schema.js";
3
3
  export { expandSchema, getSchemaProperties } from "./utils.js";
@@ -0,0 +1 @@
1
+ export declare const escape: (value: string) => string;
@@ -0,0 +1,3 @@
1
+ export { sparql, type SparqlValue } from "./sparql_tag.js";
2
+ export { ASK, CONSTRUCT, DESCRIBE, SELECT } from "./sparql_query_builders.js";
3
+ export { DELETE, INSERT, WITH } from "./sparql_update_builders.js";
@@ -0,0 +1,39 @@
1
+ import { SparqlBuilder } from "./sparql_shared_builders.js";
2
+ import { type RDF } from "../rdf.js";
3
+ import { type SparqlValue } from "./sparql_tag.js";
4
+ declare type Builders<T extends keyof SparqlQueryBuilder> = Pick<SparqlQueryBuilder, T>;
5
+ declare class SparqlQueryBuilder extends SparqlBuilder {
6
+ OFFSET(number: number): Builders<"build">;
7
+ LIMIT(number: number): Builders<"build" | "OFFSET">;
8
+ ORDER_BY(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"build" | "LIMIT">;
9
+ HAVING(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"build" | "ORDER_BY" | "LIMIT">;
10
+ GROUP_BY(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"build" | "HAVING" | "ORDER_BY" | "LIMIT">;
11
+ WHERE(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"build" | "GROUP_BY" | "ORDER_BY" | "LIMIT">;
12
+ FROM_NAMED(stringOrNamedNode: string | RDF.NamedNode<string>): Builders<"FROM_NAMED" | "WHERE">;
13
+ FROM(stringOrNamedNode: string | RDF.NamedNode<string>): Builders<"FROM" | "FROM_NAMED" | "WHERE">;
14
+ SELECT(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"FROM" | "FROM_NAMED" | "WHERE">;
15
+ SELECT_DISTINCT(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"FROM" | "FROM_NAMED" | "WHERE">;
16
+ SELECT_REDUCED(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"FROM" | "FROM_NAMED" | "WHERE">;
17
+ CONSTRUCT(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"WHERE">;
18
+ CONSTRUCT_WHERE(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"build" | "GROUP_BY" | "ORDER_BY" | "LIMIT">;
19
+ ASK(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"build">;
20
+ ASK_FROM(stringOrNamedNode: string | RDF.NamedNode<string>): Builders<"FROM" | "FROM_NAMED" | "WHERE">;
21
+ ASK_FROM_NAMED(stringOrNamedNode: string | RDF.NamedNode<string>): Builders<"FROM_NAMED" | "WHERE">;
22
+ ASK_WHERE(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"build" | "GROUP_BY" | "ORDER_BY" | "LIMIT">;
23
+ DESCRIBE(strings: TemplateStringsArray, ...values: SparqlValue[]): Builders<"build" | "FROM" | "FROM_NAMED" | "WHERE">;
24
+ }
25
+ export declare const SELECT: ((strings: TemplateStringsArray, ...values: SparqlValue[]) => Builders<"WHERE" | "FROM_NAMED" | "FROM">) & {
26
+ DISTINCT: (strings: TemplateStringsArray, ...values: SparqlValue[]) => Builders<"WHERE" | "FROM_NAMED" | "FROM">;
27
+ REDUCED: (strings: TemplateStringsArray, ...values: SparqlValue[]) => Builders<"WHERE" | "FROM_NAMED" | "FROM">;
28
+ readonly ALL: Builders<"WHERE" | "FROM_NAMED" | "FROM">;
29
+ };
30
+ export declare const CONSTRUCT: ((strings: TemplateStringsArray, ...values: SparqlValue[]) => Builders<"WHERE">) & {
31
+ WHERE: (strings: TemplateStringsArray, ...values: SparqlValue[]) => Builders<"LIMIT" | "ORDER_BY" | "GROUP_BY" | "build">;
32
+ };
33
+ export declare const ASK: ((strings: TemplateStringsArray, ...values: SparqlValue[]) => Builders<"build">) & {
34
+ FROM: (stringOrNamedNode: string | RDF.NamedNode<string>) => Builders<"WHERE" | "FROM_NAMED" | "FROM">;
35
+ FROM_NAMED: (stringOrNamedNode: string | RDF.NamedNode<string>) => Builders<"WHERE" | "FROM_NAMED">;
36
+ WHERE: (strings: TemplateStringsArray, ...values: SparqlValue[]) => Builders<"LIMIT" | "ORDER_BY" | "GROUP_BY" | "build">;
37
+ };
38
+ export declare const DESCRIBE: (strings: TemplateStringsArray, ...values: SparqlValue[]) => Builders<"WHERE" | "FROM_NAMED" | "FROM" | "build">;
39
+ export {};
@@ -0,0 +1,15 @@
1
+ import { DataFactory, RDF } from "../rdf.js";
2
+ import { type SparqlValue } from "./sparql_tag.js";
3
+ declare type Wrap = (keyword: string, value: string) => string;
4
+ export declare const braces: Wrap;
5
+ export declare const parentheses: Wrap;
6
+ export declare abstract class SparqlBuilder {
7
+ protected value: string;
8
+ protected dataFactory: DataFactory<RDF.Quad>;
9
+ build(): string;
10
+ private sparql;
11
+ protected template(strings: TemplateStringsArray, values: SparqlValue[], keyword: string, wrap?: Wrap): this;
12
+ protected namedNode(stringOrNamedNode: string | RDF.NamedNode<string>, keyword: string, wrap?: Wrap): this;
13
+ protected number(number: number, keyword: string, wrap?: Wrap): this;
14
+ }
15
+ export {};