UNPKG

alcaeus

Version:

Hydra Core hypermedia-aware client library

36 lines (35 loc) 1.48 kB
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); } } } } } } } }