Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/RMLio/yarrrml-parser
A YARRRML parser library and CLI in Javascript
https://github.com/RMLio/yarrrml-parser
parser yarrrml
Last synced: 3 months ago
JSON representation
A YARRRML parser library and CLI in Javascript
- Host: GitHub
- URL: https://github.com/RMLio/yarrrml-parser
- Owner: RMLio
- License: mit
- Created: 2018-06-01T12:35:47.000Z (over 6 years ago)
- Default Branch: development
- Last Pushed: 2024-06-16T09:51:55.000Z (5 months ago)
- Last Synced: 2024-07-18T23:28:12.044Z (4 months ago)
- Topics: parser, yarrrml
- Language: JavaScript
- Homepage:
- Size: 903 KB
- Stars: 40
- Watchers: 6
- Forks: 17
- Open Issues: 55
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-kgc-tools - YARRRML-parser - JavaScript engine that translates from YARRRML/RML/R2RML to YARRRML/RML/R2RML (Mapping Translators / Previous RML version (and extensions))
- awesome-starred - RMLio/yarrrml-parser - A YARRRML parser library and CLI in Javascript (others)
README
# YARRRML Parser
This library allows to convert [YARRRML](https://w3id.org/yarrrml) rules to [RML](http://rml.io) or [R2RML](https://www.w3.org/TR/r2rml/) rules.
## Install
- `npm i -g @rmlio/yarrrml-parser`
## Usage
### CLI
There are two CLI functions, `yarrrml-parser` and `yarrrml-generator`.
Using the `--help` flag will show all possible commands.#### yarrrml-parser
If you want to generate RML rules from a YARRRML document,
you do the following: `yarrrml-parser -i rules.yml`.The rules will be written to standard output.
If you want to write them to a file, you can add the `-o` option.By default, the parser generates RML rules.
If you want to generate R2RML rules add `-f R2RML`.If you want to use `rr:class` instead of Predicate Object Maps, use the `-c` flag.
You can use multiple input files too: `yarrrml-parser -i rules-1.yml -i rules-2.yml`.
They are converted to a single RML document.
Note that the keys in `prefixes`, `sources`, and `mappings` have to be unique across all files.
`base` can only be set once.
You find an example at [`test/multiple-input-files`](test/multiple-input-files).You can overwrite external references via the `-e`.
An external reference starts with `_`.
For example, `-e name=John` will replace all occurrences of `$(_name)` with `John`.
Repeat `-e` for multiple references.
When you do not provide a value for an external reference,
the reference will not be replaced.
You find an example in [`test/template-escape`](test/template-escape).
If you want to use for example `$(_name)` as both an external reference and a normal reference,
then you add a `\` for the latter resulting in `$(\_name)` for the latter.If you want the outputted RML to be pretty, please provide the `-p` or `--pretty` parameter.
#### yarrrml-generator
If you want to generate YARRRML rules from an RML document, you do the following: `yarrrml-generator -i rules.rml.ttl`.
The rules will be written to standard output.
If you want to write them to a file, you can add the `-o` option.### Library
`npm i --save @rmlio/yarrrml-parser`
```javascript
let yarrrml = require('@rmlio/yarrrml-parser/lib/rml-generator');const yaml = "[yarrrml string]";
const y2r = new yarrrml();
const triples = y2r.convert(yaml);if ( y2r.getLogger().has('error') ) {
const logs = y2r.getLogger().getAll();
...
}
```## Development
- Clone this repo.
- Install the dependencies via `npm i`
- Update code, if needed.
- Run the tests via `npm test`
- If you make a new test, make sure the (RML) Turtle is 'pretty'. If you're not sure it's pretty, run `./test/prettify_ttl.js`
- Make the [CLI](#cli) (based on the code in the cloned repo)
available system-wide via `npm link` (optional).## Docker
Run (from [DockerHub](https://hub.docker.com/repository/docker/rmlio/yarrrml-parser)):
```bash
docker run --rm -it -v $(pwd)/resources:/data rmlio/yarrrml-parser:latest -i /data/test.yarrr.yml
```Build from source:
```bash
docker build -t yarrrml-parser .
```## License
This code is copyrighted by [Ghent University – imec](http://idlab.ugent.be/) and released under the [MIT license](http://opensource.org/licenses/MIT).