This is a fork of JsonLD which I maintain in my spare time. My objective is to keep it alive and usable on latest PHP versions. Code is more or less maintained but not developed any further. If you wanna participate, feel free to open a pull request!
JsonLD is a fully conforming JSON-LD processor written in PHP. It is extensively tested and passes the official JSON-LD test suite.
There's an online playground where you can evaluate the processor's basic functionality.
Additionally to the features defined by the JSON-LD API specification, JsonLD supports framing (including value matching, deep-filtering, aggressive re-embedding, and named graphs) and an experimental object-oriented interface for JSON-LD documents.
The easiest way to install JsonLD is by requiring it with Composer.
composer require ml/json-ld
... and including Composer's autoloader to your project
require('vendor/autoload.php');Of course, you can also download JsonLD as ZIP archive from Github.
JsonLD requires PHP 8.1 or later.
The library supports the official JSON-LD API as well as a object-oriented interface for JSON-LD documents (not fully implemented yet, see issue #15 for details).
All classes are extensively documented. Please have a look at the source code.
// Official JSON-LD API
$expanded = JsonLD::expand('document.jsonld');
$compacted = JsonLD::compact('document.jsonld', 'context.jsonld');
$framed = JsonLD::frame('document.jsonld', 'frame.jsonld');
$flattened = JsonLD::flatten('document.jsonld');
$quads = JsonLD::toRdf('document.jsonld');
// Output the expanded document (pretty print)
print JsonLD::toString($expanded, true);
// Serialize the quads as N-Quads
$nquads = new NQuads();
$serialized = $nquads->serialize($quads);
print $serialized;
// And parse them again to a JSON-LD document
$quads = $nquads->parse($serialized);
$document = JsonLD::fromRdf($quads);
print JsonLD::toString($document, true);
// Node-centric API
$doc = JsonLD::getDocument('document.jsonld');
// get the default graph
$graph = $doc->getGraph();
// get all nodes in the graph
$nodes = $graph->getNodes();
// retrieve a node by ID
$node = $graph->getNode('http://example.com/node1');
// get a property
$node->getProperty('http://example.com/vocab/name');
// add a new blank node to the graph
$newNode = $graph->createNode();
// link the new blank node to the existing node
$node->addPropertyValue('http://example.com/vocab/link', $newNode);
// even reverse properties are supported; this returns $newNode
$node->getReverseProperty('http://example.com/vocab/link');
// serialize the graph and convert it to a string
$serialized = JsonLD::toString($graph->toJsonLd());Commercial support is available on request.