No description
Find a file
Marcel Otto 814e09de20 Revert "Add Elixir 1.7 to TravisCI"
This reverts commit 6e31b0f0c0.

We'll support Elixir 1.7 for now on a separate branch using the latest
unreleased RDF.ex version.
2018-08-31 01:32:29 +02:00
config json_ld: mix new json_ld --module JSON.LD 2016-12-08 00:27:27 +01:00
lib Fix warnings 2018-08-31 01:14:58 +02:00
test Support for pretty printing by passing options through to Jason 1.1 2018-07-11 00:17:36 +02:00
.editorconfig Add .editorconfig 2017-06-25 02:06:24 +02:00
.gitignore json_ld: mix new json_ld --module JSON.LD 2016-12-08 00:27:27 +01:00
.iex.exs Add .iex.exs file 2018-07-10 22:57:19 +02:00
.travis.yml Revert "Add Elixir 1.7 to TravisCI" 2018-08-31 01:32:29 +02:00
CHANGELOG.md Prepare release 0.2.3 2018-07-11 00:21:43 +02:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT 2017-06-25 02:07:04 +02:00
CONTRIBUTING.md Add CONTRIBUTING.md 2017-06-25 20:19:26 +02:00
LICENSE.md Update copyright 2017-06-25 02:06:43 +02:00
mix.exs Fix warnings 2018-08-31 01:14:58 +02:00
mix.lock Support for pretty printing by passing options through to Jason 1.1 2018-07-11 00:17:36 +02:00
README.md Support for pretty printing by passing options through to Jason 1.1 2018-07-11 00:17:36 +02:00
VERSION Prepare release 0.2.3 2018-07-11 00:21:43 +02:00

JSON-LD.ex

Travis Hex.pm Coverage Status

An implementation of the JSON-LD standard for Elixir and RDF.ex.

Features

  • fully conforming JSON-LD API processor
  • JSON-LD reader/writer for RDF.ex
  • tests of the JSON-LD test suite (see here for a detailed status report)

TODO

Installation

The JSON-LD.ex Hex package can be installed as usual, by adding json_ld to your list of dependencies in mix.exs:

def deps do
  [{:json_ld, "~> 0.2"}]
end

Usage

Expand a document

"""
{
 "@context":
 {
    "name": "http://xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id"
    }
 },
 "name": "Manu Sporny",
 "homepage": "http://manu.sporny.org/"
}
"""
|> Jason.decode!
|> JSON.LD.expand

produces

[%{"http://xmlns.com/foaf/0.1/homepage" => [%{"@id" => "http://manu.sporny.org/"}],
   "http://xmlns.com/foaf/0.1/name" => [%{"@value" => "Manu Sporny"}]}]

Compact a document

context = Jason.decode! """
  {
    "@context": {
      "name": "http://xmlns.com/foaf/0.1/name",
      "homepage": {
        "@id": "http://xmlns.com/foaf/0.1/homepage",
        "@type": "@id"
      }
    }
  }
  """

"""
[
  {
    "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
    "http://xmlns.com/foaf/0.1/homepage": [
      {
       "@id": "http://manu.sporny.org/"
      }
    ]
  }
]
"""
|> Jason.decode!
|> JSON.LD.compact(context)

produces

%{"@context" => %{
    "homepage" => %{
        "@id" => "http://xmlns.com/foaf/0.1/homepage", 
        "@type" => "@id"},
    "name" => "http://xmlns.com/foaf/0.1/name"
    },
  "homepage" => "http://manu.sporny.org/", 
  "name" => "Manu Sporny"}

RDF Reader and Writer

JSON-LD.ex can be used to serialize or deserialize RDF graphs by using it as a RDF.ex reader and writer.

dataset = JSON.LD.read_file!("file.jsonld")
JSON.LD.write_file!(dataset, "file.jsonld")

Pretty printing

Pretty printing is possible on all writer functions with all of the formatter options of Jason, the underlying JSON encoder, to which the given options are passed through.

JSON.LD.write_file!(dataset, "file.jsonld", pretty: true)
JSON.LD.write_string(dataset, "file.jsonld", pretty: [indent: "\t"])

Getting help

Contributing

see CONTRIBUTING for details.

(c) 2017 Marcel Otto. MIT Licensed, see LICENSE for details.