Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Notation3 or N3 is a superset of RDF, the Semantic Web language. This library will provide a high-performance N3 store, parser, and generator (when finished).
Currently implemented:
The node-n3 library can parse Turtle strings.
var parser = new n3.Parser();
parser.parse('@prefix c: <http://example.org/cartoons#>.\n' +
'c:Tom a c:Cat.\n' +
'c:Jerry a c:Mouse;\n' +
' c:smarterThan c:Tom.',
function (error, triple) {
if (triple)
console.log(triple.subject, triple.predicate, triple.object, '.');
else
console.log("# That's all, folks!")
});
Additionally, it can parse streams as they grow, returning triples as soon as they're ready.
This behavior sets node-n3 apart from most other Turtle libraries.
var parser = new n3.Parser(),
turtleStream = fs.createReadStream('cartoons.ttl');
parser.parse(turtleStream, console.log);
node-n3 offers a Transform interface to the Node Stream system, so you can transform Turtle streams and pipe them to anywhere. This solution is ideal if your consumer is slower, as it avoids backpressure from the parser.
var transform = new n3.Transform(),
turtleStream = fs.createReadStream('cartoons.ttl');
turtleStream.pipe(transform);
transform.pipe(new SlowWriter());
function SlowWriter() {
var writer = new Writable({ objectMode: true });
writer._write = function (triple, encoding, done) {
console.log(triple);
setTimeout(done, 1000);
};
return writer;
}
In this example below, we create a new store and add the triples :Pluto a :Dog.
and :Mickey a :Mouse
.
Then, we find a triple with :Mickey
as subject.
var n3 = require('n3');
var store = new n3.Store();
store.add(':Pluto', 'a', ':Dog');
store.add(':Mickey', 'a', ':Mouse');
var mickey = store.find(':Mickey', null, null)[0];
console.log(mickey.subject, mickey.predicate, mickey.object, '.');
// :Mickey a :Mouse .
node-n3 has a special syntax to represent URIs and literals,
making code efficient to write and execute.
As URIs are most common, they are represented as simple strings:
var N3Util = require('n3').Util;
N3Util.isUri('http://example.org/cartoons#Mickey'); // true
Literals are represented as double quoted strings:
N3Util.isLiteral('"Mickey Mouse"'); // true
N3Util.isLiteral('"Mickey Mouse"@en'); // true
N3Util.isLiteral('"3"^^<http://www.w3.org/2001/XMLSchema#integer>'); // true
N3Util.isLiteral('"http://example.org/"'); // true
Note the difference between 'http://example.org/'
(URI) and '"http://example.org/"'
(literal).
Also note that the double quoted literals are not raw Turtle syntax:
N3Util.isLiteral('"This word is "quoted"!"'); // true
The above string represents the string This word is "quoted"!,
even though the correct Turtle syntax for that is "This word is \"quoted\"!"
node-n3 thus always parses literals, but adds quotes to differentiate from URIs:
new n3.Parser().parse('<a> <b> "This word is \\"quoted\\"!".', console.log);
// { subject: 'a', predicate: 'b', object: '"This word is "quoted"!"' }
For convenience, N3Util
can also be loaded globally:
require('n3').Util(global);
isUri('http://example.org/cartoons#Mickey'); // true
isLiteral('"Mickey Mouse"'); // true
If desired, the methods can even be added directly on all strings:
require('n3').Util(String, true);
'http://example.org/cartoons#Mickey'.isUri(); // true
'"Mickey Mouse"'.isLiteral(); // true
You can install the n3 library as an npm package.
$ npm install n3
The Bringing reasoning to the Web page explains the origins of this project and provides pointers to related resources.
FAQs
Lightning fast, asynchronous, streaming Turtle / N3 / RDF library.
The npm package n3 receives a total of 57,078 weekly downloads. As such, n3 popularity was classified as popular.
We found that n3 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.