@rdfjs/traverser
Version:
Generic traverser for RDF/JS datasets
76 lines (50 loc) • 3.25 kB
Markdown
# @rdfjs/traverser
[](https://github.com/rdfjs-base/traverser/actions/workflows/test.yaml)
[](https://www.npmjs.com/package/@rdfjs/traverser)
This package provides a generic traverser for [RDF/JS Datasets](https://rdf.js.org/dataset-spec/).
## Usage
The main export of the package is the `Traverser` class.
It can be imported like this:
```javascript
import Traverser from '@rdfjs/traverser'
```
The package also provides a factory that can be used with [@rdfjs/environment](https://github.com/rdfjs-base/environment):
```javascript
import Environment from '@rdfjs/environment'
import TraverserFactory from '@rdfjs/traverser/Factory.js'
const env = new Environment([DataFactory, DatasetFactory, TraverserFactory])
```
### Traverser(filter, { backward, factory, forward })
Creates a new `Traverser` instance.
A `Traverser` contains only the rules for traversing.
The dataset and the starting point must be given to the methods.
- `filter`: A filter function that returns a truthy value if the `Traverser` should traverse the given quad.
- `backward`: If true, traverse from object to subject. (default: `false`)
- `factory`: A RDF/JS factory that supports RDF/JS Datasets.
The function will be called like this: `filter({ dataset, level, quad })`.
- `dataset`: The RDF/JS Dataset that is traversed.
- `level`: The number of quads followed until the filter was called.
- `quad`: The current quad to process.
- `forward`: (default: `true`)
#### forEach ({ term, dataset }, callback)
Calls the given callback function for each quad matching the rules of the `Traverser`, starting from the given `term` and `dataset`.
The callback function is called like this: `callback({ dataset, level, quad })`.
- `dataset`: The RDF/JS Dataset that is traversed.
- `level`: The number of quads followed until the callback was called.
- `quad`: The current quad to process.
#### match ({ term, dataset })
Returns a RDF/JS Dataset that contains all quads matching the rules of the `Traverser`, starting from the given `term` and `dataset`.
#### reduce ({ term, dataset }, callback, initialValue)
Calls the given callback function for each quad matching the rules of the `Traverser`, starting from the given `term` and `dataset`.
The callback function is called like this: `callback({ dataset, level, quad }, result)`.
- `dataset`: The RDF/JS Dataset that is traversed.
- `level`: The number of quads followed until the callback was called.
- `quad`: The current quad to process.
- `result`: The return value of the previous call of the callback function.
If it's called the first time, the `initialValue` is used.
### Factory
The constructor is called by the [@rdfjs/environment](https://github.com/rdfjs-base/environment).
The environment must support the [RDF/JS DatasetFactory](https://rdf.js.org/dataset-spec/) interface.
#### traverser(filter, { backward = false, forward = true } = {})
Creates a new `Traverser` instance and returns it.
For more details, see the [Traverser](#traverserfilter--backward-factory-forward-) constructor section.