DefinitelyTyped/types/n3/n3-tests.ts

260 lines
12 KiB
TypeScript

import * as N3 from "n3";
import * as RDF from "rdf-js";
import * as fs from "fs";
import * as stream from "stream";
function test_add_prefix() {
const writer: N3.N3Writer = new N3.Writer();
writer.addPrefix('xsd', 'http://www.w3.org/2001/XMLSchema#');
writer.end((error, result) => {
console.log(result);
});
}
function test_add_prefixes() {
const writer: N3.N3Writer = new N3.Writer();
writer.addPrefixes({
freebase: N3.DataFactory.namedNode("http://rdf.freebase.com/ns/"),
xsd: N3.DataFactory.namedNode("http://www.w3.org/2001/XMLSchema#"),
rdf: 'http://test'
});
writer.end((error, result) => {
console.log(result);
});
}
function test_serialize() {
const writer: N3.N3Writer = new N3.Writer(
{
format: "ttl",
prefixes: {
foaf: "http://xmlns.com/foaf/0.1",
freebase: N3.DataFactory.namedNode("http://rdf.freebase.com/ns/"),
g: "http://base.google.com/ns/1.0"
}
});
writer.addQuad(N3.DataFactory.quad(
N3.DataFactory.namedNode("subject-name"),
N3.DataFactory.namedNode("predicate-name"),
N3.DataFactory.literal(12)
));
writer.end((error, result) => {
console.log(`result ${result}`);
});
}
/*
The following tests are taken from ...
https://github.com/RubenVerborgh/N3.js/blob/master/README.md
*/
function test_doc_rdf_to_triples_1() {
const parser: N3.N3Parser = new N3.Parser();
parser.parse(`@prefix c: <http://example.org/cartoons#>.
c:Tom a c:Cat.
c:Jerry a c:Mouse;
c:smarterThan c:Tom.`,
(error: Error, quad: RDF.Quad, prefixes: N3.Prefixes) => {
if (quad)
console.log(quad.subject, quad.predicate, quad.object, quad.graph, '.');
else
console.log("# That's all, folks!", prefixes);
});
}
function test_doc_rdf_to_triples_2() {
const parser1: N3.N3Parser = new N3.Parser({ format: 'N-Triples' });
const parser2: N3.N3Parser = new N3.Parser({ format: 'application/trig' });
// Notation3 (N3) is supported only through the format argument:
const parser3: N3.N3Parser = new N3.Parser({ format: 'N3' });
const parser4: N3.N3Parser = new N3.Parser({ format: 'Notation3' });
const parser5: N3.N3Parser = new N3.Parser({ format: 'text/n3' });
}
function test_doc_rdf_sync_to_triples_1() {
const parser: N3.N3Parser = new N3.Parser();
const result = parser.parse(`@prefix c: <http://example.org/cartoons#>.
c:Tom a c:Cat.
c:Jerry a c:Mouse;
c:smarterThan c:Tom.`);
result.forEach((s) => console.log(s));
}
function test_doc_rdf_stream_to_triples_1() {
interface QuadBnode extends N3.BaseQuad {
subject: N3.BlankNode;
predicate: N3.BlankNode;
object: N3.BlankNode;
graph: N3.BlankNode;
}
const parser: N3.N3Parser<QuadBnode> = new N3.Parser<QuadBnode>({factory: N3.DataFactory});
parser.parse('abc', console.log);
const streamParser: N3.N3StreamParser = new N3.StreamParser();
const quad: RDF.Quad = streamParser.read();
const rdfStream = fs.createReadStream('cartoons.ttl');
const pipedStreamParser: N3.N3StreamParser = rdfStream.pipe(streamParser);
streamParser.pipe(new class SlowConsumer extends stream.Writable {
constructor() {
super({ objectMode: true });
this._write = (quad: RDF.Quad, encoding, done) => {
console.log(quad);
setTimeout(done, 1000);
};
}
}());
}
function test_doc_from_triples_to_string() {
const writer: N3.N3Writer = new N3.Writer({ prefixes: { c: 'http://example.org/cartoons#' } });
writer.addQuad(N3.DataFactory.quad(
N3.DataFactory.namedNode('http://example.org/cartoons#Tom'),
N3.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
N3.DataFactory.namedNode('http://example.org/cartoons#Cat')
));
writer.addQuad(N3.DataFactory.quad(
N3.DataFactory.namedNode('http://example.org/cartoons#Tom'),
N3.DataFactory.namedNode('http://example.org/cartoons#name'),
N3.DataFactory.literal('Tom'),
));
writer.end((error, result: string) => { console.log(result); });
const writer1: N3.N3Writer = new N3.Writer({ format: 'N-Triples' });
const writer2: N3.N3Writer = new N3.Writer({ format: 'application/trig' });
}
function test_doc_from_triples_to_rdf_stream() {
const writer: N3.N3Writer = new N3.Writer(process.stdout, { end: false, prefixes: { c: N3.DataFactory.namedNode('http://example.org/cartoons#') } });
writer.addQuad(N3.DataFactory.quad(
N3.DataFactory.namedNode('http://example.org/cartoons#Tom'),
N3.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
N3.DataFactory.namedNode('http://example.org/cartoons#Cat'),
));
writer.addQuad(N3.DataFactory.quad(
N3.DataFactory.namedNode('http://example.org/cartoons#Tom'),
N3.DataFactory.namedNode('http://example.org/cartoons#name'),
N3.DataFactory.literal('Tom'),
));
writer.end();
}
function test_doc_from_triple_stream_to_rdf_stream() {
const streamParser: N3.N3StreamParser = new N3.StreamParser();
const inputStream = fs.createReadStream('cartoons.ttl');
const streamWriter: N3.N3StreamWriter = new N3.StreamWriter({ prefixes: { c: N3.DataFactory.namedNode('http://example.org/cartoons#') } });
inputStream.pipe(streamParser);
streamParser.pipe(streamWriter);
streamWriter.pipe(process.stdout);
}
function test_doc_blank_nodes_and_lists() {
const writer: N3.N3Writer = new N3.Writer({
prefixes: {
c: 'http://example.org/cartoons#',
foaf: 'http://xmlns.com/foaf/0.1/'
}
});
writer.addQuad(writer.blank(N3.DataFactory.namedNode('http://xmlns.com/foaf/0.1/givenName'), N3.DataFactory.literal('Tom', 'en')),
N3.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
N3.DataFactory.namedNode('http://example.org/cartoons#Cat'));
writer.addQuad(N3.DataFactory.namedNode('http://example.org/cartoons#Jerry'),
N3.DataFactory.namedNode('http://xmlns.com/foaf/0.1/knows'),
writer.blank([{
predicate: N3.DataFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
object: N3.DataFactory.namedNode('http://example.org/cartoons#Cat')
}, {
predicate: N3.DataFactory.namedNode('http://xmlns.com/foaf/0.1/givenName'),
object: N3.DataFactory.literal('Tom', 'en'),
}]));
writer.addQuad(N3.DataFactory.namedNode('http://example.org/cartoons#Mammy'),
N3.DataFactory.namedNode('http://example.org/cartoons#hasPets'),
writer.list([
N3.DataFactory.namedNode('http://example.org/cartoons#Tom'),
N3.DataFactory.namedNode('http://example.org/cartoons#Jerry')
]));
writer.end((error, result) => { console.log(result); });
}
function test_doc_storing() {
const store: N3.N3Store = new N3.Store();
store.addQuad(N3.DataFactory.namedNode('http://ex.org/Pluto'), N3.DataFactory.namedNode('http://ex.org/type'), N3.DataFactory.namedNode('http://ex.org/Dog'));
store.addQuad(N3.DataFactory.quad(N3.DataFactory.namedNode('http://ex.org/Mickey'), N3.DataFactory.namedNode('http://ex.org/type'), N3.DataFactory.namedNode('http://ex.org/Mouse')));
store.addQuads([N3.DataFactory.quad(N3.DataFactory.namedNode('http://ex.org/Mickey'), N3.DataFactory.namedNode('http://ex.org/type'), N3.DataFactory.namedNode('http://ex.org/Mouse'))]);
store.removeQuad(N3.DataFactory.namedNode('http://ex.org/Mickey'), N3.DataFactory.namedNode('http://ex.org/type'), N3.DataFactory.namedNode('http://ex.org/Mouse'));
store.removeQuad(N3.DataFactory.quad(N3.DataFactory.namedNode('http://ex.org/Mickey'), N3.DataFactory.namedNode('http://ex.org/type'), N3.DataFactory.namedNode('http://ex.org/Mouse')));
store.removeQuads([N3.DataFactory.quad(N3.DataFactory.namedNode('http://ex.org/Mickey'), N3.DataFactory.namedNode('http://ex.org/type'), N3.DataFactory.namedNode('http://ex.org/Mouse'))]);
const bnode1: RDF.BlankNode = store.createBlankNode();
const bnode2: RDF.BlankNode = store.createBlankNode('abc');
const mickey: RDF.Quad = store.getQuads(N3.DataFactory.namedNode('http://ex.org/Mickey'), null, null, null)[0];
if (mickey.object.termType === "Literal") {
console.log(mickey.object.datatype);
}
console.log(mickey.subject, mickey.predicate, mickey.object, '.');
const quadStream: RDF.Stream = store.match(N3.DataFactory.namedNode('http://ex.org/Mickey'));
interface N3QuadGeneralized extends N3.BaseQuad {
subject: N3.Quad_Subject | N3.BlankNode | N3.Literal;
predicate: N3.Quad_Predicate | N3.BlankNode | N3.Literal;
object: N3.Quad_Object | N3.BlankNode | N3.Literal;
graph: N3.Quad_Graph | N3.BlankNode | N3.Literal;
}
interface RDFQuadGeneralized extends RDF.BaseQuad {
subject: RDF.Quad_Subject | RDF.BlankNode | RDF.Literal;
predicate: RDF.Quad_Predicate | RDF.BlankNode | RDF.Literal;
object: RDF.Quad_Object | RDF.BlankNode | RDF.Literal;
graph: RDF.Quad_Graph | RDF.BlankNode | RDF.Literal;
}
const storeGeneralized = new N3.Store<RDFQuadGeneralized, N3QuadGeneralized>();
// storeGeneralized.
storeGeneralized.addQuad(N3.DataFactory.namedNode('http://ex.org/Pluto'), N3.DataFactory.blankNode(), N3.DataFactory.namedNode('http://ex.org/Dog'));
}
function test_store_queries() {
const store: N3.N3Store = new N3.Store();
const subjs: N3.Quad_Subject[] = store.getSubjects(null, null, null);
store.forSubjects((subj: N3.Quad_Subject) => {}, null, null, null);
const preds: N3.Quad_Predicate[] = store.getPredicates(null, null, null);
store.forPredicates((subj: N3.Quad_Predicate) => {}, null, null, null);
const objs: N3.Quad_Object[] = store.getObjects(null, null, null);
store.forObjects((subj: N3.Quad_Object) => {}, null, null, null);
const graphs: N3.Quad_Graph[] = store.getGraphs(null, null, null);
store.forGraphs((subj: N3.Quad_Graph) => {}, null, null, null);
}
function test_doc_utility() {
const N3Util = N3.Util;
N3Util.isNamedNode(N3.DataFactory.namedNode('http://example.org/cartoons#Mickey')); // true
N3Util.isLiteral(N3.DataFactory.literal('Mickey Mouse')); // true
N3Util.isLiteral(N3.DataFactory.literal('Mickey Mouse', 'en')); // true
N3Util.isLiteral(N3.DataFactory.literal('3', N3.DataFactory.namedNode('http://www.w3.org/2001/XMLSchema#integer'))); // true
N3Util.isLiteral(N3.DataFactory.literal('http://example.org/')); // true
N3Util.isLiteral(N3.DataFactory.literal('This word is "quoted"!')); // true
N3Util.isLiteral(N3.DataFactory.literal('3', N3.DataFactory.namedNode('http://www.w3.org/2001/XMLSchema#integer'))); // true
new N3.Parser().parse('<a> <b> "This word is \\"quoted\\"!".', console.log);
// { subject: 'a', predicate: 'b', object: '"This word is "quoted"!"' }
N3Util.isBlankNode(N3.DataFactory.blankNode('b1')); // true
N3Util.isNamedNode(N3.DataFactory.blankNode('b1')); // false
N3Util.isLiteral(N3.DataFactory.blankNode('b1')); // false
const prefixes: N3.Prefixes = { rdfs: N3.DataFactory.namedNode('http://www.w3.org/2000/01/rdf-schema#') };
const namedNode1: RDF.NamedNode = N3Util.prefix('http://www.w3.org/2000/01/rdf-schema#')('label');
const namedNode2: RDF.NamedNode = N3Util.prefixes(prefixes)('rdfs')('label');
const namedNode3: N3.NamedNode = N3Util.prefixes(prefixes)('rdfs')('label');
}