ldkit 0.4.2 → 0.5.1

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 (51) hide show
  1. package/esm/library/decoder.js +5 -0
  2. package/esm/library/encoder.js +3 -3
  3. package/esm/library/engine/mod.js +2 -0
  4. package/esm/library/engine/query_engine.js +77 -0
  5. package/esm/library/engine/query_engine_proxy.js +35 -0
  6. package/esm/library/global.js +25 -0
  7. package/esm/library/namespaces/mod.js +1 -0
  8. package/esm/library/namespaces/rdfs.js +22 -0
  9. package/esm/library/rdf.js +78 -6
  10. package/esm/library/resource/query_builder.js +44 -37
  11. package/esm/library/resource/resource.js +19 -10
  12. package/esm/library/rxjs.js +2 -2
  13. package/esm/mod.js +1 -1
  14. package/package.json +2 -2
  15. package/script/library/decoder.js +5 -0
  16. package/script/library/encoder.js +2 -2
  17. package/script/library/engine/mod.js +7 -0
  18. package/script/library/engine/query_engine.js +81 -0
  19. package/script/library/engine/query_engine_proxy.js +39 -0
  20. package/script/library/global.js +32 -0
  21. package/script/library/namespaces/mod.js +3 -1
  22. package/script/library/namespaces/rdfs.js +24 -0
  23. package/script/library/rdf.js +84 -37
  24. package/script/library/resource/query_builder.js +41 -34
  25. package/script/library/resource/resource.js +19 -10
  26. package/script/library/rxjs.js +6 -3
  27. package/script/mod.js +4 -4
  28. package/types/library/decoder.d.ts +2 -3
  29. package/types/library/encoder.d.ts +2 -3
  30. package/types/library/engine/mod.d.ts +2 -0
  31. package/types/library/engine/query_engine.d.ts +10 -0
  32. package/types/library/engine/query_engine_proxy.d.ts +10 -0
  33. package/types/library/global.d.ts +5 -0
  34. package/types/library/namespaces/dcterms.d.ts +1 -1
  35. package/types/library/namespaces/mod.d.ts +1 -0
  36. package/types/library/namespaces/rdf.d.ts +4 -4
  37. package/types/library/namespaces/rdfs.d.ts +21 -0
  38. package/types/library/namespaces/schema.d.ts +6 -6
  39. package/types/library/namespaces/skos.d.ts +1 -1
  40. package/types/library/rdf.d.ts +47 -8
  41. package/types/library/resource/query_builder.d.ts +5 -5
  42. package/types/library/resource/query_helper.d.ts +6 -7
  43. package/types/library/resource/resource.d.ts +8 -8
  44. package/types/library/rxjs.d.ts +2 -2
  45. package/types/mod.d.ts +2 -1
  46. package/esm/library/context.js +0 -13
  47. package/esm/library/engine.js +0 -9
  48. package/script/library/context.js +0 -19
  49. package/script/library/engine.js +0 -16
  50. package/types/library/context.d.ts +0 -9
  51. package/types/library/engine.d.ts +0 -6
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryEngine = void 0;
4
+ const rdf_js_1 = require("../rdf.js");
5
+ class QueryEngine {
6
+ getSparqlEndpoint(context) {
7
+ if (!context) {
8
+ throw new Error("No context supplied to QueryEngine. You need to create a default context or pass one to a resource.");
9
+ }
10
+ if (!Array.isArray(context.sources) || context.sources.length < 1) {
11
+ throw new Error("Invalid context `sources` attribute defined. You need to provide a URL to a SPARQL endpoint to query.");
12
+ }
13
+ if (context.sources.length > 1) {
14
+ throw new Error("This query engine supports only one data source, multiple defined in `sources` property in context.");
15
+ }
16
+ const source = context.sources[0];
17
+ if (typeof source === "string") {
18
+ return source;
19
+ }
20
+ if ("value" in source && typeof source.value === "string") {
21
+ if ("type" in source) {
22
+ if (source.type === "sparql") {
23
+ return source.value;
24
+ }
25
+ }
26
+ else {
27
+ return source.value;
28
+ }
29
+ }
30
+ throw new Error("Invalid SPARQL source defined - please provide URL to a SPARQL endpoint to query.");
31
+ }
32
+ getFetch(context) {
33
+ return context && context.fetch ? context.fetch : fetch;
34
+ }
35
+ async query(query, context) {
36
+ const endpoint = this.getSparqlEndpoint(context);
37
+ const fetchFn = this.getFetch(context);
38
+ return await fetchFn(endpoint, {
39
+ method: "POST",
40
+ headers: {
41
+ "accept": "application/sparql-results+json",
42
+ "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
43
+ },
44
+ body: new URLSearchParams({
45
+ query,
46
+ }),
47
+ });
48
+ }
49
+ async queryBindings(query, context) {
50
+ const result = await this.query(query, context);
51
+ const json = await result.json();
52
+ if (!Array.isArray(json?.results?.bindings)) {
53
+ throw new Error("Bindings SPARQL query result not found");
54
+ }
55
+ // Force richer type from RDF spec
56
+ const bindingsFactory = new rdf_js_1.BindingsFactory();
57
+ return Array.from(json.results.bindings, (i) => bindingsFactory.fromJson(i));
58
+ }
59
+ async queryBoolean(query, context) {
60
+ const result = await this.query(query, context);
61
+ const json = await result.json();
62
+ if ("boolean" in json) {
63
+ return Boolean(json.boolean);
64
+ }
65
+ throw new Error("Boolean SPARQL query result not found");
66
+ }
67
+ async queryQuads(query, context) {
68
+ const result = await this.query(query, context);
69
+ const json = await result.json();
70
+ if (!Array.isArray(json?.results?.bindings)) {
71
+ throw new Error("Quads SPARQL query result not found");
72
+ }
73
+ // Force richer type from RDF spec
74
+ const quadFactory = new rdf_js_1.QuadFactory();
75
+ return Array.from(json.results.bindings, (i) => quadFactory.fromJson(i));
76
+ }
77
+ async queryVoid(query, context) {
78
+ await this.query(query, context);
79
+ }
80
+ }
81
+ exports.QueryEngine = QueryEngine;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryEngineProxy = void 0;
4
+ const rdf_js_1 = require("../rdf.js");
5
+ const global_js_1 = require("../global.js");
6
+ const rxjs_js_1 = require("../rxjs.js");
7
+ class QueryEngineProxy {
8
+ constructor(context, engine) {
9
+ Object.defineProperty(this, "context", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: void 0
14
+ });
15
+ Object.defineProperty(this, "engine", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: void 0
20
+ });
21
+ this.context = (0, global_js_1.resolveContext)(context);
22
+ this.engine = (0, global_js_1.resolveEngine)(engine);
23
+ }
24
+ queryBoolean(query) {
25
+ return (0, rxjs_js_1.from)(this.engine.queryBoolean(query, this.context));
26
+ }
27
+ queryBindings(query) {
28
+ return (0, rxjs_js_1.from)(this.engine.queryBindings(query, this.context)).pipe((0, rxjs_js_1.switchMap)((stream) => (0, rxjs_js_1.of)(Array.from(stream))));
29
+ }
30
+ queryGraph(query) {
31
+ return (0, rxjs_js_1.from)(this.engine.queryQuads(query, this.context)).pipe((0, rxjs_js_1.switchMap)((stream) => (0, rxjs_js_1.of)(Array.from(stream))), (0, rxjs_js_1.map)((quads) => {
32
+ return (0, rdf_js_1.quadsToGraph)(quads);
33
+ }));
34
+ }
35
+ queryVoid(query) {
36
+ return (0, rxjs_js_1.from)(this.engine.queryVoid(query, this.context));
37
+ }
38
+ }
39
+ exports.QueryEngineProxy = QueryEngineProxy;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveEngine = exports.setDefaultEngine = exports.resolveContext = exports.setDefaultContext = void 0;
4
+ const mod_js_1 = require("./engine/mod.js");
5
+ let defaultContext = undefined;
6
+ let defaultEngine = undefined;
7
+ const setDefaultContext = (context) => {
8
+ defaultContext = context;
9
+ };
10
+ exports.setDefaultContext = setDefaultContext;
11
+ const resolveContext = (context) => {
12
+ if (!context && !defaultContext) {
13
+ throw new Error("No context found. Please create a default context or pass one to createResource function");
14
+ }
15
+ return context || defaultContext;
16
+ };
17
+ exports.resolveContext = resolveContext;
18
+ const setDefaultEngine = (engine) => {
19
+ defaultEngine = engine;
20
+ };
21
+ exports.setDefaultEngine = setDefaultEngine;
22
+ const resolveEngine = (engine) => {
23
+ if (!engine && !defaultEngine) {
24
+ (0, exports.setDefaultEngine)(new mod_js_1.QueryEngine());
25
+ // TODO: consider the consequences here, maybe log a warning?
26
+ /*throw new Error(
27
+ "No engine found. Please create a default engine or pass one to createResource function",
28
+ );*/
29
+ }
30
+ return engine || defaultEngine;
31
+ };
32
+ exports.resolveEngine = resolveEngine;
@@ -3,9 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createNamespace = exports.xsd = exports.skos = exports.schema = exports.ldkit = exports.dcterms = exports.rdf = void 0;
6
+ exports.createNamespace = exports.xsd = exports.skos = exports.schema = exports.ldkit = exports.dcterms = exports.rdfs = exports.rdf = void 0;
7
7
  var rdf_js_1 = require("./rdf.js");
8
8
  Object.defineProperty(exports, "rdf", { enumerable: true, get: function () { return __importDefault(rdf_js_1).default; } });
9
+ var rdfs_js_1 = require("./rdfs.js");
10
+ Object.defineProperty(exports, "rdfs", { enumerable: true, get: function () { return __importDefault(rdfs_js_1).default; } });
9
11
  var dcterms_js_1 = require("./dcterms.js");
10
12
  Object.defineProperty(exports, "dcterms", { enumerable: true, get: function () { return __importDefault(dcterms_js_1).default; } });
11
13
  var ldkit_js_1 = require("./ldkit.js");
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const namespace_js_1 = require("./namespace.js");
4
+ exports.default = (0, namespace_js_1.createNamespace)({
5
+ iri: "http://www.w3.org/2000/01/rdf-schema#",
6
+ prefix: "rdfs:",
7
+ terms: [
8
+ "Class",
9
+ "Container",
10
+ "ContainerMembershipProperty",
11
+ "Datatype",
12
+ "Literal",
13
+ "Resource",
14
+ "comment",
15
+ "domain",
16
+ "isDefinedBy",
17
+ "label",
18
+ "member",
19
+ "range",
20
+ "seeAlso",
21
+ "subClassOf",
22
+ "subPropertyOf",
23
+ ],
24
+ });
@@ -1,45 +1,13 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.quadsToGraph = exports.variable = exports.quad = exports.literal = exports.blankNode = exports.namedNode = exports.DataFactory = exports.toRdf = exports.fromRdf = void 0;
3
+ exports.QuadFactory = exports.BindingsFactory = exports.TermFactory = exports.quadsToGraph = exports.DataFactory = exports.toRdf = exports.fromRdf = void 0;
27
4
  var rdf_literal_1 = require("rdf-literal");
28
5
  Object.defineProperty(exports, "fromRdf", { enumerable: true, get: function () { return rdf_literal_1.fromRdf; } });
29
6
  Object.defineProperty(exports, "toRdf", { enumerable: true, get: function () { return rdf_literal_1.toRdf; } });
30
- const DataFactory = __importStar(require("rdf-data-factory"));
31
- var rdf_data_factory_1 = require("rdf-data-factory");
32
- Object.defineProperty(exports, "DataFactory", { enumerable: true, get: function () { return rdf_data_factory_1.DataFactory; } });
33
- const namedNode = (value) => new DataFactory.NamedNode(value);
34
- exports.namedNode = namedNode;
35
- const blankNode = (value) => new DataFactory.BlankNode(value);
36
- exports.blankNode = blankNode;
37
- const literal = (value, languageOrDatatype) => new DataFactory.Literal(value, languageOrDatatype);
38
- exports.literal = literal;
39
- const quad = (subject, predicate, object, graph) => new DataFactory.Quad(subject, predicate, object, graph || DataFactory.DefaultGraph.INSTANCE);
40
- exports.quad = quad;
41
- const variable = (value) => new DataFactory.Variable(value);
42
- exports.variable = variable;
7
+ const rdf_data_factory_1 = require("rdf-data-factory");
8
+ var rdf_data_factory_2 = require("rdf-data-factory");
9
+ Object.defineProperty(exports, "DataFactory", { enumerable: true, get: function () { return rdf_data_factory_2.DataFactory; } });
10
+ const bindings_factory_1 = require("@comunica/bindings-factory");
43
11
  const quadsToGraph = (quads) => {
44
12
  const graph = new Map();
45
13
  for (const quad of quads) {
@@ -52,3 +20,82 @@ const quadsToGraph = (quads) => {
52
20
  return graph;
53
21
  };
54
22
  exports.quadsToGraph = quadsToGraph;
23
+ class TermFactory {
24
+ constructor(dataFactory = new rdf_data_factory_1.DataFactory()) {
25
+ Object.defineProperty(this, "dataFactory", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: void 0
30
+ });
31
+ this.dataFactory = dataFactory;
32
+ }
33
+ fromJson(jsonTerm) {
34
+ if (jsonTerm.type === "uri") {
35
+ return this.dataFactory.namedNode(jsonTerm.value);
36
+ }
37
+ if (jsonTerm.type === "bnode") {
38
+ return this.dataFactory.blankNode(jsonTerm.value);
39
+ }
40
+ if ("xml:lang" in jsonTerm) {
41
+ return this.dataFactory.literal(jsonTerm.value, jsonTerm["xml:lang"]);
42
+ }
43
+ if ("datatype" in jsonTerm) {
44
+ return this.dataFactory.literal(jsonTerm.value, this.dataFactory.namedNode(jsonTerm.datatype));
45
+ }
46
+ return this.dataFactory.literal(jsonTerm.value);
47
+ }
48
+ }
49
+ exports.TermFactory = TermFactory;
50
+ class BindingsFactory extends bindings_factory_1.BindingsFactory {
51
+ constructor(dataFactory = new rdf_data_factory_1.DataFactory(), termFactory = new TermFactory()) {
52
+ super(dataFactory);
53
+ Object.defineProperty(this, "localDataFactory", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: void 0
58
+ });
59
+ Object.defineProperty(this, "termFactory", {
60
+ enumerable: true,
61
+ configurable: true,
62
+ writable: true,
63
+ value: void 0
64
+ });
65
+ this.localDataFactory = dataFactory;
66
+ this.termFactory = termFactory;
67
+ }
68
+ fromJson(jsonBindings) {
69
+ const bindingsEntries = Object.entries(jsonBindings).map(([varName, jsonTerm]) => {
70
+ return [
71
+ this.localDataFactory.variable(varName),
72
+ this.termFactory.fromJson(jsonTerm),
73
+ ];
74
+ });
75
+ return this.bindings(bindingsEntries);
76
+ }
77
+ }
78
+ exports.BindingsFactory = BindingsFactory;
79
+ class QuadFactory {
80
+ constructor(dataFactory = new rdf_data_factory_1.DataFactory(), bindingsFactory = new BindingsFactory(dataFactory)) {
81
+ Object.defineProperty(this, "dataFactory", {
82
+ enumerable: true,
83
+ configurable: true,
84
+ writable: true,
85
+ value: void 0
86
+ });
87
+ Object.defineProperty(this, "bindingsFactory", {
88
+ enumerable: true,
89
+ configurable: true,
90
+ writable: true,
91
+ value: void 0
92
+ });
93
+ this.dataFactory = dataFactory;
94
+ this.bindingsFactory = bindingsFactory;
95
+ }
96
+ fromJson(jsonBindings) {
97
+ const bindings = this.bindingsFactory.fromJson(jsonBindings);
98
+ return this.dataFactory.quad(bindings.get("s"), bindings.get("p"), bindings.get("o"));
99
+ }
100
+ }
101
+ exports.QuadFactory = QuadFactory;
@@ -27,28 +27,35 @@ class QueryBuilder {
27
27
  writable: true,
28
28
  value: void 0
29
29
  });
30
+ Object.defineProperty(this, "df", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: void 0
35
+ });
30
36
  Object.defineProperty(this, "deleteQuery", {
31
37
  enumerable: true,
32
38
  configurable: true,
33
39
  writable: true,
34
40
  value: (iris) => {
35
- return (0, sparql_js_1.DELETE) `
36
- ?s ?p ?o
37
- `.WHERE `
38
- ?s ?p ?o .
39
- VALUES ?s { ${iris.map(rdf_js_1.namedNode)} }
41
+ return (0, sparql_js_1.DELETE) `
42
+ ?s ?p ?o
43
+ `.WHERE `
44
+ ?s ?p ?o .
45
+ VALUES ?s { ${iris.map(this.df.namedNode)} }
40
46
  `.build();
41
47
  }
42
48
  });
43
49
  this.schema = schema;
44
50
  this.schemaProperties = (0, mod_js_1.getSchemaProperties)(this.schema);
45
51
  this.context = context;
52
+ this.df = new rdf_js_1.DataFactory();
46
53
  }
47
54
  getResourceSignature() {
48
- return (0, rdf_js_1.quad)((0, rdf_js_1.variable)("iri"), (0, rdf_js_1.namedNode)(mod_js_2.rdf.type), (0, rdf_js_1.namedNode)(mod_js_2.ldkit.Resource));
55
+ return this.df.quad(this.df.variable("iri"), this.df.namedNode(mod_js_2.rdf.type), this.df.namedNode(mod_js_2.ldkit.Resource));
49
56
  }
50
57
  getTypesSignature() {
51
- return (0, rdf_js_1.quad)((0, rdf_js_1.variable)("iri"), (0, rdf_js_1.namedNode)(mod_js_2.rdf.type), (0, rdf_js_1.variable)("iri_type"));
58
+ return this.df.quad(this.df.variable("iri"), this.df.namedNode(mod_js_2.rdf.type), this.df.variable("iri_type"));
52
59
  }
53
60
  entitiesToQuads(entities) {
54
61
  const quadArrays = entities.map((entity) => (0, encoder_js_1.encode)(entity, this.schema, this.context));
@@ -62,7 +69,7 @@ class QueryBuilder {
62
69
  const properties = (0, mod_js_1.getSchemaProperties)(s);
63
70
  if (varPrefix !== "iri" || !omitRootTypes) {
64
71
  rdfType.forEach((type) => {
65
- conditions.push((0, rdf_js_1.quad)((0, rdf_js_1.variable)(varPrefix), (0, rdf_js_1.namedNode)(mod_js_2.rdf.type), (0, rdf_js_1.namedNode)(type)));
72
+ conditions.push(this.df.quad(this.df.variable(varPrefix), this.df.namedNode(mod_js_2.rdf.type), this.df.namedNode(type)));
66
73
  });
67
74
  }
68
75
  Object.keys(properties).forEach((prop, index) => {
@@ -74,7 +81,7 @@ class QueryBuilder {
74
81
  if (wrapOptional && isOptional) {
75
82
  conditions.push((0, sparql_js_1.$) `\nOPTIONAL {`);
76
83
  }
77
- conditions.push((0, rdf_js_1.quad)((0, rdf_js_1.variable)(varPrefix), (0, rdf_js_1.namedNode)(property["@id"]), (0, rdf_js_1.variable)(`${varPrefix}_${index}`)));
84
+ conditions.push(this.df.quad(this.df.variable(varPrefix), this.df.namedNode(property["@id"]), this.df.variable(`${varPrefix}_${index}`)));
78
85
  if (typeof property["@context"] === "object") {
79
86
  populateConditionsRecursive(property["@context"], `${varPrefix}_${index}`);
80
87
  }
@@ -91,36 +98,36 @@ class QueryBuilder {
91
98
  return (0, sparql_js_1.SELECT) `(count(?iri) as ?count)`.WHERE `${quads}`.build();
92
99
  }
93
100
  getQuery(where, limit = 1000) {
94
- const selectSubQuery = (0, sparql_js_1.SELECT) `
95
- ${(0, rdf_js_1.variable)("iri")}
96
- `.WHERE `
97
- ${this.getShape(false, true)}
98
- ${where}
101
+ const selectSubQuery = (0, sparql_js_1.SELECT) `
102
+ ${this.df.variable("iri")}
103
+ `.WHERE `
104
+ ${this.getShape(false, true)}
105
+ ${where}
99
106
  `.LIMIT(limit);
100
- const query = (0, sparql_js_1.CONSTRUCT) `
101
- ${this.getResourceSignature()}
102
- ${this.getTypesSignature()}
103
- ${this.getShape(true, false, true)}
104
- `.WHERE `
105
- ${this.getTypesSignature()}
106
- ${this.getShape(true, true, true)}
107
- {
108
- ${selectSubQuery}
109
- }
107
+ const query = (0, sparql_js_1.CONSTRUCT) `
108
+ ${this.getResourceSignature()}
109
+ ${this.getTypesSignature()}
110
+ ${this.getShape(true, false, true)}
111
+ `.WHERE `
112
+ ${this.getTypesSignature()}
113
+ ${this.getShape(true, true, true)}
114
+ {
115
+ ${selectSubQuery}
116
+ }
110
117
  `.build();
111
118
  return query;
112
119
  }
113
120
  getByIrisQuery(iris) {
114
- const query = (0, sparql_js_1.CONSTRUCT) `
115
- ${this.getResourceSignature()}
116
- ${this.getTypesSignature()}
117
- ${this.getShape(true, false, true)}
118
- `.WHERE `
119
- ${this.getTypesSignature()}
120
- ${this.getShape(true, true, true)}
121
- VALUES ?iri {
122
- ${iris.map(rdf_js_1.namedNode)}
123
- }
121
+ const query = (0, sparql_js_1.CONSTRUCT) `
122
+ ${this.getResourceSignature()}
123
+ ${this.getTypesSignature()}
124
+ ${this.getShape(true, false, true)}
125
+ `.WHERE `
126
+ ${this.getTypesSignature()}
127
+ ${this.getShape(true, true, true)}
128
+ VALUES ?iri {
129
+ ${iris.map(this.df.namedNode)}
130
+ }
124
131
  `.build();
125
132
  return query;
126
133
  }
@@ -2,15 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Resource = exports.createResource = void 0;
4
4
  const rxjs_js_1 = require("../rxjs.js");
5
- const engine_js_1 = require("../engine.js");
6
- const context_js_1 = require("../context.js");
5
+ const global_js_1 = require("../global.js");
7
6
  const mod_js_1 = require("../schema/mod.js");
8
7
  const decoder_js_1 = require("../decoder.js");
9
8
  const query_builder_js_1 = require("./query_builder.js");
10
- const createResource = (spec, context) => new Resource(spec, context);
9
+ const query_engine_proxy_js_1 = require("../engine/query_engine_proxy.js");
10
+ const createResource = (spec, context, engine) => new Resource(spec, context, engine);
11
11
  exports.createResource = createResource;
12
12
  class Resource {
13
- constructor(schema, context) {
13
+ constructor(schema, context, engine) {
14
14
  Object.defineProperty(this, "schema", {
15
15
  enumerable: true,
16
16
  configurable: true,
@@ -23,6 +23,12 @@ class Resource {
23
23
  writable: true,
24
24
  value: void 0
25
25
  });
26
+ Object.defineProperty(this, "engine", {
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true,
30
+ value: void 0
31
+ });
26
32
  Object.defineProperty(this, "queryBuilder", {
27
33
  enumerable: true,
28
34
  configurable: true,
@@ -36,7 +42,8 @@ class Resource {
36
42
  value: new rxjs_js_1.BehaviorSubject(null)
37
43
  });
38
44
  this.schema = (0, mod_js_1.expandSchema)(schema);
39
- this.context = (0, context_js_1.resolveContext)(context);
45
+ this.context = (0, global_js_1.resolveContext)(context);
46
+ this.engine = new query_engine_proxy_js_1.QueryEngineProxy(this.context, engine);
40
47
  this.queryBuilder = new query_builder_js_1.QueryBuilder(this.schema, this.context);
41
48
  }
42
49
  decode(graph) {
@@ -45,7 +52,7 @@ class Resource {
45
52
  count() {
46
53
  const q = this.queryBuilder.countQuery();
47
54
  console.log(q);
48
- return this.$trigger.pipe((0, rxjs_js_1.switchMap)(() => (0, engine_js_1.bindingsQuery)(q, this.context)), (0, rxjs_js_1.map)((bindings) => {
55
+ return this.$trigger.pipe((0, rxjs_js_1.switchMap)(() => this.engine.queryBindings(q)), (0, rxjs_js_1.map)((bindings) => {
49
56
  console.warn("BINDINGS", bindings);
50
57
  return parseInt(bindings[0].get("count").value);
51
58
  }));
@@ -53,14 +60,16 @@ class Resource {
53
60
  //exists(entity: Identity) {}
54
61
  query(sparqlConstructQuery) {
55
62
  console.log(sparqlConstructQuery);
56
- return (0, engine_js_1.quadsQuery)(sparqlConstructQuery, this.context).pipe((0, rxjs_js_1.map)((graph) => {
63
+ return this.engine.queryGraph(sparqlConstructQuery).pipe((0, rxjs_js_1.map)((graph) => {
64
+ console.warn("GRAPH", graph);
57
65
  return this.decode(graph);
58
66
  }));
59
67
  }
60
68
  find(where, limit) {
61
69
  const q = this.queryBuilder.getQuery(where, limit);
62
70
  console.log(q);
63
- return this.$trigger.pipe((0, rxjs_js_1.switchMap)(() => (0, engine_js_1.quadsQuery)(q, this.context)), (0, rxjs_js_1.map)((graph) => {
71
+ return this.$trigger.pipe((0, rxjs_js_1.switchMap)(() => this.engine.queryGraph(q)), (0, rxjs_js_1.map)((graph) => {
72
+ console.warn("GRAPH", graph);
64
73
  return this.decode(graph);
65
74
  }));
66
75
  }
@@ -70,13 +79,13 @@ class Resource {
70
79
  findByIris(iris) {
71
80
  const q = this.queryBuilder.getByIrisQuery(iris);
72
81
  console.log(q);
73
- return this.$trigger.pipe((0, rxjs_js_1.switchMap)(() => (0, engine_js_1.quadsQuery)(q, this.context)), (0, rxjs_js_1.map)((graph) => {
82
+ return this.$trigger.pipe((0, rxjs_js_1.switchMap)(() => this.engine.queryGraph(q)), (0, rxjs_js_1.map)((graph) => {
74
83
  return this.decode(graph);
75
84
  }));
76
85
  }
77
86
  updateQuery(query) {
78
87
  console.log(query);
79
- const result = (0, engine_js_1.updateQuery)(query, this.context).pipe((0, rxjs_js_1.tap)(() => this.$trigger.next(null)), (0, rxjs_js_1.share)());
88
+ const result = this.engine.queryVoid(query).pipe((0, rxjs_js_1.tap)(() => this.$trigger.next(null)), (0, rxjs_js_1.share)());
80
89
  result.subscribe();
81
90
  return result;
82
91
  }
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.share = exports.tap = exports.switchMap = exports.map = exports.BehaviorSubject = exports.from = void 0;
3
+ exports.tap = exports.switchMap = exports.share = exports.map = exports.of = exports.lastValueFrom = exports.from = exports.firstValueFrom = exports.BehaviorSubject = void 0;
4
4
  var rxjs_1 = require("rxjs");
5
- Object.defineProperty(exports, "from", { enumerable: true, get: function () { return rxjs_1.from; } });
6
5
  Object.defineProperty(exports, "BehaviorSubject", { enumerable: true, get: function () { return rxjs_1.BehaviorSubject; } });
6
+ Object.defineProperty(exports, "firstValueFrom", { enumerable: true, get: function () { return rxjs_1.firstValueFrom; } });
7
+ Object.defineProperty(exports, "from", { enumerable: true, get: function () { return rxjs_1.from; } });
8
+ Object.defineProperty(exports, "lastValueFrom", { enumerable: true, get: function () { return rxjs_1.lastValueFrom; } });
9
+ Object.defineProperty(exports, "of", { enumerable: true, get: function () { return rxjs_1.of; } });
7
10
  var operators_1 = require("rxjs/operators");
8
11
  Object.defineProperty(exports, "map", { enumerable: true, get: function () { return operators_1.map; } });
12
+ Object.defineProperty(exports, "share", { enumerable: true, get: function () { return operators_1.share; } });
9
13
  Object.defineProperty(exports, "switchMap", { enumerable: true, get: function () { return operators_1.switchMap; } });
10
14
  Object.defineProperty(exports, "tap", { enumerable: true, get: function () { return operators_1.tap; } });
11
- Object.defineProperty(exports, "share", { enumerable: true, get: function () { return operators_1.share; } });
package/script/mod.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDefaultContext = exports.createContext = exports.createNamespace = exports.createResource = void 0;
3
+ exports.createNamespace = exports.createResource = exports.setDefaultEngine = exports.setDefaultContext = void 0;
4
+ var global_js_1 = require("./library/global.js");
5
+ Object.defineProperty(exports, "setDefaultContext", { enumerable: true, get: function () { return global_js_1.setDefaultContext; } });
6
+ Object.defineProperty(exports, "setDefaultEngine", { enumerable: true, get: function () { return global_js_1.setDefaultEngine; } });
4
7
  var mod_js_1 = require("./library/resource/mod.js");
5
8
  Object.defineProperty(exports, "createResource", { enumerable: true, get: function () { return mod_js_1.createResource; } });
6
9
  var namespace_js_1 = require("./library/namespaces/namespace.js");
7
10
  Object.defineProperty(exports, "createNamespace", { enumerable: true, get: function () { return namespace_js_1.createNamespace; } });
8
- var context_js_1 = require("./library/context.js");
9
- Object.defineProperty(exports, "createContext", { enumerable: true, get: function () { return context_js_1.createContext; } });
10
- Object.defineProperty(exports, "createDefaultContext", { enumerable: true, get: function () { return context_js_1.createDefaultContext; } });
@@ -1,6 +1,5 @@
1
- import type { LibraryContext } from "./context.js";
2
- import { Graph } from "./rdf.js";
1
+ import { type Context, Graph } from "./rdf.js";
3
2
  import type { Schema } from "./schema/mod.js";
4
3
  declare type DecodedNode = Record<string, unknown>;
5
- export declare const decode: (graph: Graph, schema: Schema, context: LibraryContext) => DecodedNode[];
4
+ export declare const decode: (graph: Graph, schema: Schema, context: Context) => DecodedNode[];
6
5
  export {};
@@ -1,6 +1,5 @@
1
- import type { LibraryContext } from "./context.js";
2
- import { Quad } from "./rdf.js";
1
+ import { type Context, type RDF } from "./rdf.js";
3
2
  import type { Schema } from "./schema/mod.js";
4
3
  declare type DecodedNode = Record<string, unknown>;
5
- export declare const encode: (node: DecodedNode, schema: Schema, context: LibraryContext, variableInitCounter?: number) => Quad[];
4
+ export declare const encode: (node: DecodedNode, schema: Schema, context: Context, variableInitCounter?: number) => RDF.Quad[];
6
5
  export {};
@@ -0,0 +1,2 @@
1
+ export { QueryEngine } from "./query_engine.js";
2
+ export { QueryEngineProxy } from "./query_engine_proxy.js";
@@ -0,0 +1,10 @@
1
+ import { type Context, type IQueryEngine, type RDF } from "../rdf.js";
2
+ export declare class QueryEngine implements IQueryEngine {
3
+ protected getSparqlEndpoint(context?: Context): string;
4
+ protected getFetch(context?: Context): typeof fetch;
5
+ query(query: string, context?: Context): Promise<Response>;
6
+ queryBindings(query: string, context?: Context): Promise<RDF.ResultStream<RDF.Bindings>>;
7
+ queryBoolean(query: string, context?: Context): Promise<boolean>;
8
+ queryQuads(query: string, context?: Context): Promise<RDF.ResultStream<RDF.Quad>>;
9
+ queryVoid(query: string, context?: Context): Promise<void>;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { type Context, IQueryEngine, type RDF } from "../rdf.js";
2
+ export declare class QueryEngineProxy {
3
+ private readonly context;
4
+ private readonly engine;
5
+ constructor(context?: Context, engine?: IQueryEngine);
6
+ queryBoolean(query: string): import("rxjs/internal/Observable").Observable<boolean>;
7
+ queryBindings(query: string): import("rxjs/internal/Observable").Observable<RDF.Bindings[]>;
8
+ queryGraph(query: string): import("rxjs/internal/Observable").Observable<import("../rdf.js").Graph>;
9
+ queryVoid(query: string): import("rxjs/internal/Observable").Observable<void>;
10
+ }
@@ -0,0 +1,5 @@
1
+ import type { Context, IQueryEngine } from "./rdf.js";
2
+ export declare const setDefaultContext: (context: Context) => void;
3
+ export declare const resolveContext: (context?: Context) => Context;
4
+ export declare const setDefaultEngine: (engine: IQueryEngine) => void;
5
+ export declare const resolveEngine: (engine?: IQueryEngine) => IQueryEngine;
@@ -1,7 +1,7 @@
1
1
  declare const _default: {
2
- language: "dcterms:language";
3
2
  subject: "dcterms:subject";
4
3
  type: "dcterms:type";
4
+ language: "dcterms:language";
5
5
  Agent: "dcterms:Agent";
6
6
  AgentClass: "dcterms:AgentClass";
7
7
  BibliographicResource: "dcterms:BibliographicResource";
@@ -1,4 +1,5 @@
1
1
  export { default as rdf } from "./rdf.js";
2
+ export { default as rdfs } from "./rdfs.js";
2
3
  export { default as dcterms } from "./dcterms.js";
3
4
  export { default as ldkit } from "./ldkit.js";
4
5
  export { default as schema } from "./schema.js";