Skip to content

Commit 54d722e

Browse files
Merge pull request #98 from SEMICeu/feat-server-primer - Alpha version for review
Restructuring the spec and server primer
2 parents aa6bb36 + b0b12a8 commit 54d722e

11 files changed

+820
-317
lines changed

.github/workflows/gh-pages-workflow.yml

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: LDES Server Primer Build
2+
3+
on:
4+
pull_request:
5+
paths: ["server-primer.bs"]
6+
push:
7+
branches: [main]
8+
paths: ["server-primer.bs"]
9+
tags: ["*"]
10+
11+
workflow_dispatch:
12+
13+
jobs:
14+
build:
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- uses: actions/checkout@v3
19+
20+
- name: Publish Bikeshed document
21+
uses: w3c/spec-prod@v2
22+
with:
23+
TOOLCHAIN: bikeshed
24+
25+
# Modify as appropriate
26+
GH_PAGES_BRANCH: gh-pages
27+
# The source file
28+
SOURCE: server-primer.bs
29+
30+
# output filename defaults to your input
31+
# with .html extension instead,
32+
# but if you want to customize it:
33+
DESTINATION: server-primer.html
34+
35+
copy-tag-version:
36+
name: Copy tag snapshot
37+
needs: build
38+
runs-on: ubuntu-latest
39+
if: startsWith(github.ref, 'refs/tags/')
40+
permissions:
41+
contents: write
42+
steps:
43+
- name: Checkout gh-pages
44+
uses: actions/checkout@v3
45+
with:
46+
ref: gh-pages
47+
fetch-depth: 0
48+
49+
- name: Copy server-primer snapshot
50+
run: |
51+
set -euo pipefail
52+
tag="${GITHUB_REF_NAME}"
53+
dest="versions/${tag}"
54+
mkdir -p "${dest}"
55+
cp server-primer.html "${dest}/server-primer.html"
56+
if git status --porcelain | grep . >/dev/null; then
57+
git config user.email "semic-eu+github-actions[bot]@users.noreply.github.com"
58+
git config user.name "SEMIC EU archival [bot]"
59+
git add "${dest}/server-primer.html"
60+
git commit -m "Add server primer snapshot for ${tag}"
61+
git push
62+
else
63+
echo "No changes to commit."
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: LDES Specification Build
2+
3+
on:
4+
pull_request:
5+
paths: ["eventstreams.bs"]
6+
push:
7+
branches: [main]
8+
paths: ["eventstreams.bs"]
9+
tags: ["*"]
10+
11+
workflow_dispatch:
12+
13+
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
14+
jobs:
15+
# This workflow contains a single job called "build"
16+
build:
17+
# The type of runner that the job will run on
18+
runs-on: ubuntu-latest
19+
20+
# Steps represent a sequence of tasks that will be executed as part of the job
21+
steps:
22+
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
23+
- uses: actions/checkout@v3
24+
25+
- name: Publish Bikeshed document
26+
# You may pin to the exact commit or the version.
27+
uses: w3c/spec-prod@v2
28+
with:
29+
TOOLCHAIN: bikeshed
30+
31+
# Modify as appropriate
32+
GH_PAGES_BRANCH: gh-pages
33+
# The source file
34+
SOURCE: eventstreams.bs
35+
36+
# output filename defaults to your input
37+
# with .html extension instead,
38+
# but if you want to customize it:
39+
DESTINATION: index.html
40+
41+
copy-tag-version:
42+
name: Copy tag snapshot
43+
needs: build
44+
runs-on: ubuntu-latest
45+
if: startsWith(github.ref, 'refs/tags/')
46+
permissions:
47+
contents: write
48+
steps:
49+
- name: Checkout gh-pages
50+
uses: actions/checkout@v3
51+
with:
52+
ref: gh-pages
53+
fetch-depth: 0
54+
55+
- name: Copy spec snapshot
56+
run: |
57+
set -euo pipefail
58+
tag="${GITHUB_REF_NAME}"
59+
dest="versions/${tag}"
60+
mkdir -p "${dest}"
61+
cp index.html "${dest}/index.html"
62+
if git status --porcelain | grep . >/dev/null; then
63+
git config user.email "semic-eu+github-actions[bot]@users.noreply.github.com"
64+
git config user.name "SEMIC EU archival [bot]"
65+
git add "${dest}/index.html"
66+
git commit -m "Add spec snapshot for ${tag}"
67+
git push
68+
else
69+
echo "No changes to commit."
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: LDES Vocabulary Build
2+
3+
on:
4+
pull_request:
5+
paths: ["vocabulary.bs"]
6+
push:
7+
branches: [main]
8+
paths: ["vocabulary.bs"]
9+
tags: ["*"]
10+
11+
workflow_dispatch:
12+
13+
jobs:
14+
build:
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- uses: actions/checkout@v3
19+
20+
- name: Publish Bikeshed document
21+
uses: w3c/spec-prod@v2
22+
with:
23+
TOOLCHAIN: bikeshed
24+
25+
# Modify as appropriate
26+
GH_PAGES_BRANCH: gh-pages
27+
# The source file
28+
SOURCE: vocabulary.bs
29+
30+
# output filename defaults to your input
31+
# with .html extension instead,
32+
# but if you want to customize it:
33+
DESTINATION: vocabulary.html
34+
35+
copy-tag-version:
36+
name: Copy tag snapshot
37+
needs: build
38+
runs-on: ubuntu-latest
39+
if: startsWith(github.ref, 'refs/tags/')
40+
permissions:
41+
contents: write
42+
steps:
43+
- name: Checkout gh-pages
44+
uses: actions/checkout@v3
45+
with:
46+
ref: gh-pages
47+
fetch-depth: 0
48+
49+
- name: Copy vocabulary snapshot
50+
run: |
51+
set -euo pipefail
52+
tag="${GITHUB_REF_NAME}"
53+
dest="versions/${tag}"
54+
mkdir -p "${dest}"
55+
cp vocabulary.html "${dest}/vocabulary.html"
56+
if git status --porcelain | grep . >/dev/null; then
57+
git config user.email "semic-eu+github-actions[bot]@users.noreply.github.com"
58+
git config user.name "SEMIC EU archival [bot]"
59+
git add "${dest}/vocabulary.html"
60+
git commit -m "Add vocabulary snapshot for ${tag}"
61+
git push
62+
else
63+
echo "No changes to commit."

README.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
# The Linked Data Event Streams specification
22

3-
A Linked Data Event Stream is a collection of immutable objects (such as version objects, sensor observations or archived representation). Each object is described in RDF.
3+
Linked Data Event Streams (LDES) is an initiative to, as a data publisher, find a balance between publishing your data using a as-complete-as-possible set of querying APIs and a data dump. We propose an event stream as the base API, and want to make it as light-weight as possible to host one.
44

5-
The objective of a Linked Data Event Stream is to allow consumers to replicate all of its items and to stay in sync when items are added.
5+
LDES includes:
6+
* A [vocabulary](https://w3id.org/ldes) that introduces terms to talk about an `ldes:EventStream`
7+
* An example JSON-LD context that can be accessed from [here](https://w3id.org/ldes/context). It includes the JSON labels we recommend to use in JSON-LD documents. This document may however change over time and does not come with any waranties cfr. uptime. When building for a production environment, do thus not use this URL as an external context.
8+
* A [consumer oriented specification](https://w3id.org/specification). You can use this spec if you want to implement an LDES client or consumer pipeline.
9+
* A [server primer](https://w3id.org/ldes/server-primer) that you can consult when building an LDES as a data provider.
610

7-
The HTML specification can be accessed from [here](https://w3id.org/ldes/specification).
8-
9-
An example JSON-LD context can be accessed from [here](https://w3id.org/ldes/context). It includes the JSON labels we recommend to use in JSON-LD documents. This document may however change over time and does not come with any waranties cfr. uptime. When building for a production environment, do thus not use this URL as an external context.
10-
11-
This specification uses [TREE](https://w3id.org/tree/specification) for its collection and fragmentation features, which in its turn is compatible to other specifications such as Activity Streams, DCAT-AP, LDP or Shape Trees.
12-
13-
If you are new to the concept of Linked Data Event Stream or Linked Data, [this short training](https://academy.europa.eu/courses/publishing-data-with-linked-data-event-streams-why-and-how) introduces the main concepts.
11+
The LDES specification uses the W3C [TREE hypermedia specification](https://w3id.org/tree/specification) for creating paginated search tree of event stream pages.
1412

1513
## Build the spec
1614

@@ -24,7 +22,8 @@ Install [bikeshed](https://tabatkins.github.io/bikeshed/) and then run `bikeshed
2422

2523
## Changelog
2624

27-
In 2025 the LDES specification is being rewritten from a consumer oriented perspective, while adding functionalities. Check the releases for changelogs.
25+
* 2025-11-25: v1.0 launched: redesignd retention policies, a client algorithm, a server primer, etc.
26+
* 2021-03-15: v0.1 launched: an initial design of the vocabulary with retention policies
2827

2928
## Acknowledgements
3029

0 commit comments

Comments
 (0)