# @frogcat/ttl2jsonld
Turtle to JSON-LD converter for node.js and browser, no library dependencies.
## Demo
Online demo is available [here](https://frogcat.github.io/ttl2jsonld/demo/).
With this converter, you can obtain `Output JSON-LD` from `Input Turtle`, as shown in [JSON-LD 1.0 Specification](https://www.w3.org/TR/json-ld/#turtle) .
### Input Turtle
```example66.ttl
@prefix foaf: .
a foaf:Person;
foaf:name "Manu Sporny";
foaf:homepage .
```
### Output JSON-LD
```exampl67.json
{
"@context": {
"foaf": "http://xmlns.com/foaf/0.1/"
},
"@id": "http://manu.sporny.org/about#manu",
"@type": "foaf:Person",
"foaf:name": "Manu Sporny",
"foaf:homepage": { "@id": "http://manu.sporny.org/" }
}
```
## Install
### node.js
```a.sh
$ npm install @frogcat/ttl2jsonld
```
### browser
```a.html
```
## Usage
### node.js
You can write your own code.
```example.js
const ttl2jsonld = require('@frogcat/ttl2jsonld').parse;
const ttl = `@prefix foaf: .
a foaf:Person;
foaf:name "Manu Sporny";
foaf:homepage .
`;
const jsonld = ttl2jsonld(ttl);
console.log(JSON.stringify(jsonld,null,2));
```
Command line interface is also available.
```cli.sh
$ npm install @frogcat/ttl2jsonld
$ ttl2jsonld {input_turtle} > {output_jsonld}
or
$ cat {input_turtle} | ttl2jsonld > {output_jsonld}
```
### browser
This converter is exported to `ttl2jsonld` global object. Call `ttl2jsonld.parse(ttl)` to perform conversion.
```example.html
```
## API
Given `turtle_string`, `ttl2jsonld.parse` returns JSON Object.
```a.js
var json_object = ttl2jsonld.parse(turtle_string);
```
When you want to pass baseIRI, give second argument like this.
```a.js
var json_object = ttl2jsonld.parse(turtle_string, {
baseIRI : "http://example.org/"
});
```
## For developers
### building
- Build with [PEG.js](https://pegjs.org/).
- Main code is `spec/ttl2jsonld.pegjs`.
- When you edit code, run `npm run build` to generate `ttl2jsonld.js`.
### testing
- Tested with [rdf-test-suite](https://www.npmjs.com/package/rdf-test-suite).
- Currently 294 / 298 tests succeeded.
- Run `npm run spec-turtle` to start rdr-test-suite.
- Other miscellaneous tests are located in `test/test.js`, `npm run test` to run.