Semantic Web and Web 3.0 · class 12 · demo

The report

One line per check, in the order of check.sh. Each check is its own program and returns 0 (ok), 2 (skip) or anything else (failure); the exit code is 0 only when nothing failed.

Rebuild the graph and run the checks again Last run 2026-11-01T13:21:28Z · run IRI run:2026-11-01T13:21:28

reproducibility check -- 2026-11-01T13:21:28Z

[skip] no Docker reachable: the health of the services was not checked
[ok] graph with 122 triples in 5 graphs, no SHACL violations
[ok] 7/7 competency queries return results
[ok] contract answered in block 8412991 (2 records indexed)
[skip] interface not reachable at http://localhost:8080 (nothing listening)

everything that can be checked here passed; 2 check(s) skipped
(on the day of the defence there can be none skipped)
CheckLine, and why
skipservices
scripts/checks/services.sh
every service of project/compose.yaml is running and healthy
[skip] no Docker reachable: the health of the services was not checked
Not run in this demo: it is one Python process and brings up no compose stack, so there is no service to ask. This is the line check.sh prints on a machine with no Docker. With the stack up (README, «The full stack, locally») it is [ok] 1 services healthy.
okgraph
scripts/checks/graph.py
output/graph.trig exists and passes shapes.ttl (SHACL)
[ok] graph with 122 triples in 5 graphs, no SHACL violations
Run now, on the graph rebuilt at start-up. The evidence →
okqueries
scripts/checks/queries.py
every queries/*.rq returns at least one row
[ok] 7/7 competency queries return results
Run now, on the graph rebuilt at start-up. The evidence →
okchain
scripts/checks/chain.py
chain/chain.nt has records with onto:block
[ok] contract answered in block 8412991 (2 records indexed)
Run now, on the graph rebuilt at start-up. The evidence →
skipinterface
scripts/checks/interface.sh
the interface answers with a status below 400
[skip] interface not reachable at http://localhost:8080 (nothing listening)
Not run in this demo: the example project has no interface (the micro frontends are each group's own) and nothing listens on :8080 here. This is the line check.sh prints when nothing answers; with any server on :8080 it is [ok] interface available at http://localhost:8080.

Before the checks: ./scripts/load-semantics.sh

The example's pipeline.py, unchanged, run inside this process. It is the step that is done before the verifier: the verifier checks a system that is already up, and can be run over and over.

[load] rebuilding the graph from the sources
rebuilding the integrated graph:
  1. catalogue (SQL):     29 triples
  2. suppliers (CSV):     30 triples
  3. external source:     12 triples (aligned with CONSTRUCT)
  4. identity:           3 sameAs, 1 closeMatch for human review
  5. provenance:         run https://data.csoares.me/run/2026-11-01T13:21:28
  6. SHACL:              no violations (116 triples)

written: output/graph.trig (122 quads)
[load] no SPARQL_UPDATE_URL: the graph stays in project/output/graph.trig

On a machine with the stack up

The online demo does not start the example's compose stack. Locally, from examples/01-check: cp .env.example .env && docker compose up -d --build --wait && ./scripts/load-semantics.sh && ./check.sh — and the first line becomes [ok] 1 services healthy. See the demo's README.