UNPKG

rdf-utils-dataset

Version:
89 lines (69 loc) 2.63 kB
import { strictEqual } from 'node:assert' import { describe, it } from 'mocha' import rdf from 'rdf-ext' import resourcesToGraph from '../resourcesToGraph.js' describe('resourcesToGraph', () => { it('should split resources in separate graphs', () => { const predicate = rdf.namedNode('http://example.org/predicate') const namedNode0 = rdf.namedNode('http://example.org/node0') const namedNode1 = rdf.namedNode('http://example.org/node1') const blankNode0 = rdf.blankNode() const blankNode1 = rdf.blankNode() const input = rdf.dataset([ rdf.quad(namedNode0, predicate, blankNode0), rdf.quad(blankNode0, predicate, namedNode1), rdf.quad(namedNode1, predicate, blankNode1) ]) const output = resourcesToGraph(input) const expected = rdf.dataset([ rdf.quad(namedNode0, predicate, blankNode0, namedNode0), rdf.quad(blankNode0, predicate, namedNode1, namedNode0), rdf.quad(namedNode1, predicate, blankNode1, namedNode1) ]) strictEqual(output.toCanonical(), expected.toCanonical()) }) it('should ignore the fragment part of the subject', () => { const predicate = rdf.namedNode('http://example.org/predicate') const namedNode0 = rdf.namedNode('http://example.org/node') const namedNode1 = rdf.namedNode('http://example.org/node#fragment') const blankNode0 = rdf.blankNode() const blankNode1 = rdf.blankNode() const input = rdf.dataset([ rdf.quad(namedNode0, predicate, blankNode0), rdf.quad(blankNode0, predicate, namedNode1), rdf.quad(namedNode1, predicate, blankNode1) ]) const output = resourcesToGraph(input) const expected = rdf.dataset([ rdf.quad(namedNode0, predicate, blankNode0, namedNode0), rdf.quad(blankNode0, predicate, namedNode1, namedNode0), rdf.quad(namedNode1, predicate, blankNode1, namedNode0) ]) strictEqual(output.toCanonical(), expected.toCanonical()) }) it('should use the given factory', () => { const predicate = rdf.namedNode('http://example.org/predicate') const namedNode = rdf.namedNode('http://example.org/node') const blankNode = rdf.blankNode() const input = rdf.dataset([ rdf.quad(namedNode, predicate, blankNode) ]) let count = 0 const factory = { dataset: () => { count++ return rdf.dataset() }, namedNode: iri => { count++ return rdf.namedNode(iri) }, quad: (s, p, o, g) => { count++ return rdf.quad(s, p, o, g) } } resourcesToGraph(input, { factory }) strictEqual(count, 4) }) })