lincd
Version:
LINCD is a JavaScript library for building user interfaces with linked data (also known as 'structured data', or RDF)
106 lines • 3.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.QuadSet = void 0;
const CoreSet_js_1 = require("./CoreSet.js");
const NodeSet_js_1 = require("./NodeSet.js");
class QuadSet extends CoreSet_js_1.CoreSet {
removeAll(alteration = false) {
this.forEach((quad) => quad.remove(alteration));
}
moveTo(graph, alteration = true) {
let newSet = new QuadSet();
this.forEach((quad) => {
newSet.add(quad.moveToGraph(graph, alteration));
});
return newSet;
}
makeExplicit() {
this.forEach((quad) => quad.makeExplicit());
}
getSubjects() {
//return new NamedNodeSet(this.map(quad => quad.subject).values());
//that's short, but probably this is faster:
var res = new NodeSet_js_1.NodeSet();
for (var quad of this) {
res.add(quad.subject);
}
return res;
}
getPredicates() {
var res = new NodeSet_js_1.NodeSet();
for (var quad of this) {
res.add(quad.predicate);
}
return res;
}
getObjects() {
var res = new NodeSet_js_1.NodeSet();
for (var quad of this) {
res.add(quad.object);
}
return res;
}
getNamedNodeObjects() {
var res = new NodeSet_js_1.NodeSet();
for (var quad of this) {
//using instanceof NamedNode here will cause circular references
if ('uri' in quad.object) {
res.add(quad.object);
}
}
return res;
}
getLiteralObjects() {
var res = new NodeSet_js_1.NodeSet();
for (var quad of this) {
//using instanceof Literal here will cause circular references
if (!('uri' in quad.object)) {
res.add(quad.object);
}
}
return res;
}
getLike(subject, predicate, object) {
return this.filter((quad) => {
return ((!subject || quad.subject === subject) &&
(!predicate || quad.predicate === predicate) &&
(!object || quad.object === object));
});
}
getNamedNodes() {
return new NodeSet_js_1.NodeSet()
.concat(this.getSubjects())
.concat(this.getPredicates())
.concat(this.getNamedNodeObjects());
}
getNodes() {
return new NodeSet_js_1.NodeSet()
.concat(this.getSubjects())
.concat(this.getPredicates())
.concat(this.getObjects());
}
hasNode(node) {
return this.some((quad) => {
return (quad.subject === node || quad.predicate === node || quad.object === node);
});
}
getExplicit() {
return this.filter((quad) => !quad.implicit);
}
getImplicit() {
return this.filter((quad) => quad.implicit);
}
turnOn() {
return this.forEach((t) => t.turnOn());
}
turnOff() {
return this.forEach((t) => t.turnOff());
}
toString() {
var str = '';
this.forEach((item) => (str += '\t' + item.toString() + '\n'));
return 'QuadSet(' + this.size + ') [\n' + str + ']';
}
}
exports.QuadSet = QuadSet;
//# sourceMappingURL=QuadSet.js.map