clownface-shacl-path
Provides functions to work with SHACL Property Paths
Install
yarn add clownface-shacl-path
Usage
findNodes
Find nodes in RDF/JS graphs by following SHACL Property Paths using clownface graph traversal library.
The exported function takes two parameters:
- starting graph pointer node
- graph pointer to a SHACL Property Path
import { findNodes } from 'clownface-shacl-path'
import fetch from '@rdfjs/fetch'
import $rdf from 'rdf-ext'
import clownface from 'clownface'
import { sh } from '@tpluscode/rdf-ns-builders'
const response = await fetch('http://zazuko.github.io/tbbt-ld/dist/tbbt.nt', { factory: $rdf })
const amy = clownface({ dataset: await response.dataset() })
.namedNode('http://localhost:8080/data/person/amy-farrah-fowler')
const path = clownface({ dataset: $rdf.dataset() }).blankNode()
path.addList(sh.alternativePath, [
path.blankNode().addOut(sh.inversePath, schema.spouse),
path.blankNode().addOut(sh.inversePath, schema.knows)
])
findNodes(amy, path)
toSparql
Converts a SHACL Property Path to SPARQL Property Path string template object. Use the property path with @tpluscode/sparql-builder
import type {GraphPointer} from 'clownface'
import { toSparql } from 'clownface-shacl-path'
import { SELECT } from '@tpluscode/sparql-builder'
let path: GraphPointer
SELECT`?friendName`
.WHERE`
?person a <http://schema.org/Person> .
?person ${toSparql(path)} ?friendName .
`.build()