@lde/dataset-registry-client 0.7.0 → 0.7.2

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/dist/client.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  import { Dataset } from '@lde/dataset';
2
+ import { DatasetSchema } from './schema.js';
3
+ import { type SchemaSearchInterface } from 'ldkit';
2
4
  import { Paginator } from './paginator.js';
5
+ export type SearchCriteria = SchemaSearchInterface<typeof DatasetSchema>;
3
6
  export declare class Client {
4
7
  private readonly sparqlEndpoint;
5
8
  private readonly schema;
@@ -75,7 +78,7 @@ export declare class Client {
75
78
  };
76
79
  };
77
80
  });
78
- query(criteria: object): Promise<Paginator<Dataset>>;
81
+ query(criteria: SearchCriteria): Promise<Paginator<Dataset>>;
79
82
  query(constructQuery: string): Promise<Paginator<Dataset>>;
80
83
  }
81
84
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AAIrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,MAAM;IAEf,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,cAAc,EAAE,GAAG,EACnB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAgB;IAGlC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CAqElE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,qBAAqB,EAAwB,MAAM,OAAO,CAAC;AAGzE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzE,qBAAa,MAAM;IAEf,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,cAAc,EAAE,GAAG,EACnB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAgB;IAGlC,KAAK,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5D,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CAoFlE"}
package/dist/client.js CHANGED
@@ -24,9 +24,16 @@ export class Client {
24
24
  total = results.length;
25
25
  pageSize = total;
26
26
  }
27
+ else if (args.$id) {
28
+ // Work around LDkit bug: count() ignores $id.
29
+ // IRI lookups don't need pagination.
30
+ results = await datasets.find({ where: args });
31
+ total = results.length;
32
+ pageSize = total;
33
+ }
27
34
  else {
28
35
  // With search criteria the results are paginated.
29
- total = await datasets.count({ ...args });
36
+ total = await datasets.count({ where: args });
30
37
  pageSize = 1000;
31
38
  }
32
39
  return new Paginator(async (offset, limit) => {
@@ -36,8 +43,16 @@ export class Client {
36
43
  // TODO: we could add a convention here like {OFFSET} {LIMIT} in the query string.
37
44
  items = await datasets.query(prepareQuery(args));
38
45
  }
46
+ else if (results) {
47
+ // Pre-fetched results ($id workaround): return them directly.
48
+ items = results;
49
+ }
39
50
  else {
40
- items = await datasets.find({ ...args, take: limit, skip: offset });
51
+ items = await datasets.find({
52
+ where: args,
53
+ take: limit,
54
+ skip: offset,
55
+ });
41
56
  }
42
57
  return items.map((dataset) => new Dataset({
43
58
  iri: new URL(dataset.$id),
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAelD"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAYA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBlD"}
package/dist/query.js CHANGED
@@ -1,18 +1,21 @@
1
- import { Generator, Parser } from 'sparqljs';
1
+ import { Parser } from '@traqula/parser-sparql-1-1';
2
+ import { Generator } from '@traqula/generator-sparql-1-1';
3
+ import { AstFactory, } from '@traqula/rules-sparql-1-1';
2
4
  import { ldkit, rdf } from 'ldkit/namespaces';
3
- import { DataFactory } from 'n3';
4
5
  const generator = new Generator();
6
+ const F = new AstFactory();
5
7
  export function prepareQuery(query) {
6
8
  const parsed = new Parser().parse(query);
7
- if (parsed.type !== 'query' || 'CONSTRUCT' !== parsed.queryType) {
9
+ if (parsed.type !== 'query' || parsed.subType !== 'construct') {
8
10
  throw new Error('Must be CONSTRUCT query');
9
11
  }
10
- const template = parsed.template;
11
- template.push({
12
- subject: template[0].subject,
13
- predicate: DataFactory.namedNode(rdf.type),
14
- object: DataFactory.namedNode(ldkit.Resource),
15
- });
16
- parsed.template = template;
17
- return generator.stringify(parsed);
12
+ const construct = parsed;
13
+ const firstTriple = construct.template.triples[0];
14
+ // Clone the template triples so we don't mutate the WHERE clause
15
+ // (CONSTRUCT WHERE shorthand shares the same BGP object).
16
+ construct.template = F.patternBgp([
17
+ ...construct.template.triples,
18
+ F.triple(firstTriple.subject, F.termNamed(F.gen(), rdf.type), F.termNamed(F.gen(), ldkit.Resource)),
19
+ ], F.gen());
20
+ return generator.generate(construct);
18
21
  }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@lde/dataset-registry-client",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "repository": {
5
- "url": "https://github.com/ldengine/lde",
5
+ "url": "git+https://github.com/ldelements/lde.git",
6
6
  "directory": "packages/dataset-registry-client"
7
7
  },
8
8
  "type": "module",
@@ -24,14 +24,13 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "@lde/dataset": "0.7.0",
27
+ "@traqula/generator-sparql-1-1": "^1.0.3",
28
+ "@traqula/parser-sparql-1-1": "^1.0.3",
29
+ "@traqula/rules-sparql-1-1": "^1.0.3",
27
30
  "ldkit": "^2.6.0",
28
- "n3": "^2.0.1",
29
- "sparqljs": "^3.7.4",
30
31
  "tslib": "^2.3.0"
31
32
  },
32
33
  "devDependencies": {
33
- "@comunica/query-sparql-file": "^5.1.3",
34
- "@types/n3": "^1.26.0",
35
- "@types/sparqljs": "^3.1.12"
34
+ "@comunica/query-sparql-file": "^5.1.3"
36
35
  }
37
36
  }