Open gkellogg opened 1 year ago
@pietercolpaert pointed out his implementation of JSON-LD Stream which meets similar goals.
Also by @pietercolpaert, Linked Data Event Streams.
Also by @pietercolpaert, Linked Data Event Streams.
Copy from the mailinglist:
LDES (https://w3id.org/ldes/specification) together with TREE (https://w3id.org/tree/specification) are RDF vocabularies to describe collections and members that are part of that collection. An ldes:EventStream is a tree:Collection with immutable members and thus a “log” that always grows.
Simple example of something that is an LDES:
<C1> a ldes:EventStream ;
tree:member <streetname1-v1>, <streetname1-v2> .
<streetname1-v1> rdfs:label "Station Road" ;
dcterms:isVersionOf <streetname1> ;
dcterms:created "2020-01-01T00:10:00Z"^^xsd:dateTime .
<streetname1-v2> rdfs:label "Station Square" ;
dcterms:isVersionOf <streetname1> ;
dcterms:created "2021-01-10T00:10:00Z"^^xsd:dateTime .
Using TREE you can then say that this is the first page of the LDES, and that tree:Relations exist towards other pages. Using these relation objects, you can then describe what you can find on that page: e.g., everything later in time than a certain timestamp, or everything within a geospatial area, or all members with an rdfs:label that contains a certain substring, etc.
This means that, in comparison to streamed JSON-LD, that LDES is:
The goal is thus different, and maybe even complementary. I see value in streamed JSON-LD as a convience mechanism to just append JSON to a file and still being able to automatically translate the full file to RDF quads. You need more than just NLDJSON as you also want to be more efficient and or example not repeat the @context
on each write.
From json-ld/yaml-ld#63, there are at least three different formats that could serve as the basis for this work:
application/x+ndjson
, which is not recommended. It purports to be a living spec. Previous support for comments between records, now removed.application/x+jsonlines
andapplication/x-json-stream
. Otherwise, virtually indistinguishable from NDJSON.application/json-seq
. Allows newlines within JSON records, but requires records be proceeded by an ASCII Record Separator (%x1E). A disadvantage is that this is not as amenable to presentation or editing by a common text editor.