Skip to main content

Recursively expand and compact JSON-LD documents with caching and chained URL mappings

Project description

jsonld-recursive

Recursively expand and compact JSON-LD documents with caching and chained URL mappings.

Installation

npm install jsonld-recursive

Quick Start

CLI

# Standalone
ldr compact https://example.com/data.jsonld -d 3

# With server
ldr server start
ldr compact https://example.com/data.jsonld -d 3 --server
ldr server stop

Python

from lib.ldr_client import LdrClient

# Auto-start server
with LdrClient(auto_start_server=True) as client:
    result = client.compact("https://example.com/data.jsonld", depth=3)

Browser (CDN)

<script src="https://cdn.jsdelivr.net/npm/jsonld-recursive@1/lib/ldr-core.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jsonld-recursive@1/lib/ldr-browser.js"></script>

<script>
  await JsonLdExpand.compact('https://example.com/data.jsonld', {depth: 3});
</script>

Server Commands

# Start
ldr server start

# Start with port
ldr server start 8080

# Start with mappings file
ldr server start 3000 mappings.json

# Start with JSON mappings
ldr server start 3000 '{"cmip7:*":"https://example.com/${rest}"}'

# Stop
ldr server stop

# Status
ldr server status

# Or kill by name
pkill ldr-server

Chained URL Mappings

Apply multiple mappings in sequence:

{
  "cmip7:*": "https://wcrp-cmip.github.io/CMIP7-CVs/${rest}",
  "https://wcrp-cmip.github.io/CMIP7-CVs/*": "/home/user/local-cvs/${rest}"
}

Input: cmip7:experiment/graph.jsonld
Step 1: cmip7:*https://wcrp-cmip.github.io/CMIP7-CVs/experiment/graph.jsonld
Step 2: https://.../*/home/user/local-cvs/experiment/graph.jsonld
Result: Loads from local file

Set Mappings

CLI:

# From file
ldr mappings set mappings.json

# From JSON (no -m flag needed)
ldr mappings set '{"cmip7:*":"https://example.com/${rest}"}'

# Get current
ldr mappings get

# Clear
ldr mappings clear

Python:

with LdrClient(auto_start_server=True) as client:
    # Set chained mappings
    client.set_mappings({
        "cmip7:*": "https://wcrp-cmip.github.io/CMIP7-CVs/${rest}",
        "https://wcrp-cmip.github.io/CMIP7-CVs/*": "/home/user/local-cvs/${rest}"
    })
    
    result = client.compact("cmip7:experiment/graph.jsonld", depth=3)

Python Client

Basic Usage

from lib.ldr_client import LdrClient

with LdrClient() as client:
    result = client.compact("https://example.com/data.jsonld", depth=3)

Auto-start Server

# Server starts and stops automatically
with LdrClient(auto_start_server=True) as client:
    result = client.compact("https://example.com/data.jsonld", depth=3)

Multiple Requests

with LdrClient(auto_start_server=True) as client:
    urls = ["url1", "url2", "url3"]
    
    # Loop
    for url in urls:
        result = client.compact(url, depth=3)
    
    # Or batch
    results = client.compact_batch(urls, depth=3)

Runtime Mappings

with LdrClient(auto_start_server=True) as client:
    # Set mappings
    client.set_mappings({
        "cmip7:*": "https://wcrp-cmip.github.io/CMIP7-CVs/${rest}",
        "https://wcrp-cmip.github.io/CMIP7-CVs/*": "/home/user/local/${rest}"
    })
    
    result = client.compact("cmip7:experiment/graph.jsonld", depth=3)
    
    # Update
    client.set_mappings({"new:*": "https://new.com/${rest}"})
    
    # Clear
    client.clear_mappings()

CLI Usage

# Standalone (no server)
ldr compact <url> -d 3

# With server (caching)
ldr compact <url> -d 3 --server

# Server management
ldr server start [port] [mappings.json]
ldr server stop
ldr server status

# Mappings (server must be running)
ldr mappings get
ldr mappings set mappings.json
ldr mappings set '{"prefix:*":"https://example.com/${rest}"}'
ldr mappings clear

Documentation

Publishing

npm login
npm publish

After publishing, available via CDN:

  • https://cdn.jsdelivr.net/npm/jsonld-recursive@1/lib/ldr-core.js
  • https://unpkg.com/jsonld-recursive@1/lib/ldr-core.js

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonld_recursive-1.0.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jsonld_recursive-1.0.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file jsonld_recursive-1.0.0.tar.gz.

File metadata

  • Download URL: jsonld_recursive-1.0.0.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jsonld_recursive-1.0.0.tar.gz
Algorithm Hash digest
SHA256 deaf38c127c603105465cda41a555ab5d79438e6d67a54101f7cfcf8d1fe6f53
MD5 c25066b064c8bb7c57ae64cc57c4400b
BLAKE2b-256 1063bf018ad18b4106a88ebb9a759596a3fed4b8620d374b24a4f56c9be6253e

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonld_recursive-1.0.0.tar.gz:

Publisher: publish2pypi.yml on wolfiex/jsonld-recursive

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file jsonld_recursive-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for jsonld_recursive-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 85cec5477a279aa59edb1b58a10ee2c84ff151a329146023842cbd9c38409e54
MD5 9ac0c55838ae9793bcf838b4c7721490
BLAKE2b-256 a8dca11828ddee530a6c604fe4716b5f48539ea044366592d7ecd535085ee386

See more details on using hashes here.

Provenance

The following attestation bundles were made for jsonld_recursive-1.0.0-py3-none-any.whl:

Publisher: publish2pypi.yml on wolfiex/jsonld-recursive

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page