- Notifications
You must be signed in to change notification settings - Fork16
An implementation of JSON-LD for Elixir
License
rdf-elixir/jsonld-ex
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An implementation of theJSON-LD standard for Elixir andRDF.ex.
The API documentation can be foundhere. For a guide and more information about RDF.ex and it's related projects, go tohttps://rdf-elixir.dev.
- fully conforming JSON-LD 1.0 API processor
- JSON-LD reader/writer forRDF.ex
- tests of theJSON-LD test suite (seehere for a detailed status report)
- JSON-LD Framing
- JSON-LD 1.1 support
TheJSON-LD.ex Hex package can be installed as usual, by addingjson_ld
to your list of dependencies inmix.exs
:
defdepsdo[{:json_ld,"~> 0.3"}]end
"""{ "@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"}]}]
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"}
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")
When a context is provided via the:context
option (as a map, aRDF.PropertyMap
or a string with a URL to a remote context), the document gets automatically compacted on serialization.
JSON.LD.write_file!(dataset,"file.jsonld",context:%{ex:"https://example.com/"})JSON.LD.write_file!(dataset,"file.jsonld",context:"https://schema.org/")
Pretty printing is possible on all writer functions with all the formatter options ofJason, 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"])
seeCONTRIBUTING for details.
If you need help with your Elixir and Linked Data projects, just contactNinjaConcept viacontact@ninjaconcept.com.
(c) 2017-present Marcel Otto. MIT Licensed, seeLICENSE for details.
About
An implementation of JSON-LD for Elixir