# elm-cardano/json-ld

JSON-LD parsing, N-Quads serialization, and RDFC-1.0 canonicalization for Elm.

Only inline contexts are supported (no remote HTTP fetching of `@context` URLs).

## API

```elm
import Json.Decode exposing (Value)
import JsonLd
import JsonLd.Rdf exposing (Dataset)

-- Full pipeline: JSON-LD to canonical N-Quads (RDFC-1.0, SHA-256)
JsonLd.toCanonicalNQuads : Value -> Result String String

-- Individual steps
JsonLd.expand : Value -> Result String Value
JsonLd.toRdf  : Value -> Result String Dataset
```

```elm
import JsonLd.NQuads
import JsonLd.Rdf exposing (Dataset)

JsonLd.NQuads.serialize : Dataset -> String
JsonLd.NQuads.parse     : String -> Result String Dataset
```

```elm
import JsonLd.Canonicalize
import JsonLd.Rdf exposing (Dataset)

JsonLd.Canonicalize.canonicalize     : Dataset -> Result String String
JsonLd.Canonicalize.canonicalizeWith : Options -> Dataset -> Result String String
```

See the [module docs](https://package.elm-lang.org/packages/elm-cardano/json-ld/1.0.0/) for the full API.

## Install

```sh
elm install elm-cardano/json-ld
```

## Performance

See [`bench/`](https://github.com/elm-cardano/json-ld/tree/main/bench) for the benchmarking setup and [`bench/REPORT.md`](https://github.com/elm-cardano/json-ld/tree/main/bench/REPORT.md) for the history of optimizations.

## Development

```sh
pnpm install
pnpm test          # run tests
pnpm review        # elm-review
pnpm format:check  # check formatting
```
