alcaeus
Version:
Hydra Core hypermedia-aware client library
36 lines (35 loc) • 1.48 kB
JavaScript
import { hydra } from '@tpluscode/rdf-ns-builders';
export function* addExplicitStatementsInferredFromMemberAssertion(dataset, env) {
for (const collection of env.clownface({ dataset }).has([hydra.manages, hydra.memberAssertion]).toArray()) {
const assertions = collection.out([hydra.manages, hydra.memberAssertion]).toArray();
for (const member of collection.out(hydra.member).toArray()) {
for (const assertion of assertions) {
let blanks = 0;
let subject = assertion.out(hydra.subject);
let predicate = assertion.out(hydra.property);
let object = assertion.out(hydra.object);
if (subject.terms.length === 0) {
subject = member;
blanks++;
}
if (predicate.terms.length === 0) {
predicate = member;
blanks++;
}
if (object.terms.length === 0) {
object = member;
blanks++;
}
if (blanks === 1) {
for (const s of subject.terms) {
for (const p of predicate.terms) {
for (const o of object.terms) {
yield env.quad(s, p, o);
}
}
}
}
}
}
}
}