Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | 1x 1x 3x 3x 1x 3x 1x 1x 1x 2x 2x 1x 1x | import { BlankNode, IndexedFormula, NamedNode, st, Literal, sym, Statement } from 'rdflib'
import { Namespaces } from 'solid-namespace'
export function getStatementsToDelete (
origin: NamedNode | Literal,
person: NamedNode,
kb: IndexedFormula,
ns: Namespaces
): any {
const applicationStatements = kb.statementsMatching(
null,
ns.acl('origin'),
origin
)
const statementsToDelete = applicationStatements.reduce(
(memo, st) => {
return memo
.concat(
kb.statementsMatching(
person,
ns.acl('trustedApp'),
st.subject as NamedNode
)
)
.concat(kb.statementsMatching(st.subject))
},
[] as Array<Statement>
)
return statementsToDelete
}
export function getStatementsToAdd (
origin: NamedNode,
nodeName: string,
modes: string[],
person: NamedNode,
ns: Namespaces
): any {
const application = new BlankNode(`bn_${nodeName}`) // NamedNode(`${person.doc().uri}#${nodeName}`)
return [
st(person, ns.acl('trustedApp'), application, person.doc()),
st(application, ns.acl('origin'), origin, person.doc()),
...modes
.map(mode => sym(mode))
.map(mode => st(application, ns.acl('mode'), mode, person.doc()))
]
}
export function generateRandomString () {
return Math.random().toString(36).substr(2, 5)
}
|