link-rdflib
Version:
an RDF library for node.js, patched for speed.
39 lines (31 loc) • 968 B
JavaScript
var NamedNode = require('./named-node');
/**
* Defines a Namespace to ease IRI generation
* @param nsuri The base IRI of the namespace, prepended before all terms
* @param terms Optional list of predefined terms which are accessible as members
* @return {Function} Function to mint IRI's on the namespace with predefined members.
*/
function Namespace(nsuri) {
var terms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
NamedNode.find(nsuri);
var mem = {};
var ns = function ns(ln) {
if (mem[ln]) {
return mem[ln];
}
var fullIRI = nsuri + (ln || '');
return mem[ln] = NamedNode.find(fullIRI, ln);
};
if (terms && typeof terms.length !== "undefined") {
for (var i = 0; i < terms.length; i++) {
Object.defineProperty(ns, terms[i], {
enumerable: true,
value: ns(terms[i]),
writable: false
});
}
}
return ns;
}
module.exports = Namespace;
;