Semantification of the CEUR-WS publication workflow
| PyPi | |
| GitHub | |
| Code | |
| Docs |
See Issue #1: Semantify CEUR-WS for the project vision and definition of done.
pip install pyCEURsemantifyThe command line tool is ceursemantify; ceursemantify -h lists the options. Releases are on
PyPI, the milestones on GitHub.
ceursemantify generates year, volume and paper pages for volume numbers and ranges, see #24.
The JSON-LD of each volume is fetched from ceur-spt and mapped to the research model of
cr.bitplan.com. The year of a volume is the year of the start date of its event.
# generate volumes into the year of their event
ceursemantify 3649-4202 -o /tmp/ceur-ws-yyyy --progress
# rebuild the page of a year from the volumes present
ceursemantify --year 2024 -o /tmp/ceur-ws-yyyy
# fetch and write the volumes of a year again and rebuild its page
ceursemantify --year 2024 --regenerate -o /tmp/ceur-ws-yyyy --progress
# load all JSON-LD files into memory and serve them as SPARQL endpoint, see #18
ceursemantify --serve -o /tmp/ceur-ws-yyyyWritten are yyyy/index.html, yyyy/Vol-N/index.html and yyyy/Vol-N/paperK/index.html, each volume and paper page with an
index.jsonld beside it and the same JSON-LD as a json-ld fence in an HTML comment that
semantify3 extracts again.
For a volume published on ceur-ws.org the page of the proceedings chair stays as it is; --embed parses it, maps it to the
research model and embeds the JSON-LD into it, see #28.
# embed the JSON-LD into the volume pages of the chairs and write index.jsonld next to them
ceursemantify --embed /path/to/Vol-4280 /path/to/Vol-4281/index.htmlThe page gets a CEURSTATE=embedded comment, the alternate link and the fence in its head; the page is only rewritten if the
embedded page parses to the same proceedings as the original one. Embedding again replaces the embedded parts.
Example: Vol-4280 with its
index.jsonld.
--generate reads local volume pages instead of ceur-spt and writes the volume and paper pages from them, see
#33 and #34.
An embedded page is read from its index.jsonld; the fence in the page is only the copy and is read when there is no
index.jsonld, see #42. So the DOIs that the registration script writes into
index.jsonld reach the pages.
# volume and paper pages into the year tree of the output directory
ceursemantify --generate /path/to/Vol-4298 -o /tmp/ceur-ws-yyyy
# in place: index.html, index.jsonld and the paper pages Vol-N/paperK/ into the volume directory itself
ceursemantify --generate /path/to/Vol-4298 --in-placeWith --in-place the page of the proceedings chair is replaced by the generated one, see
#43. The sequence for a newly published volume per
#14 is --embed, the DOI registration writing into index.jsonld,
--generate --in-place.
--serve loads all index.jsonld files into memory and serves them over the SPARQL protocol as the single point of truth,
see #18. The named queries of the
competency questions are in ceursemantify/resources/queries.yaml:
# with an entry ceur-ws-spt for the endpoint in ~/.pylodstorage/endpoints.yaml
sparqlquery -qp ceursemantify/resources/queries.yaml -en ceur-ws-spt -qn AllVolumes -f csv| File | Role |
|---|---|
ceursemantify/model.py |
research model: Proceedings, Paper, Event, Scholar, Publisher, City, Country |
ceursemantify/resources/ceurspt_mapping.yaml |
input mapping: ceur-spt JSON-LD to the research model |
ceursemantify/volume_html.py |
input mapping: volume page of the proceedings chair to the research model |
ceursemantify/loctime.py |
parser of the location and time text of a volume page |
ceursemantify/embed.py |
embedding of the JSON-LD into a volume page |
ceursemantify/resources/context.yaml |
JSON-LD context of the research model, with the terms the ontology does not have yet |
ceursemantify/resources/queries.yaml |
named queries of the competency questions for the endpoint |
ceursemantify/resources/site.yaml |
site configuration |
ontology/ceur-ws.ttl |
CEUR-WS proceedings ontology, see discussion 6 |
Prototype: 2023, 2024, 2025, 2026
| Project | Role |
|---|---|
| pyCEURmake | CEUR-WS metadata extraction and Volume Browser |
| ceur-spt | Single Point of Truth server — content negotiation (FastAPI) |
| SemPubFlow | Metadata-first publishing workflow (nicegui) |
| pyLoDStorage | List-of-Dict storage with named query support |
| geograpy3 | Location NER/NEL with Wikidata linking |
| semantify3 | YAML-to-triples — syntax matters |
| snapquery | Named parameterized query middleware |
| Paper | Venue | Status |
|---|---|---|
| Semantification of CEUR-WS with Wikidata as a target Knowledge Graph | text2kg 2023 | accepted |
| SemPubFlow: a novel Scientific Publishing Workflow using Knowledge Graphs, Wikidata and LLMs | Semantic Web Journal | rejected |
| Semantify CEUR-WS | ISWC 2026 In-Use Track | accepted |
Apache 2.0 (under discussion)