UNPKG

sparnatural

Version:

Visual client-side SPARQL query builder and knowledge graph exploration tool

117 lines 4.48 kB
import { SH } from "../vocabularies/SH"; import { StoreModel } from "../StoreModel"; export class ShaclStoreModel extends StoreModel { constructor(n3store) { super(n3store); } /** * Reads the sh:node values in a sh:or list. * @param shOrList The sh:or list term. * @return A list of resources. */ readShNodeInShOr(shOrList) { let result = []; const listItems = this.readListContent(shOrList); listItems.forEach(item => { if (item.termType === "NamedNode") { const nodeValue = this.store.getQuads(item, SH.NODE, null, null).map(quad => quad.object); if (nodeValue.length > 0) { result.push(nodeValue[0]); } else { const orValue = this.store.getQuads(item, SH.OR, null, null).map(quad => quad.object); if (orValue.length > 0) { result.push(...this.readShNodeInShOr(orValue[0])); } } } }); return result; } /** * Reads the sh:class values in a sh:or list. * @param shOrList The sh:or list term. * @return A list of resources. */ readShClassInShOr(shOrList) { let result = []; const listItems = this.readListContent(shOrList); listItems.forEach(item => { if (item.termType === "NamedNode") { const classValue = this.store.getQuads(item, SH.CLASS, null, null).map(quad => quad.object); if (classValue.length > 0) { result.push(classValue[0]); } else { const orValue = this.store.getQuads(item, SH.OR, null, null).map(quad => quad.object); if (orValue.length > 0) { result.push(...this.readShClassInShOr(orValue[0])); } } } }); return result; } /** * Reads the sh:datatype values in a sh:or list. * @param shOrList The sh:or list term. * @return A list of resources. */ readShDatatypeInShOr(shOrList) { let result = []; const listItems = this.readListContent(shOrList); listItems.forEach(item => { if (item.termType === "NamedNode") { const datatypeValue = this.store.getQuads(item, SH.DATATYPE, null, null).map(quad => quad.object); if (datatypeValue.length > 0) { result.push(datatypeValue[0]); } else { const orValue = this.store.getQuads(item, SH.OR, null, null).map(quad => quad.object); if (orValue.length > 0) { result.push(...this.readShDatatypeInShOr(orValue[0])); } } } }); return result; } /** * Reads the sh:nodeKind values in a sh:or list. * @param shOrList The sh:or list term. * @return A list of resources. */ readShNodeKindInShOr(shOrList) { let result = []; const listItems = this.readListContent(shOrList); listItems.forEach(item => { if (item.termType === "NamedNode") { const nodeKindValue = this.store.getQuads(item, SH.NODE_KIND, null, null).map(quad => quad.object); if (nodeKindValue.length > 0) { result.push(nodeKindValue[0]); } else { const orValue = this.store.getQuads(item, SH.OR, null, null).map(quad => quad.object); if (orValue.length > 0) { result.push(...this.readShNodeKindInShOr(orValue[0])); } } } }); return result; } /** * Reads the sh:class, sh:node, sh:datatype, and sh:nodeKind values in a sh:or list. * @param shOrList The sh:or list term. * @return A list of resources. */ readShClassAndShNodeAndShDatatypeAndShNodeKindInShOr(shOrList) { let result = []; result.push(...this.readShClassInShOr(shOrList)); result.push(...this.readShNodeInShOr(shOrList)); result.push(...this.readShDatatypeInShOr(shOrList)); result.push(...this.readShNodeKindInShOr(shOrList)); return result; } } //# sourceMappingURL=ShaclStoreModel.js.map