Skip to content

JSON-LD

Are you tired of using ๐Ÿข Turtles to write models? You are more familiar with JSON and YAML!

JSON-LD is a W3C standard to map JSON (and therefore YAML) to the RDF linked data model.

YAML

We can rewrite the greeting2.ttl from the Linked Data chapter as this greeting2.yaml:

id: greeting2
message: "hello"
object: world

---
id: world
wikipedia: https://en.wikipedia.org/wiki/Earth

Of course, we lost what uniquely identified our things… but JSON-LD Contexts can re-provide that, using this greeting-context.jsonld:

{
  "@context": {
    "@version": 1.1,
    "@vocab": "https://example.org/",
    "@base": "https://example.org/",
    "id": "@id",
    "object": {
      "@type": "@id"
    },
    "wikipedia": {
      "@type": "@id"
    }
  }
}

Combining these, Enola can recreate the same data model:

$ ./enola get --load="models/example.org/greeting2.yaml?context=models/example.org/greeting-context.jsonld" https://example.org/greeting2

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/build

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/.editorconfig

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/.prettierignore

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/.prettierrc.yaml

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/dev

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/.markdownlint.yaml

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/@babel/core/node_modules/.bin/semver

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/parser

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/esparse

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/js-yaml

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/browserslist

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/node-which

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/json5

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/acorn

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/esvalidate

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/tsc

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/update-browserslist-db

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/jsesc

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/eslint

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/tsserver

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/eslint-config-prettier

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/prettier

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/semver

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/@istanbuljs/load-nyc-config/node_modules/.bin/js-yaml
@prefix ex: <https://example.org/> .
@prefix enola: <https://enola.dev/> .

ex:greeting2 enola:origin <file:///home/runner/work/enola/enola/models/example.org/greeting2.yaml?context=models%2Fexample.org%2Fgreeting-context.jsonld>;
  ex:object ex:world;
  ex:message "hello" .

Generating documentation will look the same as in the original Linked Data chapter, using this:

$ ./enola docgen --load="models/example.org/greeting2.yaml?context=models/example.org/greeting-context.jsonld" --output=/tmp/models/ --no-index

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/build

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/.editorconfig

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/.prettierignore

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/.prettierrc.yaml

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/dev

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/.markdownlint.yaml

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/@babel/helper-compilation-targets/node_modules/.bin/semver

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/@babel/core/node_modules/.bin/semver

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/parser

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/esparse

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/js-yaml

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/browserslist

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/node-which

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/json5

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/acorn

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/esvalidate

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/tsc

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/update-browserslist-db

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/jsesc

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/eslint

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/tsserver

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/eslint-config-prettier

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/prettier

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/.bin/semver

WARNING: Ignoring symlink: /home/runner/work/enola/enola/web/node_modules/@istanbuljs/load-nyc-config/node_modules/.bin/js-yaml

More

Tools > JSON-LD has more reference documentation about JSON-LD in Enola.