@lde/pipeline 0.10.0 → 0.12.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.
@@ -1 +1 @@
1
- {"version":3,"file":"importResolver.d.ts","sourceRoot":"","sources":["../../src/distribution/importResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,oBAAoB;IAEvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,qBAAqB;IAG3C,OAAO,CACX,GAAG,IAAI,EAAE,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,GACnD,OAAO,CAAC,oBAAoB,GAAG,uBAAuB,CAAC;IA2BpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
1
+ {"version":3,"file":"importResolver.d.ts","sourceRoot":"","sources":["../../src/distribution/importResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,oBAAoB;IAEvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,qBAAqB;IAG3C,OAAO,CACX,GAAG,IAAI,EAAE,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,GACnD,OAAO,CAAC,oBAAoB,GAAG,uBAAuB,CAAC;IA+BpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -25,7 +25,7 @@ export class ImportResolver {
25
25
  await this.options.server.start();
26
26
  const distribution = Distribution.sparql(this.options.server.queryEndpoint, importResult.identifier);
27
27
  distribution.subjectFilter = importResult.distribution.subjectFilter;
28
- return new ResolvedDistribution(distribution, result.probeResults);
28
+ return new ResolvedDistribution(distribution, result.probeResults, importResult.distribution);
29
29
  }
30
30
  return new NoDistributionAvailable(dataset, 'No SPARQL endpoint or importable data dump available', result.probeResults, importResult instanceof ImportFailed ? importResult : undefined);
31
31
  }
@@ -4,7 +4,8 @@ import { type ProbeResultType } from './probe.js';
4
4
  export declare class ResolvedDistribution {
5
5
  readonly distribution: Distribution;
6
6
  readonly probeResults: ProbeResultType[];
7
- constructor(distribution: Distribution, probeResults: ProbeResultType[]);
7
+ readonly importedFrom?: Distribution | undefined;
8
+ constructor(distribution: Distribution, probeResults: ProbeResultType[], importedFrom?: Distribution | undefined);
8
9
  }
9
10
  export declare class NoDistributionAvailable {
10
11
  readonly dataset: Dataset;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/distribution/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5E,qBAAa,oBAAoB;IAE7B,QAAQ,CAAC,YAAY,EAAE,YAAY;IACnC,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE;gBAD/B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,eAAe,EAAE;CAE3C;AAED,qBAAa,uBAAuB;IAEhC,QAAQ,CAAC,OAAO,EAAE,OAAO;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY;gBAH3B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,eAAe,EAAE,EAC/B,YAAY,CAAC,EAAE,YAAY,YAAA;CAEvC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CACL,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,CAAC,EAAE,iCAAiC;IAIjD,OAAO,CACX,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,oBAAoB,GAAG,uBAAuB,CAAC;CA2B3D"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/distribution/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5E,qBAAa,oBAAoB;IAE7B,QAAQ,CAAC,YAAY,EAAE,YAAY;IACnC,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY;gBAF3B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,eAAe,EAAE,EAC/B,YAAY,CAAC,EAAE,YAAY,YAAA;CAEvC;AAED,qBAAa,uBAAuB;IAEhC,QAAQ,CAAC,OAAO,EAAE,OAAO;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY;gBAH3B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,eAAe,EAAE,EAC/B,YAAY,CAAC,EAAE,YAAY,YAAA;CAEvC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CACL,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,CAAC,EAAE,iCAAiC;IAIjD,OAAO,CACX,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,oBAAoB,GAAG,uBAAuB,CAAC;CA2B3D"}
@@ -2,9 +2,11 @@ import { probe, SparqlProbeResult } from './probe.js';
2
2
  export class ResolvedDistribution {
3
3
  distribution;
4
4
  probeResults;
5
- constructor(distribution, probeResults) {
5
+ importedFrom;
6
+ constructor(distribution, probeResults, importedFrom) {
6
7
  this.distribution = distribution;
7
8
  this.probeResults = probeResults;
9
+ this.importedFrom = importedFrom;
8
10
  }
9
11
  }
10
12
  export class NoDistributionAvailable {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,EAAE;QACT,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AA8BD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAmB;gBAEjC,OAAO,EAAE,eAAe;IAgC9B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAaZ,cAAc;YAiCd,QAAQ;YA8BR,QAAQ;YAmDR,eAAe;YAkCd,SAAS;CAUzB"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,4BAA4B,CAAC;AAQpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,EAAE;QACT,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AA8BD,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAmB;gBAEjC,OAAO,EAAE,eAAe;IAgC9B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAaZ,cAAc;YA6Cd,QAAQ;YA8BR,QAAQ;YAmDR,eAAe;YAkCd,SAAS;CAUzB"}
package/dist/pipeline.js CHANGED
@@ -3,6 +3,7 @@ import { StreamParser } from 'n3';
3
3
  import { FileWriter } from './writer/fileWriter.js';
4
4
  import { NoDistributionAvailable, } from './distribution/resolver.js';
5
5
  import { SparqlDistributionResolver } from './distribution/index.js';
6
+ import { NetworkError, SparqlProbeResult, } from './distribution/probe.js';
6
7
  import { NotSupported } from './sparql/executor.js';
7
8
  class FanOutWriter {
8
9
  writers;
@@ -76,10 +77,16 @@ export class Pipeline {
76
77
  const datasetIri = dataset.iri.toString();
77
78
  this.reporter?.datasetStart(datasetIri);
78
79
  const resolved = await this.distributionResolver.resolve(dataset);
80
+ this.reporter?.distributionsAnalyzed(datasetIri, mapProbeResults(resolved.probeResults));
79
81
  if (resolved instanceof NoDistributionAvailable) {
80
82
  this.reporter?.datasetSkipped(datasetIri, resolved.message);
81
83
  return;
82
84
  }
85
+ this.reporter?.distributionSelected(datasetIri, {
86
+ accessUrl: resolved.distribution.accessUrl.toString(),
87
+ namedGraph: resolved.distribution.namedGraph,
88
+ importedFrom: resolved.importedFrom?.accessUrl?.toString(),
89
+ });
83
90
  try {
84
91
  for (const stage of this.stages) {
85
92
  try {
@@ -188,3 +195,23 @@ export class Pipeline {
188
195
  }
189
196
  }
190
197
  }
198
+ function mapProbeResults(probeResults) {
199
+ return probeResults.map((result) => {
200
+ if (result instanceof NetworkError) {
201
+ return {
202
+ accessUrl: result.url,
203
+ type: 'network-error',
204
+ available: false,
205
+ error: result.message,
206
+ };
207
+ }
208
+ return {
209
+ accessUrl: result.url,
210
+ type: result instanceof SparqlProbeResult
211
+ ? 'sparql'
212
+ : 'data-dump',
213
+ available: result.isSuccess(),
214
+ statusCode: result.statusCode,
215
+ };
216
+ });
217
+ }
@@ -1,6 +1,18 @@
1
1
  export interface ProgressReporter {
2
2
  pipelineStart(name: string): void;
3
3
  datasetStart(dataset: string): void;
4
+ distributionsAnalyzed(dataset: string, results: Array<{
5
+ accessUrl: string;
6
+ type: 'sparql' | 'data-dump' | 'network-error';
7
+ available: boolean;
8
+ statusCode?: number;
9
+ error?: string;
10
+ }>): void;
11
+ distributionSelected(dataset: string, distribution: {
12
+ accessUrl: string;
13
+ namedGraph?: string;
14
+ importedFrom?: string;
15
+ }): void;
4
16
  stageStart(stage: string): void;
5
17
  stageProgress(update: {
6
18
  elementsProcessed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"progressReporter.d.ts","sourceRoot":"","sources":["../src/progressReporter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,MAAM,EAAE;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI,CAAC;IACT,aAAa,CACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;QACN,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACA,IAAI,CAAC;IACR,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,gBAAgB,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACtD"}
1
+ {"version":3,"file":"progressReporter.d.ts","sourceRoot":"","sources":["../src/progressReporter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC;QAC/C,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,GACD,IAAI,CAAC;IACR,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,IAAI,CAAC;IACR,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,MAAM,EAAE;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI,CAAC;IACT,aAAa,CACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;QACN,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACA,IAAI,CAAC;IACR,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtD,gBAAgB,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACtD"}
@@ -1,7 +1,6 @@
1
1
  import { Dataset, Distribution } from '@lde/dataset';
2
2
  import { SparqlEndpointFetcher } from 'fetch-sparql-endpoint';
3
- import type { NamedNode, Quad, Stream } from '@rdfjs/types';
4
- import type { Readable } from 'node:stream';
3
+ import type { NamedNode, Quad } from '@rdfjs/types';
5
4
  /**
6
5
  * An executor could not run because the dataset lacks a supported distribution.
7
6
  */
@@ -21,11 +20,6 @@ export interface ExecuteOptions {
21
20
  export interface Executor {
22
21
  execute(dataset: Dataset, distribution: Distribution, options?: ExecuteOptions): Promise<AsyncIterable<Quad> | NotSupported>;
23
22
  }
24
- /**
25
- * A quad stream that is both an RDFJS Stream and Node.js Readable (async iterable).
26
- * This is the actual return type from SparqlEndpointFetcher.fetchTriples().
27
- */
28
- export type QuadStream = Readable & Stream<Quad>;
29
23
  /**
30
24
  * Options for SparqlConstructExecutor.
31
25
  */
@@ -85,7 +79,7 @@ export declare class SparqlConstructExecutor implements Executor {
85
79
  * @param options Optional execution options (bindings).
86
80
  * @returns AsyncIterable<Quad> stream of results.
87
81
  */
88
- execute(dataset: Dataset, distribution: Distribution, options?: ExecuteOptions): Promise<QuadStream>;
82
+ execute(dataset: Dataset, distribution: Distribution, options?: ExecuteOptions): Promise<AsyncIterable<Quad>>;
89
83
  /**
90
84
  * Create an executor from a query file.
91
85
  *
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/sparql/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C;;GAEG;AACH,qBAAa,YAAY;aACK,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;CAC5C;AAED,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,CACL,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,uBAAwB,YAAW,QAAQ;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;gBAEjC,OAAO,EAAE,8BAA8B;IAkBnD;;;;;;;OAOG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC;IAiCtB;;;;;OAKG;WACiB,QAAQ,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,8BAA8B,EAAE,OAAO,CAAC,GACtD,OAAO,CAAC,uBAAuB,CAAC;CAIpC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/sparql/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AASpD;;GAEG;AACH,qBAAa,YAAY;aACK,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;CAC5C;AAED,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,CACL,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,uBAAwB,YAAW,QAAQ;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;gBAEjC,OAAO,EAAE,8BAA8B;IAkBnD;;;;;;;OAOG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAiC/B;;;;;OAKG;WACiB,QAAQ,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,8BAA8B,EAAE,OAAO,CAAC,GACtD,OAAO,CAAC,uBAAuB,CAAC;CAIpC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE"}
@@ -1,7 +1,8 @@
1
1
  import { SparqlEndpointFetcher } from 'fetch-sparql-endpoint';
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { resolve } from 'node:path';
4
- import { Generator, Parser } from 'sparqljs';
4
+ import { Parser } from '@traqula/parser-sparql-1-1';
5
+ import { Generator } from '@traqula/generator-sparql-1-1';
5
6
  import { withDefaultGraph } from './graph.js';
6
7
  import { injectValues } from './values.js';
7
8
  /**
@@ -49,7 +50,7 @@ export class SparqlConstructExecutor {
49
50
  this.rawQuery = options.query;
50
51
  if (!options.query.includes('#subjectFilter#')) {
51
52
  const parsed = new Parser().parse(options.query);
52
- if (parsed.type !== 'query' || parsed.queryType !== 'CONSTRUCT') {
53
+ if (parsed.type !== 'query' || parsed.subType !== 'construct') {
53
54
  throw new Error('Query must be a CONSTRUCT query');
54
55
  }
55
56
  this.preParsed = parsed;
@@ -77,7 +78,7 @@ export class SparqlConstructExecutor {
77
78
  else {
78
79
  const substituted = this.rawQuery.replace('#subjectFilter#', distribution.subjectFilter ?? '');
79
80
  const parsed = new Parser().parse(substituted);
80
- if (parsed.type !== 'query' || parsed.queryType !== 'CONSTRUCT') {
81
+ if (parsed.type !== 'query' || parsed.subType !== 'construct') {
81
82
  throw new Error('Query must be a CONSTRUCT query');
82
83
  }
83
84
  ast = parsed;
@@ -89,7 +90,7 @@ export class SparqlConstructExecutor {
89
90
  if (bindings !== undefined && bindings.length > 0) {
90
91
  ast = injectValues(ast, bindings);
91
92
  }
92
- let query = this.generator.stringify(ast);
93
+ let query = this.generator.generate(ast);
93
94
  query = query.replaceAll('?dataset', `<${dataset.iri}>`);
94
95
  return await this.fetcher.fetchTriples(endpoint.toString(), query);
95
96
  }
@@ -1,8 +1,8 @@
1
- import type { ConstructQuery } from 'sparqljs';
1
+ import { type QueryConstruct } from '@traqula/rules-sparql-1-1';
2
2
  /**
3
3
  * Set the default graph (FROM clause) on a parsed CONSTRUCT query.
4
4
  *
5
5
  * Mutates the query in place, replacing any existing FROM clause.
6
6
  */
7
- export declare function withDefaultGraph(query: ConstructQuery, graphIri: string): void;
7
+ export declare function withDefaultGraph(query: QueryConstruct, graphIri: string): void;
8
8
  //# sourceMappingURL=graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/sparql/graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,MAAM,GACf,IAAI,CAEN"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/sparql/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI5E;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,MAAM,GACf,IAAI,CAKN"}
@@ -1,9 +1,10 @@
1
- import { DataFactory } from 'n3';
1
+ import { AstFactory } from '@traqula/rules-sparql-1-1';
2
+ const F = new AstFactory();
2
3
  /**
3
4
  * Set the default graph (FROM clause) on a parsed CONSTRUCT query.
4
5
  *
5
6
  * Mutates the query in place, replacing any existing FROM clause.
6
7
  */
7
8
  export function withDefaultGraph(query, graphIri) {
8
- query.from = { default: [DataFactory.namedNode(graphIri)], named: [] };
9
+ query.datasets = F.datasetClauses([{ clauseType: 'default', value: F.termNamed(F.gen(), graphIri) }], F.gen());
9
10
  }
@@ -1,4 +1,4 @@
1
- export { SparqlConstructExecutor, NotSupported, readQueryFile, type ExecuteOptions, type Executor, type SparqlConstructExecutorOptions, type QuadStream, type VariableBindings, } from './executor.js';
1
+ export { SparqlConstructExecutor, NotSupported, readQueryFile, type ExecuteOptions, type Executor, type SparqlConstructExecutorOptions, type VariableBindings, } from './executor.js';
2
2
  export { SparqlItemSelector, type SparqlItemSelectorOptions, } from './selector.js';
3
3
  export { injectValues } from './values.js';
4
4
  export { withDefaultGraph } from './graph.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sparql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,UAAU,EACf,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sparql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/sparql/selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAQ9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKtD,MAAM,WAAW,yBAAyB;IACxC,4GAA4G;IAC5G,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;gBAEpC,OAAO,EAAE,yBAAyB;IAkBvC,MAAM,CACX,YAAY,EAAE,YAAY,GACzB,qBAAqB,CAAC,gBAAgB,CAAC;CAmC3C"}
1
+ {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/sparql/selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAQ9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMtD,MAAM,WAAW,yBAAyB;IACxC,4GAA4G;IAC5G,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;gBAEpC,OAAO,EAAE,yBAAyB;IAqBvC,MAAM,CACX,YAAY,EAAE,YAAY,GACzB,qBAAqB,CAAC,gBAAgB,CAAC;CAsC3C"}
@@ -1,7 +1,10 @@
1
1
  import { SparqlEndpointFetcher } from 'fetch-sparql-endpoint';
2
- import { Generator, Parser, } from 'sparqljs';
2
+ import { Parser } from '@traqula/parser-sparql-1-1';
3
+ import { Generator } from '@traqula/generator-sparql-1-1';
4
+ import { AstFactory, } from '@traqula/rules-sparql-1-1';
3
5
  const parser = new Parser();
4
6
  const generator = new Generator();
7
+ const F = new AstFactory();
5
8
  /**
6
9
  * {@link ItemSelector} that pages through SPARQL SELECT results,
7
10
  * yielding all projected variable bindings (NamedNode values only) per row.
@@ -18,7 +21,7 @@ export class SparqlItemSelector {
18
21
  fetcher;
19
22
  constructor(options) {
20
23
  const parsed = parser.parse(options.query);
21
- if (parsed.type !== 'query' || parsed.queryType !== 'SELECT') {
24
+ if (parsed.type !== 'query' || parsed.subType !== 'select') {
22
25
  throw new Error('Query must be a SELECT query');
23
26
  }
24
27
  const variables = parsed.variables.filter(isVariableTerm);
@@ -26,16 +29,18 @@ export class SparqlItemSelector {
26
29
  throw new Error('Query must project at least one named variable (SELECT * is not supported)');
27
30
  }
28
31
  this.parsed = parsed;
29
- this.pageSize = options.pageSize ?? parsed.limit ?? 10;
32
+ this.pageSize =
33
+ options.pageSize ??
34
+ this.parsed.solutionModifiers.limitOffset?.limit ??
35
+ 10;
30
36
  this.fetcher = options.fetcher ?? new SparqlEndpointFetcher();
31
37
  }
32
38
  async *select(distribution) {
33
39
  const endpoint = distribution.accessUrl;
34
40
  let offset = 0;
35
41
  while (true) {
36
- this.parsed.limit = this.pageSize;
37
- this.parsed.offset = offset;
38
- const paginatedQuery = generator.stringify(this.parsed);
42
+ this.parsed.solutionModifiers.limitOffset = F.solutionModifierLimitOffset(this.pageSize, offset, F.gen());
43
+ const paginatedQuery = generator.generate(this.parsed);
39
44
  const stream = (await this.fetcher.fetchBindings(endpoint.toString(), paginatedQuery));
40
45
  let pageSize = 0;
41
46
  for await (const record of stream) {
@@ -53,5 +58,8 @@ export class SparqlItemSelector {
53
58
  }
54
59
  }
55
60
  function isVariableTerm(v) {
56
- return 'termType' in v && v.termType === 'Variable';
61
+ return ('type' in v &&
62
+ v.type === 'term' &&
63
+ 'subType' in v &&
64
+ v.subType === 'variable');
57
65
  }
@@ -1,13 +1,12 @@
1
- import type { ConstructQuery } from 'sparqljs';
1
+ import { type QueryConstruct } from '@traqula/rules-sparql-1-1';
2
2
  import type { VariableBindings } from './executor.js';
3
3
  /**
4
4
  * Inject a VALUES clause into a parsed CONSTRUCT query for the given binding rows.
5
5
  *
6
- * Each row's keys become `?`-prefixed SPARQL variables; NamedNode values
7
- * become IRIs in the VALUES block. The VALUES clause is prepended to the
8
- * query's WHERE patterns.
6
+ * Each row's keys become SPARQL variables; NamedNode values become IRIs in the
7
+ * VALUES block. The VALUES clause is prepended to the query's WHERE patterns.
9
8
  *
10
9
  * The caller owns parsing and stringifying; this function operates on the AST.
11
10
  */
12
- export declare function injectValues(query: ConstructQuery, bindings: VariableBindings[]): ConstructQuery;
11
+ export declare function injectValues(query: QueryConstruct, bindings: VariableBindings[]): QueryConstruct;
13
12
  //# sourceMappingURL=values.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/sparql/values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,cAAc,CAchB"}
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/sparql/values.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,cAAc,CAoBhB"}
@@ -1,19 +1,23 @@
1
+ import { AstFactory, } from '@traqula/rules-sparql-1-1';
2
+ const F = new AstFactory();
1
3
  /**
2
4
  * Inject a VALUES clause into a parsed CONSTRUCT query for the given binding rows.
3
5
  *
4
- * Each row's keys become `?`-prefixed SPARQL variables; NamedNode values
5
- * become IRIs in the VALUES block. The VALUES clause is prepended to the
6
- * query's WHERE patterns.
6
+ * Each row's keys become SPARQL variables; NamedNode values become IRIs in the
7
+ * VALUES block. The VALUES clause is prepended to the query's WHERE patterns.
7
8
  *
8
9
  * The caller owns parsing and stringifying; this function operates on the AST.
9
10
  */
10
11
  export function injectValues(query, bindings) {
11
- const valuesPattern = {
12
- type: 'values',
13
- values: bindings.map((row) => Object.fromEntries(Object.entries(row).map(([name, node]) => [`?${name}`, node]))),
14
- };
12
+ const variableNames = bindings.length > 0 ? Object.keys(bindings[0]) : [];
13
+ const variables = variableNames.map((name) => F.termVariable(name, F.gen()));
14
+ const values = bindings.map((row) => Object.fromEntries(Object.entries(row).map(([name, node]) => [
15
+ name,
16
+ F.termNamed(F.gen(), node.value),
17
+ ])));
18
+ const valuesPattern = F.patternValues(variables, values, F.gen());
15
19
  return {
16
20
  ...query,
17
- where: [valuesPattern, ...(query.where ?? [])],
21
+ where: F.patternGroup([valuesPattern, ...query.where.patterns], F.gen()),
18
22
  };
19
23
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lde/pipeline",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "repository": {
5
5
  "url": "https://github.com/ldengine/lde",
6
6
  "directory": "packages/pipeline"
@@ -23,18 +23,17 @@
23
23
  "!**/*.tsbuildinfo"
24
24
  ],
25
25
  "dependencies": {
26
- "@lde/dataset": "0.6.10",
27
- "@lde/dataset-registry-client": "0.6.17",
28
- "@lde/sparql-importer": "0.2.10",
26
+ "@lde/dataset": "0.7.0",
27
+ "@lde/dataset-registry-client": "0.7.0",
28
+ "@lde/sparql-importer": "0.3.0",
29
29
  "@lde/sparql-server": "0.4.10",
30
30
  "@rdfjs/types": "^2.0.1",
31
+ "@traqula/generator-sparql-1-1": "^1.0.3",
32
+ "@traqula/parser-sparql-1-1": "^1.0.3",
33
+ "@traqula/rules-sparql-1-1": "^1.0.3",
31
34
  "fetch-sparql-endpoint": "^7.1.0",
32
- "filenamify-url": "^3.0.0",
33
- "n3": "^1.17.0",
34
- "sparqljs": "^3.7.3",
35
+ "filenamify-url": "^4.0.0",
36
+ "n3": "^2.0.1",
35
37
  "tslib": "^2.3.0"
36
- },
37
- "devDependencies": {
38
- "@types/sparqljs": "^3.1.12"
39
38
  }
40
39
  }