Giter Site home page Giter Site logo

titanium-json-ld's Introduction

Important

The open-source version development and support will be discontinued in the near future because of lack of funding. No further version will be available for free nor security updates. Please consider a donation to keep Titanium JSON-LD available and maintained as an open-source.

Titanium JSON-LD 1.1 Processor & API

An implementation of the JSON-LD 1.1 (JSON-based Serialization for Linked Data) specification in Java utilizing Jakarta JSON Processing.

The goals of Titanium are:

  • conformance to the specification
  • secure, stable, fast, A+ code (covered by ~1800 tests)
  • minimal external dependencies
    • only jakarta.json-api is required
  • simple to use

Java 11 CI Android (Java 8) CI CodeQL Codacy Badge Codacy Badge Maven Central License

Table of Contents

Conformance

The goal is to pass the official test suite and conform to the JSON-LD 1.1 specification.

Status

Feature Tests Pass Status Notes
Expansion 373 373 100%
Compaction 243 243 100%
Flattening 55 55 100%
JSON-LD to RDF 453 451 99.5%
RDF to JSON-LD 51 51 100%
Framing 89 88 98.8%
Remote Document and Context Retrieval 18 17 94.4%

See EARL results from the JSON-LD 1.1 Test Suite for more details.

CLI

LD-CLI is a native command line utility for Ubuntu, Mac, Windows

Extensions

Usage

Installation

Titanium

Maven

Java 11+

<dependency>
    <groupId>com.apicatalog</groupId>
    <artifactId>titanium-json-ld</artifactId>
    <version>1.4.0</version>
</dependency>
Gradle

Java 8+, Android API Level >=24

implementation("com.apicatalog:titanium-json-ld-jre8:1.4.0")

JSON-P Provider

Add JSON-P provider, if it is not on the classpath already.

Maven
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>jakarta.json</artifactId>
    <version>2.0.1</version>
</dependency>
Gradle
implementation("org.glassfish:jakarta.json:2.0.1")

Documentation

javadoc

Examples

Titanium provides high-level JsonLd API to interact with the processor.

Transformations

// Expansion
JsonLd.expand("https://w3c.github.io/json-ld-api/tests/expand/0001-in.jsonld")
      .ordered()
      .get();

JsonLd.expand("file:/home/filip/document.json")    // HTTP(S) and File schemes supported
      .context("file:/home/filip/context.jsonld")  // external context
      .get();

// Compaction
JsonLd.compact("https://example/expanded.jsonld", "https://example/context.jsonld")
      .compactToRelative(false)
      .get();

// Flattening
JsonLd.flatten("https://example/document.jsonld").get();

// JSON-LD to RDF
JsonLd.toRdf("https://example/document.jsonld").get();

// RDF to JSON-LD
JsonLd.fromRdf("https://example/document.nq").options(options).get();

// Framing
JsonLd.frame("https://example/document.jsonld", "https://example/frame.jsonld").get();

Local JSON Document

Document document = JsonDocument.of(InputStream) or JsonDocument.of(Reader) ...

JsonLd.expand(document).get();

JsonLd.compact(document, contextDocument).get();
...

Processing Timeout [experimental]

A processor gets terminated eventually after a specified time. Please note the duration does not cover DocumentLoader processing time. You have to set-up a read timeout separately.

// since 1.4.0
JsonLd.expand(...).timeout(duration)...get();

HTTP Document Loader Timeout

Configure and set a custom HTTP document loader instance.

// since 1.4.0 - set read timeout
static DocumentLoader LOADER = HttpLoader.defaultInstance().timeount(Duration.ofSeconds(30));
...
JsonLd.expand(...).loader(LOADER).get();

Document caching

Configure LRU-based cache for loading documents. The argument determines size of the LRU-cache.

// since 1.4.0
JsonLd.toRdf("https://example/document.jsonld").loader(new LRUDocumentCache(loader, capacity)).get();

You can share an instance of LRUDocumentCache among multiple calls to reuse cached documents.

// since 1.4.0
DocumentLoader cachedLoader = new LRUDocumentCache(loader, capacity);

JsonLd.toRdf("https://example/document.jsonld").loader(cachedLoader).get();
JsonLd.toRdf("https://example/another-document.jsonld").loader(cachedLoader).get();

Contributing

All PR's welcome!

  • develop
    • implement a new feature
    • fix an existing issue
    • improve an existing implementation
  • test
    • report a bug
    • implement a test case
  • document
    • write javadoc
    • write a tutorial
    • proofread an existing documentation
  • promote
    • star, share, the project
    • write an article
  • sponsor
    • your requests get top priority
    • you will get a badge

Building

Fork and clone the project repository.

Java 11

> cd titanium-json-ld
> mvn clean package

Java 8

> cd titanium-json-ld
> mvn -f pom_jre8.xml clean package

Resources

Commercial Support

Commercial support is available at [email protected]

titanium-json-ld's People

Contributors

bobeal avatar codacy-badger avatar dependabot[bot] avatar ebremer avatar filip26 avatar jmvanel avatar jtownson avatar kevinpeterson avatar laxystem avatar lolgab avatar magemasher avatar simon-greatrix avatar skodapetr avatar umbreak avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.