Frontpage portal blocks + Seimas membership views & XSLT overrides - #8
Merged
Conversation
Turn the bare children listing at the base URI into an introduced, data-driven frontpage. app/root.ttl now carries an ordered sequence of content blocks: - short mission intro (ldh:XHTML), with links to /sparql and EXAMPLES.md - two aggregation bar charts (ldh:ResultSetChart): faction sizes and members per nominating party, reusing the FROM <urn:x-arq:UnionGraph> cross-graph style - a committee/commission chairs view (ldh:View, TableMode) listing the chair persons (single entity type, so LDH describes only persons) - the container listing (#select-children) moved from rdf:_1 to last The chart/view queries are base-agnostic (no hardcoded local URIs), so the committed root document works on any deployment base. The chairs view relies on the LinkedDataHub fix that hoists the FROM clause when wrapping a view SELECT into DESCRIBE. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add a GridMode view of the 10 top-level admin units (counties/apskritys, cv:level atu:LTU_APS), rendered as coat-of-arms cards that drill into the SubUnits view. - Replace the "members per party" bar chart with a TableMode view listing the nominating parties, clickable to their pages. Parties have no foaf:depiction and a DESCRIBE-based view can't render the aggregate count, so it becomes a plain list rather than a grid/chart. - Reorder blocks: intro -> counties -> factions chart -> parties -> chairs -> browse/listing. - Point the intro SPARQL link at the W3C spec. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bundle the remaining outstanding work: - app/ns.ttl: 1:N inverse views (current/former members, units, nominated members, memberships) with discriminating rdfs:range targeting. - etl/seimas/mappings/persons.rq + regenerated datasets/current/seimas/persons.trig: membership org:memberDuring intervals carrying a dct:title period label. - etl/shapes/seimas.ttl: matching SHACL shape updates. - files/ (overrides.xsl, client.xsl, layout.xsl) + Makefile `sef` target + .gitignore + docs in CLAUDE.md: end-user Saxon-JS XSLT overrides that tidy the memberships table and suppress the n-ary membership plumbing blocks. The compiled SEF and docker-compose.override.yml stay gitignored. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Two related strands of work on the end-user LinkedDataHub app.
1. Frontpage portal (
app/root.ttl)Turns the LDH root document from a bare container listing into an introduced,
data-driven portal that visualises the main datasets and leads navigation into
key subpages. Ordered content blocks (
rdf:_1 … rdf:_11):ldh:XHTML) + links to the SPARQL spec andEXAMPLES.md2–3. Apskritys —
ldh:View/GridModegrid of the 10 top-level admin units(counties,
cv:level atu:LTU_APS), rendered as coat-of-arms cards that drillinto the
:SubUnitsview4–5. Frakcijų dydžiai — bar chart, current members per faction
6–7. Seimo narius iškėlusios partijos —
ldh:View/TableModelisting thenominating parties, clickable to their pages (previously a "members per party"
bar chart)
8–9. Komitetų ir komisijų pirmininkai —
ldh:View/TableModelisting thecurrent chair persons
#select-children— the container listing, kept last2. Seimas membership views + client-side XSLT overrides
app/ns.ttl— 1:N inverse views (current/former members, units, nominatedmembers, memberships), targeted by discriminating
rdfs:rangetypes.etl/seimas/mappings/persons.rq+ regenerateddatasets/current/seimas/persons.trig—org:Membership/org:memberDuringintervals carrying adct:titleperiod label(e.g.
"2024-11-14 – dabar") so the memberships table can show a readable period.etl/shapes/seimas.ttl— matching SHACL shape updates.files/overrides.xsl,client.xsl,layout.xsl+ Makefileseftarget +docker-compose.ymlmounts +.gitignore+CLAUDE.mddocs — end-user Saxon-JSXSLT overrides that tidy the memberships table and suppress the n-ary membership
plumbing blocks. The compiled SEF (
files/client.xsl.sef.json) anddocker-compose.override.ymlstay gitignored.Notes
FROM <urn:x-arq:UnionGraph>cross-graphstyle and are base-agnostic (no hardcoded local URIs), so the committed root
document works on any deployment base.
DESCRIBE-ing theprojected IRIs, so projecting label literals or several resource types yields an
empty / muddled result. This is also why the parties block is a plain list — a
DESCRIBEview can't render the aggregate member counts the old chart showed.GridModevsTableMode: counties carryfoaf:depiction(coats of arms) → gridof thumbnail cards; parties have only a label → table.
FROMclausewhen wrapping a view
SELECTintoDESCRIBE(otherwise the view returns 400).The faction bar chart renders without it.
Verification
riot --validate app/root.ttlpasses; all embedded queries run green against alive deployment (10 counties, each with a depiction; 11 nominating parties).
make install; the served root document confirms the block order,the
GridMode/TableModewiring, and removal of the old parties chart.🤖 Generated with Claude Code