@lde/sparql-qlever 0.8.6 → 0.9.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.
@@ -26,6 +26,7 @@ export declare class Importer implements ImporterInterface {
26
26
  import(dataset: Dataset): Promise<NotSupported | ImportSuccessful | ImportFailed>;
27
27
  private doImport;
28
28
  private fileFormatFromMimeType;
29
+ private parseTripleCount;
29
30
  private index;
30
31
  }
31
32
  //# sourceMappingURL=importer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../src/importer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,iBAAiB,EAC7B,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,UAAU,EAEX,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAU9C,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE;QACd,qBAAqB,EAAE,OAAO,CAAC;QAC/B,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,QAAS,YAAW,iBAAiB;IAChD,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,aAAa,CAAC;gBAEV,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,OAAO;IAU5D,MAAM,CACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,GAAG,gBAAgB,GAAG,YAAY,CAAC;YAiC5C,QAAQ;IAYtB,OAAO,CAAC,sBAAsB;YAQhB,KAAK;CAsBpB"}
1
+ {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../src/importer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,iBAAiB,EAC7B,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,UAAU,EAEX,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAU9C,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE;QACd,qBAAqB,EAAE,OAAO,CAAC;QAC/B,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,QAAS,YAAW,iBAAiB;IAChD,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,aAAa,CAAC;gBAEV,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,OAAO;IAU5D,MAAM,CACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,GAAG,gBAAgB,GAAG,YAAY,CAAC;YAiC5C,QAAQ;IAatB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,gBAAgB;YAQV,KAAK;CAuBpB"}
package/dist/importer.js CHANGED
@@ -57,8 +57,9 @@ export class Importer {
57
57
  }
58
58
  async doImport(distribution) {
59
59
  const localFile = await this.downloader.download(distribution);
60
- await this.index(localFile, this.fileFormatFromMimeType(distribution.mimeType));
61
- return new ImportSuccessful(distribution);
60
+ const logs = await this.index(localFile, this.fileFormatFromMimeType(distribution.mimeType));
61
+ const tripleCount = this.parseTripleCount(logs);
62
+ return new ImportSuccessful(distribution, undefined, tripleCount);
62
63
  }
63
64
  fileFormatFromMimeType(mimeType) {
64
65
  const format = supportedFormats.get(mimeType);
@@ -67,6 +68,13 @@ export class Importer {
67
68
  }
68
69
  return format;
69
70
  }
71
+ parseTripleCount(logs) {
72
+ // Extract num-triples.normal from the metadata JSON that the index
73
+ // command cats to stdout. Use a regex rather than JSON.parse because
74
+ // Docker log multiplexing prepends binary frame headers to each chunk.
75
+ const match = logs.match(/"num-triples":\{[^}]*"normal":(\d+)/);
76
+ return match ? Number(match[1]) : undefined;
77
+ }
70
78
  async index(file, format) {
71
79
  const workingDir = dirname(file);
72
80
  const settingsFile = 'index.settings.json';
@@ -77,7 +85,8 @@ export class Importer {
77
85
  : this.qleverOptions;
78
86
  await writeFile(`${workingDir}/${settingsFile}`, JSON.stringify(settings));
79
87
  // TODO: write index to named volume instead of bind mount for better performance.
80
- const indexTask = await this.taskRunner.run(`(zcat '${basename(file)}' 2>/dev/null || cat '${basename(file)}') | qlever-index -i ${this.indexName} -s ${settingsFile} -F ${format} -f -`);
81
- await this.taskRunner.wait(indexTask);
88
+ const metadataFile = `${this.indexName}.meta-data.json`;
89
+ const indexTask = await this.taskRunner.run(`(zcat '${basename(file)}' 2>/dev/null || cat '${basename(file)}') | qlever-index -i ${this.indexName} -s ${settingsFile} -F ${format} -f - && cat ${metadataFile}`);
90
+ return await this.taskRunner.wait(indexTask);
82
91
  }
83
92
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lde/sparql-qlever",
3
- "version": "0.8.6",
3
+ "version": "0.9.0",
4
4
  "repository": {
5
5
  "url": "git+https://github.com/ldelements/lde.git",
6
6
  "directory": "packages/sparql-qlever"
@@ -25,7 +25,7 @@
25
25
  "dependencies": {
26
26
  "@lde/dataset": "0.7.1",
27
27
  "@lde/distribution-downloader": "0.5.1",
28
- "@lde/sparql-importer": "0.3.1",
28
+ "@lde/sparql-importer": "0.4.0",
29
29
  "@lde/sparql-server": "0.4.10",
30
30
  "@lde/task-runner": "0.2.10",
31
31
  "@lde/task-runner-docker": "0.2.11",