Skip to content

Seimas calendar: terms, sessions and plenary sittings since 1990 - #29

Merged
namedgraph merged 9 commits into
masterfrom
feat/seimas-sittings
Oct 10, 2026
Merged

namedgraph merged 9 commits into
masterfrom
feat/seimas-sittings

Conversation

@namedgraph

Copy link
Copy Markdown
Member

Adds the Seimas parliamentary calendar to the graph and makes it browsable from the existing data.

Data (etl/seimas, all from the apps.lrs.lt XML API)

  • 10 terms, 131 sessions and 4,771 plenary sittings since 1990, nested under the Seimas at organizations/lietuvos-respublikos-seimas/{terms,sessions,sittings}/{id}/.
  • Vocabulary: EU ELI-DL. eli-dl:ParliamentaryTerm; sessions and sittings are eli-dl:Activity, plus schema:EventSeries / schema:Event only so LinkedDataHub can target views at them. Sittings carry their day (eli-dl:activity_date), start/end times where the source has them, number, type, session, term, and the protocol and stenogram in e-seimas (eli-dl:recorded_in_a_realization_of).
  • New derived SKOS scheme taxonomies/activity-types/ (2 session types, 11 sitting types).
  • Each MP's seat membership links to its term (epvoc:memberDuringParliamentaryTerm).
  • etl/lib/fetch-xml-each.sh fetches one document per id from a parent feed (sessions per term, sittings per session).
  • SHACL shapes for terms, sessions and sittings. persons.trig and org-units.trig also pick up membership changes published on lrs.lt since the last run.

App

  • Containers for terms, sessions, sittings and activity types. The sessions and sittings containers sort newest first, with type and term filter pills.
  • New ns.ttl views: Seimas → terms, term → sessions and members, session → sittings, activity type → its sittings or sessions, person → terms. None reuses dct:isPartOf, because LDH attaches views per property and that one already carries :SubUnits.
  • Frontpage block: sittings of the current session.

Docs and examples

  • New sittings-per-term.rq example. Two existing examples were still reading the coat of arms from foaf:depiction and are fixed to read foaf:img.
  • README (lt), CLAUDE.md, URI-SCHEME.md and ONTOLOGY-NOTES.md updated.

Also in this branch (not calendar work)

  • Install scripts follow the ldh CLI's current options (positional target URI, -c keystore).
  • docker-compose.yml re-synced with LinkedDataHub (web-algebra sidecar); the sef-compiler image moves to latest.
  • 4a61956 (dev logging), committed locally on the base branch but never pushed.

Verification

  • Counts match the API: 10 / 131 / 4,771; 195 sittings in term 10.
  • 0 dangling session, term or type links. validate.sh and SHACL pass under Jena 5.6.0 and under 6.1.0 (the CI version).
  • Clean reload into the local stack: 1,271,402 quads; per-container document counts match the sources.
  • Every view query returns the expected rows in 0.02–0.17 s on the live endpoint.

Open question: the EPVOC namespace serves only HTML documentation, not RDF. If that counts as not resolving, epvoc:memberDuringParliamentaryTerm should become an ltlod: term.

Note: the ETL needs Jena 5.6.0. An exported JENA_HOME (e.g. 6.x) overrides the ?= pin in etl/config.mk.

🤖 Generated with Claude Code

namedgraph and others added 9 commits September 28, 2026 23:02
…dex write.

Takes LinkedDataHub's change to config/dev.log4j.properties, which each deployment
keeps its own copy of. org.apache.jena.sparql.core.mem is the transactional
in-memory dataset: unsuppressed, its PMapQuadTable and PMapTripleTable logged six
index insertions per quad plus the transactional references behind them, burying
startup. The StreamManager line beside it named a package Jena has moved twice since
it was written, so it had stopped suppressing anything.

Dev only; prod.log4j.properties roots at ERROR.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…s and activities.

The 10 terms since 1990 (p2b.ad_seimo_kadencijos) and their 131 sessions
(p2b.ad_seimo_sesijos, one request per term) nest under the Seimas at
terms/{kadencijos_id}/ and sessions/{sesijos_id}/. Sessions are eli-dl:Activity
plus schema:EventSeries - the second type only discriminates them from sittings
for LinkedDataHub views - with ELI-DL dates, term and responsible-organization
links, and an eli-dl:ActivityType concept from the new derived
taxonomies/activity-types/ scheme. Each MP's seat membership points at its term
through epvoc:memberDuringParliamentaryTerm. fetch-xml-each.sh fetches one
document per id read from a parent feed; calendar.xsl normalizes all three
calendar feeds. persons.trig and org-units.trig also pick up the membership
changes published since the last run.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…activity.

4771 sittings (p2b.ad_seimo_posedziai, one request per session) nest under the
Seimas at sittings/{posėdžio_id}/ as eli-dl:Activity plus schema:Event, each
forming part of its session and carrying its term, sitting type (11 new
activity-types concepts), number as eli-dl:activity_order, and the protocol and
stenogram in e-seimas as eli-dl:recorded_in_a_realization_of. Every dated
sitting has the day as eli-dl:activity_date - the sort key - and start/end
local times where the source has them; sittings before ~1998 record only the
day.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ainers plus views that cross-reference them.

terms/, sessions/ and sittings/ nest under the Seimas container, and
taxonomies/activity-types/ holds the ELI-DL activity types. The sessions and
sittings containers list their entities newest first, with activity type and
term as filter pills. New ns.ttl views: the Seimas lists its terms (:Terms),
a term its sessions (:Sessions) and the members who held a seat in it
(:TermMembers, via epvoc:memberDuringParliamentaryTerm), and a session its
plenary sittings (:Sittings). Each hangs off its own link property - never
dct:isPartOf, which already carries :SubUnits for admin units. The frontpage
gains the sittings of the ongoing session.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
sittings-per-term.rq counts sessions, plenary sittings and stenograms per term
since 1990 and joins EXAMPLES.md. Two existing examples still read the coat of
arms from foaf:depiction although reconciliation moved it to foaf:img, so
re-rendering silently dropped municipality coats of arms and undercounted
admin units with an image; both now read foaf:img. README gains the calendar
in the dataset table, link diagram and vocabulary table (and names
ltlod:ElectoralDistrict among the custom terms); CLAUDE.md records the calendar
counts, the per-property scope of ldh:inverseView, fetch-xml-each.sh, and that
an exported JENA_HOME overrides the 5.6.0 pin in etl/config.mk.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The person's memberships table gains a Kadencija column: the seat membership's
epvoc:memberDuringParliamentaryTerm links the MP to the term page (other rows
leave it empty). Activity-type concept pages list the sittings or sessions of
that type, newest first and filterable by term (:SittingsOfType,
:SessionsOfType on eli-dl:had_activity_type, ranged to eli-dl:ActivityType so
they stay off other SKOS concept pages; a type has only one kind, so the other
view stays hidden).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…able column.

:PersonTerms lists the terms in which the person held a seat (the seat
membership's epvoc:memberDuringParliamentaryTerm), as a second inverse view of
org:member next to :Memberships, so the term is a named, linked block on the
person page rather than a sparsely filled column. The column added in the
previous commit is removed from files/client.xsl again.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…URI is positional and the keystore is -c.

ldh admin make-public, push, patch, post and admin clear no longer take -b for
the base or -f for the certificate; patch and post kept -f after the earlier
rename and failed make install with "Unknown options: '-f'".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gebra sidecar.

The upstream copy adds the web-algebra service (Web-Algebra plans for the
assistant drawer, reachable only at /webalgebra with a WebID certificate), its
nginx upstream, rate limit and location, nginx's dependency on it, and the
commented-out openai_api_key secret. The override's sef-compiler image follows
to latest.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Base automatically changed from chore/ldh-cli-and-single-fuseki to master October 10, 2026 08:54
@namedgraph
namedgraph merged commit c2fe1f5 into master Oct 10, 2026
4 checks passed
@namedgraph
namedgraph deleted the feat/seimas-sittings branch October 10, 2026 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant