ldkit 0.6.5 → 0.8.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.
- package/README.md +15 -15
- package/esm/library/global.js +2 -2
- package/esm/library/{resource/resource.js → lens/lens.js} +17 -2
- package/esm/library/lens/mod.js +1 -0
- package/esm/library/rdf.js +1 -1
- package/esm/library/sparql/sparql_query_builders.js +70 -32
- package/esm/library/sparql/sparql_shared_builders.js +42 -36
- package/esm/library/sparql/sparql_update_builders.js +32 -13
- package/esm/mod.js +1 -1
- package/package.json +36 -16
- package/script/library/global.js +2 -2
- package/script/library/{resource/resource.js → lens/lens.js} +20 -4
- package/script/library/lens/mod.js +6 -0
- package/script/library/sparql/sparql_query_builders.js +70 -31
- package/script/library/sparql/sparql_shared_builders.js +46 -41
- package/script/library/sparql/sparql_update_builders.js +32 -12
- package/script/mod.js +3 -2
- package/types/library/asynciterator.d.ts +3 -3
- package/types/library/decoder.d.ts +1 -1
- package/types/library/encoder.d.ts +1 -1
- package/types/library/engine/query_engine.d.ts +1 -1
- package/types/library/{resource/resource.d.ts → lens/lens.d.ts} +17 -2
- package/types/library/lens/mod.d.ts +1 -0
- package/types/library/lens/types.d.ts +5 -0
- package/types/library/namespaces/namespace.d.ts +4 -4
- package/types/library/rdf.d.ts +6 -6
- package/types/library/schema/data_types.d.ts +2 -2
- package/types/library/schema/interface.d.ts +13 -13
- package/types/library/schema/schema.d.ts +7 -7
- package/types/library/sparql/sparql_query_builders.d.ts +36 -1175
- package/types/library/sparql/sparql_shared_builders.d.ts +13 -11
- package/types/library/sparql/sparql_tag.d.ts +1 -1
- package/types/library/sparql/sparql_update_builders.d.ts +20 -129
- package/types/mod.d.ts +1 -1
- package/esm/library/resource/mod.js +0 -1
- package/script/library/resource/mod.js +0 -6
- package/types/library/resource/mod.d.ts +0 -1
- package/types/library/resource/types.d.ts +0 -5
- /package/esm/library/{resource → lens}/query_builder.js +0 -0
- /package/esm/library/{resource → lens}/query_helper.js +0 -0
- /package/esm/library/{resource → lens}/types.js +0 -0
- /package/script/library/{resource → lens}/query_builder.js +0 -0
- /package/script/library/{resource → lens}/query_helper.js +0 -0
- /package/script/library/{resource → lens}/types.js +0 -0
- /package/types/library/{resource → lens}/query_builder.d.ts +0 -0
- /package/types/library/{resource → lens}/query_helper.d.ts +0 -0
package/README.md
CHANGED
|
@@ -37,18 +37,12 @@ For Deno environment, you can import LDkit like this:
|
|
|
37
37
|
import * as ldkit from "https://deno.land/x/ldkit/mod.ts";
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
###
|
|
40
|
+
### Create data schema and set up RDF source
|
|
41
41
|
|
|
42
42
|
```ts
|
|
43
|
-
import { type Context,
|
|
43
|
+
import { type Context, createLens } from "ldkit";
|
|
44
44
|
import { dbo, rdfs, xsd } from "ldkit/namespaces";
|
|
45
45
|
|
|
46
|
-
// Create a context for query engine
|
|
47
|
-
const context: Context = {
|
|
48
|
-
sources: ["https://dbpedia.org/sparql"], // SPARQL endpoint
|
|
49
|
-
language: "en", // Preferred language
|
|
50
|
-
};
|
|
51
|
-
|
|
52
46
|
// Create a schema
|
|
53
47
|
const PersonSchema = {
|
|
54
48
|
"@type": dbo.Person,
|
|
@@ -60,22 +54,28 @@ const PersonSchema = {
|
|
|
60
54
|
},
|
|
61
55
|
} as const;
|
|
62
56
|
|
|
57
|
+
// Create a context for query engine
|
|
58
|
+
const context: Context = {
|
|
59
|
+
sources: ["https://dbpedia.org/sparql"], // SPARQL endpoint
|
|
60
|
+
language: "en", // Preferred language
|
|
61
|
+
};
|
|
62
|
+
|
|
63
63
|
// Create a resource using the data schema and context above
|
|
64
|
-
const
|
|
64
|
+
const Persons = createLens(PersonSchema, context);
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
### List all available data
|
|
68
68
|
|
|
69
69
|
```ts
|
|
70
70
|
// List all persons
|
|
71
|
-
const persons = await
|
|
71
|
+
const persons = await Persons.find();
|
|
72
72
|
for (const person of persons) {
|
|
73
73
|
console.log(person.name); // string
|
|
74
74
|
console.log(person.birthDate); // Date
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
// Get total count of all persons
|
|
78
|
-
const count = await
|
|
78
|
+
const count = await Persons.count();
|
|
79
79
|
console.log(count); // number
|
|
80
80
|
```
|
|
81
81
|
|
|
@@ -83,7 +83,7 @@ console.log(count); // number
|
|
|
83
83
|
|
|
84
84
|
```ts
|
|
85
85
|
// Get a particular person identified by IRI
|
|
86
|
-
const ada = await
|
|
86
|
+
const ada = await Persons.findByIri("http://dbpedia.org/resource/Ada_Lovelace");
|
|
87
87
|
console.log(ada?.name); // string "Ada Lovelace"
|
|
88
88
|
console.log(ada?.birthDate); // Date object of 1815-12-10
|
|
89
89
|
```
|
|
@@ -92,20 +92,20 @@ console.log(ada?.birthDate); // Date object of 1815-12-10
|
|
|
92
92
|
|
|
93
93
|
```ts
|
|
94
94
|
// Insert a new person
|
|
95
|
-
|
|
95
|
+
Persons.insert({
|
|
96
96
|
$id: "http://dbpedia.org/resource/Alan_Turing",
|
|
97
97
|
name: "Alan Turing",
|
|
98
98
|
birthDate: new Date("1912-06-23"),
|
|
99
99
|
});
|
|
100
100
|
|
|
101
101
|
// Modify a person's name
|
|
102
|
-
|
|
102
|
+
Persons.update({
|
|
103
103
|
$id: "http://dbpedia.org/resource/Alan_Turing",
|
|
104
104
|
name: "Not Alan Turing",
|
|
105
105
|
});
|
|
106
106
|
|
|
107
107
|
// Delete a person
|
|
108
|
-
|
|
108
|
+
Persons.delete("http://dbpedia.org/resource/Alan_Turing");
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
More complex examples can be found in [documentation](https://ldkit.io/docs).
|
package/esm/library/global.js
CHANGED
|
@@ -6,7 +6,7 @@ export const setDefaultContext = (context) => {
|
|
|
6
6
|
};
|
|
7
7
|
export const resolveContext = (context) => {
|
|
8
8
|
if (!context && !defaultContext) {
|
|
9
|
-
throw new Error("No context found. Please create a default context or pass one to
|
|
9
|
+
throw new Error("No context found. Please create a default context or pass one to createLens function");
|
|
10
10
|
}
|
|
11
11
|
return context || defaultContext;
|
|
12
12
|
};
|
|
@@ -18,7 +18,7 @@ export const resolveEngine = (engine) => {
|
|
|
18
18
|
setDefaultEngine(new QueryEngine());
|
|
19
19
|
// TODO: consider the consequences here, maybe log a warning?
|
|
20
20
|
/*throw new Error(
|
|
21
|
-
"No engine found. Please create a default engine or pass one to
|
|
21
|
+
"No engine found. Please create a default engine or pass one to createLens function",
|
|
22
22
|
);*/
|
|
23
23
|
}
|
|
24
24
|
return engine || defaultEngine;
|
|
@@ -3,8 +3,23 @@ import { expandSchema, } from "../schema/mod.js";
|
|
|
3
3
|
import { decode } from "../decoder.js";
|
|
4
4
|
import { QueryBuilder } from "./query_builder.js";
|
|
5
5
|
import { QueryEngineProxy } from "../engine/query_engine_proxy.js";
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Lens lets you query and update RDF data via data schema using TypeScript native data types.
|
|
8
|
+
*
|
|
9
|
+
* https://ldkit.io/docs/components/lens
|
|
10
|
+
*
|
|
11
|
+
* @param schema data schema which extends `SchemaPrototype`
|
|
12
|
+
* @param context optional `Context` - contains LDkit and query engine configuration
|
|
13
|
+
* @param engine optional Query Engine
|
|
14
|
+
* @returns Lens instance
|
|
15
|
+
*/
|
|
16
|
+
export const createLens = (schema, context, engine) => new Lens(schema, context, engine);
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated
|
|
19
|
+
* Use `createLens` instead
|
|
20
|
+
*/
|
|
21
|
+
export const createResource = (schema, context, engine) => new Lens(schema, context, engine);
|
|
22
|
+
export class Lens {
|
|
8
23
|
constructor(schema, context, engine) {
|
|
9
24
|
Object.defineProperty(this, "schema", {
|
|
10
25
|
enumerable: true,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createLens, createResource } from "./lens.js";
|
package/esm/library/rdf.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { fromRdf, toRdf } from "rdf-literal";
|
|
2
|
-
import { DataFactory, DefaultGraph
|
|
2
|
+
import { DataFactory, DefaultGraph } from "rdf-data-factory";
|
|
3
3
|
export { DataFactory, DefaultGraph };
|
|
4
4
|
export const quadsToGraph = (quads) => {
|
|
5
5
|
const graph = new Map();
|
|
@@ -1,35 +1,73 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { braces, parentheses, SparqlBuilder, } from "./sparql_shared_builders.js";
|
|
2
|
+
class SparqlQueryBuilder extends SparqlBuilder {
|
|
3
|
+
OFFSET(number) {
|
|
4
|
+
return this.number(number, "OFFSET");
|
|
5
|
+
}
|
|
6
|
+
LIMIT(number) {
|
|
7
|
+
return this.number(number, "LIMIT");
|
|
8
|
+
}
|
|
9
|
+
ORDER_BY(strings, ...values) {
|
|
10
|
+
return this.template(strings, values, "ORDER BY");
|
|
11
|
+
}
|
|
12
|
+
HAVING(strings, ...values) {
|
|
13
|
+
return this.template(strings, values, "HAVING", parentheses);
|
|
14
|
+
}
|
|
15
|
+
GROUP_BY(strings, ...values) {
|
|
16
|
+
return this.template(strings, values, "GROUP BY");
|
|
17
|
+
}
|
|
18
|
+
WHERE(strings, ...values) {
|
|
19
|
+
return this.template(strings, values, "WHERE", braces);
|
|
20
|
+
}
|
|
21
|
+
FROM_NAMED(stringOrNamedNode) {
|
|
22
|
+
return this.namedNode(stringOrNamedNode, "FROM NAMED");
|
|
23
|
+
}
|
|
24
|
+
FROM(stringOrNamedNode) {
|
|
25
|
+
return this.namedNode(stringOrNamedNode, "FROM");
|
|
26
|
+
}
|
|
27
|
+
SELECT(strings, ...values) {
|
|
28
|
+
return this.template(strings, values, "SELECT");
|
|
29
|
+
}
|
|
30
|
+
SELECT_DISTINCT(strings, ...values) {
|
|
31
|
+
return this.template(strings, values, "SELECT DISTINCT");
|
|
32
|
+
}
|
|
33
|
+
SELECT_REDUCED(strings, ...values) {
|
|
34
|
+
return this.template(strings, values, "SELECT REDUCED");
|
|
35
|
+
}
|
|
36
|
+
CONSTRUCT(strings, ...values) {
|
|
37
|
+
return this.template(strings, values, "CONSTRUCT", braces);
|
|
38
|
+
}
|
|
39
|
+
CONSTRUCT_WHERE(strings, ...values) {
|
|
40
|
+
return this.template(strings, values, "CONSTRUCT WHERE", braces);
|
|
41
|
+
}
|
|
42
|
+
ASK(strings, ...values) {
|
|
43
|
+
return this.template(strings, values, "ASK", braces);
|
|
44
|
+
}
|
|
45
|
+
ASK_FROM(stringOrNamedNode) {
|
|
46
|
+
return this.namedNode(stringOrNamedNode, "ASK\nFROM");
|
|
47
|
+
}
|
|
48
|
+
ASK_FROM_NAMED(stringOrNamedNode) {
|
|
49
|
+
return this.namedNode(stringOrNamedNode, "ASK\nFROM NAMED");
|
|
50
|
+
}
|
|
51
|
+
ASK_WHERE(strings, ...values) {
|
|
52
|
+
return this.template(strings, values, "ASK\nWHERE", braces);
|
|
53
|
+
}
|
|
54
|
+
DESCRIBE(strings, ...values) {
|
|
55
|
+
return this.template(strings, values, "DESCRIBE");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export const SELECT = Object.assign((strings, ...values) => new SparqlQueryBuilder().SELECT(strings, ...values), {
|
|
59
|
+
DISTINCT: (strings, ...values) => new SparqlQueryBuilder().SELECT_DISTINCT(strings, ...values),
|
|
60
|
+
REDUCED: (strings, ...values) => new SparqlQueryBuilder().SELECT_REDUCED(strings, ...values),
|
|
61
|
+
get ALL() {
|
|
62
|
+
return new SparqlQueryBuilder().SELECT `*`;
|
|
63
|
+
},
|
|
15
64
|
});
|
|
16
|
-
export const
|
|
17
|
-
|
|
18
|
-
REDUCED,
|
|
19
|
-
ALL: _SELECT `*`,
|
|
65
|
+
export const CONSTRUCT = Object.assign((strings, ...values) => new SparqlQueryBuilder().CONSTRUCT(strings, ...values), {
|
|
66
|
+
WHERE: (strings, ...values) => new SparqlQueryBuilder().CONSTRUCT_WHERE(strings, ...values),
|
|
20
67
|
});
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
WHERE:
|
|
68
|
+
export const ASK = Object.assign((strings, ...values) => new SparqlQueryBuilder().ASK(strings, ...values), {
|
|
69
|
+
FROM: (stringOrNamedNode) => new SparqlQueryBuilder().ASK_FROM(stringOrNamedNode),
|
|
70
|
+
FROM_NAMED: (stringOrNamedNode) => new SparqlQueryBuilder().ASK_FROM_NAMED(stringOrNamedNode),
|
|
71
|
+
WHERE: (strings, ...values) => new SparqlQueryBuilder().ASK_WHERE(strings, ...values),
|
|
25
72
|
});
|
|
26
|
-
const
|
|
27
|
-
const _ASK_FROM = createTemplateBuilder((value) => `ASK\nFROM ${value}\n`, { FROM_NAMED, WHERE });
|
|
28
|
-
const _ASK_FROM_NAMED = createTemplateBuilder((value) => `ASK\nFROM NAMED ${value}\n`, { FROM_NAMED, WHERE });
|
|
29
|
-
const _ASK_WHERE = createTemplateBuilder((value) => `ASK\nWHERE {\n${value}\n}\n`, { build, GROUP_BY, ORDER_BY, LIMIT });
|
|
30
|
-
export const ASK = Object.assign(_ASK, {
|
|
31
|
-
FROM: _ASK_FROM,
|
|
32
|
-
FROM_NAMED: _ASK_FROM_NAMED,
|
|
33
|
-
WHERE: _ASK_WHERE,
|
|
34
|
-
});
|
|
35
|
-
export const DESCRIBE = createTemplateBuilder((value) => `DESCRIBE ${value}\n`, { build, FROM, FROM_NAMED, WHERE });
|
|
73
|
+
export const DESCRIBE = (strings, ...values) => new SparqlQueryBuilder().DESCRIBE(strings, ...values);
|
|
@@ -1,40 +1,46 @@
|
|
|
1
1
|
import { DataFactory } from "../rdf.js";
|
|
2
2
|
import { sparql } from "./sparql_tag.js";
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
3
|
+
export const braces = (keyword, value) => `${keyword} {\n${value}\n}\n`;
|
|
4
|
+
export const parentheses = (keyword, value) => `${keyword} (${value})\n`;
|
|
5
|
+
const none = (keyword, value) => `${keyword} ${value}\n`;
|
|
6
|
+
export class SparqlBuilder {
|
|
7
|
+
constructor() {
|
|
8
|
+
Object.defineProperty(this, "value", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
configurable: true,
|
|
11
|
+
writable: true,
|
|
12
|
+
value: ""
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(this, "dataFactory", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
configurable: true,
|
|
17
|
+
writable: true,
|
|
18
|
+
value: new DataFactory()
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
build() {
|
|
22
|
+
return this.value;
|
|
23
|
+
}
|
|
24
|
+
sparql(strings, ...values) {
|
|
25
|
+
return !values || values.length < 1
|
|
26
|
+
? sparql(strings)
|
|
27
|
+
: sparql(strings, ...values);
|
|
28
|
+
}
|
|
29
|
+
template(strings, values, keyword, wrap = none) {
|
|
30
|
+
const inputSparql = this.sparql(strings, ...values);
|
|
31
|
+
this.value += wrap(keyword, inputSparql);
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
namedNode(stringOrNamedNode, keyword, wrap = none) {
|
|
30
35
|
const namedNode = typeof stringOrNamedNode === "string"
|
|
31
|
-
?
|
|
36
|
+
? this.dataFactory.namedNode(stringOrNamedNode)
|
|
32
37
|
: stringOrNamedNode;
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
38
|
+
const inputSparql = this.sparql `${namedNode}`;
|
|
39
|
+
this.value += wrap(keyword, inputSparql);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
number(number, keyword, wrap = none) {
|
|
43
|
+
this.value += wrap(keyword, number.toString());
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -1,15 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { braces, SparqlBuilder } from "./sparql_shared_builders.js";
|
|
2
|
+
class SparqlUpdateBuilder extends SparqlBuilder {
|
|
3
|
+
WHERE(strings, ...values) {
|
|
4
|
+
return this.template(strings, values, "WHERE", braces);
|
|
5
|
+
}
|
|
6
|
+
USING_NAMED(stringOrNamedNode) {
|
|
7
|
+
return this.namedNode(stringOrNamedNode, "USING NAMED");
|
|
8
|
+
}
|
|
9
|
+
USING(stringOrNamedNode) {
|
|
10
|
+
return this.namedNode(stringOrNamedNode, "USING");
|
|
11
|
+
}
|
|
12
|
+
INSERT(strings, ...values) {
|
|
13
|
+
return this.template(strings, values, "INSERT", braces);
|
|
14
|
+
}
|
|
15
|
+
INSERT_DATA(strings, ...values) {
|
|
16
|
+
return this.template(strings, values, "INSERT DATA", braces);
|
|
17
|
+
}
|
|
18
|
+
DELETE(strings, ...values) {
|
|
19
|
+
return this.template(strings, values, "DELETE", braces);
|
|
20
|
+
}
|
|
21
|
+
DELETE_DATA(strings, ...values) {
|
|
22
|
+
return this.template(strings, values, "DELETE DATA", braces);
|
|
23
|
+
}
|
|
24
|
+
WITH(stringOrNamedNode) {
|
|
25
|
+
return this.namedNode(stringOrNamedNode, "WITH");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export const INSERT = Object.assign((strings, ...values) => new SparqlUpdateBuilder().INSERT(strings, ...values), {
|
|
29
|
+
DATA: (strings, ...values) => new SparqlUpdateBuilder().INSERT_DATA(strings, ...values),
|
|
9
30
|
});
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
export const DELETE = Object.assign(_DELETE, {
|
|
13
|
-
DATA: _DELETE_DATA,
|
|
31
|
+
export const DELETE = Object.assign((strings, ...values) => new SparqlUpdateBuilder().DELETE(strings, ...values), {
|
|
32
|
+
DATA: (strings, ...values) => new SparqlUpdateBuilder().DELETE_DATA(strings, ...values),
|
|
14
33
|
});
|
|
15
|
-
export const WITH =
|
|
34
|
+
export const WITH = (stringOrNamedNode) => new SparqlUpdateBuilder().WITH(stringOrNamedNode);
|
package/esm/mod.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { setDefaultContext, setDefaultEngine } from "./library/global.js";
|
|
2
|
-
export { createResource } from "./library/
|
|
2
|
+
export { createLens, createResource } from "./library/lens/mod.js";
|
|
3
3
|
export { createNamespace } from "./library/namespaces/namespace.js";
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"main": "./script/mod.js",
|
|
4
4
|
"types": "./types/mod.d.ts",
|
|
5
5
|
"name": "ldkit",
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.8.0",
|
|
7
7
|
"description": "LDkit, a Linked Data query toolkit for TypeScript developers",
|
|
8
8
|
"homepage": "https://ldkit.io",
|
|
9
9
|
"author": "Karel Klima <karelklima@gmail.com> (https://karelklima.com)",
|
|
@@ -23,31 +23,51 @@
|
|
|
23
23
|
},
|
|
24
24
|
"exports": {
|
|
25
25
|
".": {
|
|
26
|
-
"import":
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
"import": {
|
|
27
|
+
"types": "./types/mod.d.ts",
|
|
28
|
+
"default": "./esm/mod.js"
|
|
29
|
+
},
|
|
30
|
+
"require": {
|
|
31
|
+
"types": "./types/mod.d.ts",
|
|
32
|
+
"default": "./script/mod.js"
|
|
33
|
+
}
|
|
29
34
|
},
|
|
30
35
|
"./namespaces": {
|
|
31
|
-
"import":
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
"import": {
|
|
37
|
+
"types": "./types/namespaces.d.ts",
|
|
38
|
+
"default": "./esm/namespaces.js"
|
|
39
|
+
},
|
|
40
|
+
"require": {
|
|
41
|
+
"types": "./types/namespaces.d.ts",
|
|
42
|
+
"default": "./script/namespaces.js"
|
|
43
|
+
}
|
|
34
44
|
},
|
|
35
45
|
"./rdf": {
|
|
36
|
-
"import":
|
|
37
|
-
|
|
38
|
-
|
|
46
|
+
"import": {
|
|
47
|
+
"types": "./types/rdf.d.ts",
|
|
48
|
+
"default": "./esm/rdf.js"
|
|
49
|
+
},
|
|
50
|
+
"require": {
|
|
51
|
+
"types": "./types/rdf.d.ts",
|
|
52
|
+
"default": "./script/rdf.js"
|
|
53
|
+
}
|
|
39
54
|
},
|
|
40
55
|
"./sparql": {
|
|
41
|
-
"import":
|
|
42
|
-
|
|
43
|
-
|
|
56
|
+
"import": {
|
|
57
|
+
"types": "./types/sparql.d.ts",
|
|
58
|
+
"default": "./esm/sparql.js"
|
|
59
|
+
},
|
|
60
|
+
"require": {
|
|
61
|
+
"types": "./types/sparql.d.ts",
|
|
62
|
+
"default": "./script/sparql.js"
|
|
63
|
+
}
|
|
44
64
|
}
|
|
45
65
|
},
|
|
46
66
|
"dependencies": {
|
|
47
|
-
"@comunica/types": "2.
|
|
48
|
-
"asynciterator": "3.
|
|
67
|
+
"@comunica/types": "2.6.8",
|
|
68
|
+
"asynciterator": "3.8.0",
|
|
49
69
|
"rdf-data-factory": "1.1.1",
|
|
50
70
|
"rdf-js": "4.0.2",
|
|
51
|
-
"rdf-literal": "1.3.
|
|
71
|
+
"rdf-literal": "1.3.1"
|
|
52
72
|
}
|
|
53
73
|
}
|
package/script/library/global.js
CHANGED
|
@@ -10,7 +10,7 @@ const setDefaultContext = (context) => {
|
|
|
10
10
|
exports.setDefaultContext = setDefaultContext;
|
|
11
11
|
const resolveContext = (context) => {
|
|
12
12
|
if (!context && !defaultContext) {
|
|
13
|
-
throw new Error("No context found. Please create a default context or pass one to
|
|
13
|
+
throw new Error("No context found. Please create a default context or pass one to createLens function");
|
|
14
14
|
}
|
|
15
15
|
return context || defaultContext;
|
|
16
16
|
};
|
|
@@ -24,7 +24,7 @@ const resolveEngine = (engine) => {
|
|
|
24
24
|
(0, exports.setDefaultEngine)(new mod_js_1.QueryEngine());
|
|
25
25
|
// TODO: consider the consequences here, maybe log a warning?
|
|
26
26
|
/*throw new Error(
|
|
27
|
-
"No engine found. Please create a default engine or pass one to
|
|
27
|
+
"No engine found. Please create a default engine or pass one to createLens function",
|
|
28
28
|
);*/
|
|
29
29
|
}
|
|
30
30
|
return engine || defaultEngine;
|
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Lens = exports.createResource = exports.createLens = void 0;
|
|
4
4
|
const global_js_1 = require("../global.js");
|
|
5
5
|
const mod_js_1 = require("../schema/mod.js");
|
|
6
6
|
const decoder_js_1 = require("../decoder.js");
|
|
7
7
|
const query_builder_js_1 = require("./query_builder.js");
|
|
8
8
|
const query_engine_proxy_js_1 = require("../engine/query_engine_proxy.js");
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Lens lets you query and update RDF data via data schema using TypeScript native data types.
|
|
11
|
+
*
|
|
12
|
+
* https://ldkit.io/docs/components/lens
|
|
13
|
+
*
|
|
14
|
+
* @param schema data schema which extends `SchemaPrototype`
|
|
15
|
+
* @param context optional `Context` - contains LDkit and query engine configuration
|
|
16
|
+
* @param engine optional Query Engine
|
|
17
|
+
* @returns Lens instance
|
|
18
|
+
*/
|
|
19
|
+
const createLens = (schema, context, engine) => new Lens(schema, context, engine);
|
|
20
|
+
exports.createLens = createLens;
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated
|
|
23
|
+
* Use `createLens` instead
|
|
24
|
+
*/
|
|
25
|
+
const createResource = (schema, context, engine) => new Lens(schema, context, engine);
|
|
10
26
|
exports.createResource = createResource;
|
|
11
|
-
class
|
|
27
|
+
class Lens {
|
|
12
28
|
constructor(schema, context, engine) {
|
|
13
29
|
Object.defineProperty(this, "schema", {
|
|
14
30
|
enumerable: true,
|
|
@@ -97,4 +113,4 @@ class Resource {
|
|
|
97
113
|
return this.updateQuery(q);
|
|
98
114
|
}
|
|
99
115
|
}
|
|
100
|
-
exports.
|
|
116
|
+
exports.Lens = Lens;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createResource = exports.createLens = void 0;
|
|
4
|
+
var lens_js_1 = require("./lens.js");
|
|
5
|
+
Object.defineProperty(exports, "createLens", { enumerable: true, get: function () { return lens_js_1.createLens; } });
|
|
6
|
+
Object.defineProperty(exports, "createResource", { enumerable: true, get: function () { return lens_js_1.createResource; } });
|
|
@@ -2,37 +2,76 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DESCRIBE = exports.ASK = exports.CONSTRUCT = exports.SELECT = void 0;
|
|
4
4
|
const sparql_shared_builders_js_1 = require("./sparql_shared_builders.js");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
+
},
|
|
18
67
|
});
|
|
19
|
-
exports.
|
|
20
|
-
|
|
21
|
-
REDUCED,
|
|
22
|
-
ALL: _SELECT `*`,
|
|
68
|
+
exports.CONSTRUCT = Object.assign((strings, ...values) => new SparqlQueryBuilder().CONSTRUCT(strings, ...values), {
|
|
69
|
+
WHERE: (strings, ...values) => new SparqlQueryBuilder().CONSTRUCT_WHERE(strings, ...values),
|
|
23
70
|
});
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
WHERE:
|
|
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),
|
|
28
75
|
});
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const _ASK_FROM_NAMED = (0, sparql_shared_builders_js_1.createTemplateBuilder)((value) => `ASK\nFROM NAMED ${value}\n`, { FROM_NAMED, WHERE });
|
|
32
|
-
const _ASK_WHERE = (0, sparql_shared_builders_js_1.createTemplateBuilder)((value) => `ASK\nWHERE {\n${value}\n}\n`, { build: sparql_shared_builders_js_1.build, GROUP_BY, ORDER_BY, LIMIT });
|
|
33
|
-
exports.ASK = Object.assign(_ASK, {
|
|
34
|
-
FROM: _ASK_FROM,
|
|
35
|
-
FROM_NAMED: _ASK_FROM_NAMED,
|
|
36
|
-
WHERE: _ASK_WHERE,
|
|
37
|
-
});
|
|
38
|
-
exports.DESCRIBE = (0, sparql_shared_builders_js_1.createTemplateBuilder)((value) => `DESCRIBE ${value}\n`, { build: sparql_shared_builders_js_1.build, FROM, FROM_NAMED, WHERE });
|
|
76
|
+
const DESCRIBE = (strings, ...values) => new SparqlQueryBuilder().DESCRIBE(strings, ...values);
|
|
77
|
+
exports.DESCRIBE = DESCRIBE;
|