Skip to content

Commit

Permalink
refactor: Replace deprecated type library (#918)
Browse files Browse the repository at this point in the history
  • Loading branch information
ddeboer committed Jun 3, 2024
1 parent 241cf97 commit 6236ddb
Show file tree
Hide file tree
Showing 13 changed files with 28 additions and 42 deletions.
5 changes: 4 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
{
"extends": "./node_modules/gts/"
"extends": "./node_modules/gts/",
"rules": {
"@typescript-eslint/no-unused-vars": "error"
}
}
4 changes: 2 additions & 2 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ export default {
coverageReporters: ['json-summary', 'text'],
coverageThreshold: {
global: {
lines: 71.9,
statements: 72.1,
lines: 71.97,
statements: 72.16,
branches: 63.57,
functions: 70,
},
Expand Down
12 changes: 0 additions & 12 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
"@opentelemetry/sdk-metrics": "^1.14.0",
"@opentelemetry/sdk-node": "^0.45.1",
"@opentelemetry/semantic-conventions": "^1.14.0",
"@rdfjs/dataset": "^2.0.0",
"@types/rdf-validate-shacl": "^0.4.0",
"asynciterator": "^3.2.0",
"fastify": "^4.0.1",
Expand All @@ -52,7 +51,6 @@
"rdf-dataset-ext": "^1.0.0",
"rdf-dereference": "^2.0.0",
"rdf-ext": "^2.0.1",
"rdf-js": "^4.0.2",
"rdf-serialize": "^2.0.0",
"rdf-validate-shacl": "^0.5.1"
},
Expand All @@ -64,7 +62,6 @@
"@types/psl": "^1.1.0",
"@types/rdf-dataset-ext": "^1.0.1",
"@types/rdf-ext": "^2.0.1",
"@types/rdfjs__dataset": "^2.0.0",
"chokidar": "^3.5.2",
"gts": "^5.2.0",
"husky": "^9.0.11",
Expand Down
15 changes: 7 additions & 8 deletions src/dataset.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
import DatasetExt from 'rdf-ext/lib/Dataset';
import factory from 'rdf-ext';
import rdf from 'rdf-ext';
import {URL} from 'url';
import {datasetType} from './query.js';
import {Readable, Transform} from 'stream';
import {StreamParser} from 'n3';
import {DataFactory, StreamParser} from 'n3';
import {JsonLdParser} from 'jsonld-streaming-parser';
import {StandardizeSchemaOrgPrefixToHttps} from './transform.js';
import {DatasetCore} from 'rdf-js';
import {DatasetCore} from '@rdfjs/types';
import namedNode = DataFactory.namedNode;

export interface DatasetStore {
/**
* Store an array of dataset descriptions, replacing any triples that were previously stored for the datasets.
*/
store(datasets: DatasetExt[]): Promise<void>;
store(datasets: DatasetCore[]): Promise<void>;

countDatasets(): Promise<number>;

Expand All @@ -24,18 +23,18 @@ export function extractIri(dataset: DatasetCore): URL {
const quad = [
...dataset.match(
null,
factory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
datasetType
),
][0];
return new URL(quad.subject.value);
}

export function extractIris(datasets: DatasetExt[]): Map<URL, DatasetExt> {
export function extractIris(datasets: DatasetCore[]): Map<URL, DatasetCore> {
return datasets.reduce((map, dataset) => {
map.set(extractIri(dataset), dataset);
return map;
}, new Map<URL, DatasetExt>());
}, new Map<URL, DatasetCore>());
}

export async function load(
Expand Down
7 changes: 3 additions & 4 deletions src/graphdb.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import fetch, {Headers, Response} from 'node-fetch';
import DatasetExt from 'rdf-ext/lib/Dataset';
import factory from 'rdf-ext';
import {URL} from 'url';
import querystring from 'querystring';
import {Quad, Quad_Object, Quad_Predicate} from 'rdf-js';
import {Writer} from 'n3';
import {
AllowedRegistrationDomainStore,
Expand All @@ -13,6 +11,7 @@ import {
import {DatasetStore, extractIris} from './dataset.js';
import {Rating, RatingStore} from './rate.js';
import http from 'node:http';
import {DatasetCore, Quad, Quad_Object, Quad_Predicate} from '@rdfjs/types';

export type SparqlResult = {
results: {
Expand Down Expand Up @@ -371,15 +370,15 @@ export class GraphDbDatasetStore implements DatasetStore {
*
* @see https://graphdb.ontotext.com/documentation/standard/replace-graph.html
*/
public async store(datasets: DatasetExt[]) {
public async store(datasets: DatasetCore[]) {
// Find each Dataset’s IRI.
for (const [iri, dataset] of [...extractIris(datasets)]) {
// Serialize requests: wait for each response before sending next request to prevent GraphDB from running OOM.
await this.storeDataset(dataset, iri);
}
}

private async storeDataset(dataset: DatasetExt, graphIri: URL) {
private async storeDataset(dataset: DatasetCore, graphIri: URL) {
await new Promise((resolve, reject) => {
getWriter([...dataset.match(null, null, null, null)]).end(
async (error, result) => {
Expand Down
2 changes: 1 addition & 1 deletion src/query.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {BlankNode, NamedNode, Quad, Quad_Object, Term} from 'rdf-js';
import factory from 'rdf-ext';
import {BlankNodeScoped} from '@comunica/data-factory';
import {convertToXsdDate} from './literal.js';
import {BlankNode, NamedNode, Quad, Quad_Object, Term} from '@rdfjs/types';

const dataset = 'dataset';
const identifier = 'identifier';
Expand Down
2 changes: 1 addition & 1 deletion src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ import * as psl from 'psl';
import {rdfSerializer} from './rdf.js';
import fastifySwagger from '@fastify/swagger';
import fastifyCors from '@fastify/cors';
import {DatasetCore} from 'rdf-js';
import acceptsSerializer from '@fastify/accepts-serializer';
import fastifySwaggerUi from '@fastify/swagger-ui';
import {registrationsCounter, validationsCounter} from './instrumentation.js';
import {DatasetCore} from '@rdfjs/types';

const serializer =
(contentType: string) =>
Expand Down
2 changes: 1 addition & 1 deletion src/transform.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {Transform, TransformCallback} from 'stream';
import {Quad, Quad_Object} from 'rdf-js';
import factory from 'rdf-ext';
import {NamedNode} from 'n3';
import {Quad, Quad_Object} from '@rdfjs/types';

/**
* Convert http://schema.org prefix to https://schema.org for consistency.
Expand Down
5 changes: 2 additions & 3 deletions src/validator.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import {DatasetCore} from 'rdf-js';
import factory from 'rdf-ext';
import SHACLValidator from 'rdf-validate-shacl';
import DatasetExt from 'rdf-ext/lib/Dataset';
import ValidationReport from 'rdf-validate-shacl/src/validation-report';
import {rdfDereferencer} from './rdf.js';
import {Dataset, DatasetCore} from '@rdfjs/types';

export interface Validator {
/**
Expand All @@ -23,7 +22,7 @@ export class ShaclValidator implements Validator {
this.inner = new SHACLValidator(dataset);
}

public async validate(dataset: DatasetExt): Promise<ValidationResult> {
public async validate(dataset: Dataset): Promise<ValidationResult> {
const datasetIris = dataset.filter(
quad =>
quad.subject.termType === 'NamedNode' && // Prevent blank nodes
Expand Down
2 changes: 1 addition & 1 deletion test/crawler.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import nock from 'nock';
import Pino from 'pino';
import {Validator} from '../src/validator';
import factory from 'rdf-ext';
import {DatasetCore} from 'rdf-js';
import {DatasetCore} from '@rdfjs/types';

let registrationStore: MockRegistrationStore;
let crawler: Crawler;
Expand Down
2 changes: 1 addition & 1 deletion test/fetch.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import nock from 'nock';
import {dcat, dct, foaf, rdf} from '../src/query';
import factory from 'rdf-ext';
import {file} from './mock';
import {BlankNode} from 'rdf-js';
import {BlankNode} from '@rdfjs/types';

describe('Fetch', () => {
it('must accept valid DCAT dataset descriptions', async () => {
Expand Down
9 changes: 5 additions & 4 deletions test/validator.test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import rdf from 'rdf-ext';
import {JsonLdParser} from 'jsonld-streaming-parser';
import * as fs from 'fs';
import fs from 'fs';
import {InvalidDataset, shacl, ShaclValidator, Valid} from '../src/validator';
import {StreamParser} from 'n3';
import {Transform} from 'stream';
import {StandardizeSchemaOrgPrefixToHttps} from '../src/transform';
import {MicrodataRdfParser} from 'microdata-rdf-streaming-parser/lib/MicrodataRdfParser';
import {RdfaParser} from 'rdfa-streaming-parser/lib/RdfaParser';
import rdf from 'rdf-ext';
import {Dataset} from '@rdfjs/types';

const validator = await ShaclValidator.fromUrl('shacl/register.ttl');

Expand Down Expand Up @@ -171,12 +172,12 @@ export const validate = async (filename: string, parser?: Transform) =>
validator.validate(await dataset(filename, parser));

const dataset = async (filename: string, parser?: Transform) => {
return await rdf.dataset().import(
return (await rdf.dataset().import(
fs
.createReadStream(`test/datasets/${filename}`)
.pipe(parser ?? (new JsonLdParser() as unknown as Transform))
.pipe(new StandardizeSchemaOrgPrefixToHttps())
);
)) as unknown as Dataset;
};

const expectViolations = (
Expand Down

0 comments on commit 6236ddb

Please sign in to comment.