diff --git a/package-lock.json b/package-lock.json index c2f10e65..7e35113b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@babel/core": "^7.16.0", "@babel/preset-env": "^7.16.0", "@babel/register": "^7.16.0", + "@rdfjs/data-model": "^1", "arrayify-stream": "^1.0.0", "browserify": "^17.0.0", "chai": "^4.0.2", @@ -1734,6 +1735,18 @@ "dev": true, "optional": true }, + "node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-1.3.4.tgz", + "integrity": "sha512-iKzNcKvJotgbFDdti7GTQDCYmL7GsGldkYStiP0K8EYtN7deJu5t7U11rKTz+nR7RtesUggT+lriZ7BakFv8QQ==", + "dev": true, + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, "node_modules/@rdfjs/types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.0.tgz", @@ -9275,6 +9288,15 @@ "dev": true, "optional": true }, + "@rdfjs/data-model": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-1.3.4.tgz", + "integrity": "sha512-iKzNcKvJotgbFDdti7GTQDCYmL7GsGldkYStiP0K8EYtN7deJu5t7U11rKTz+nR7RtesUggT+lriZ7BakFv8QQ==", + "dev": true, + "requires": { + "@rdfjs/types": ">=1.0.1" + } + }, "@rdfjs/types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.0.tgz", diff --git a/package.json b/package.json index efde53b7..c7f999bf 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "@babel/core": "^7.16.0", "@babel/preset-env": "^7.16.0", "@babel/register": "^7.16.0", + "@rdfjs/data-model": "^1", "arrayify-stream": "^1.0.0", "browserify": "^17.0.0", "chai": "^4.0.2", diff --git a/src/N3Parser.js b/src/N3Parser.js index 4e544fa9..d3b3bf38 100644 --- a/src/N3Parser.js +++ b/src/N3Parser.js @@ -86,7 +86,7 @@ export default class N3Parser { this._inversePredicate = false; // In N3, blank nodes are scoped to a formula // (using a dot as separator, as a blank node label cannot start with it) - this._prefixes._ = (this._graph ? `${this._graph.id.substr(2)}.` : '.'); + this._prefixes._ = (this._graph ? `${this._graph.value}.` : '.'); // Quantifiers are scoped to a formula this._quantified = Object.create(this._quantified); } diff --git a/test/N3Parser-test.js b/test/N3Parser-test.js index 5e0f7114..d91250a6 100644 --- a/test/N3Parser-test.js +++ b/test/N3Parser-test.js @@ -1,3 +1,4 @@ +import rdfDataModel from '@rdfjs/data-model'; import { Parser, termFromId } from '../src/'; import { NamedNode, BlankNode, Quad } from '../src/N3DataFactory'; @@ -2486,6 +2487,22 @@ describe('Parser', () => { }); }); + describe('A parser instance with external data factory', () => { + it('should parse', () => { + const parser = new Parser({ + baseIRI: BASE_IRI, + format: 'n3', + factory: rdfDataModel, + }); + const quads = parser.parse(` + @prefix : . + { :weather a :Raining } => { :weather a :Cloudy } . + `); + + quads.length.should.be.gt(0); + }); + }); + describe('IRI resolution', () => { describe('RFC3986 normal examples', () => { itShouldResolve('http://a/bb/ccc/d;p?q', 'g:h', 'g:h');