Skip to content

feat(spaces): show member names instead of bare ORCIDs in space user listings - #695

Merged
tkuhn merged 1 commit into
masterfrom
feat/space-user-view-name-labels
Sep 8, 2026
Merged

feat(spaces): show member names instead of bare ORCIDs in space user listings#695
tkuhn merged 1 commit into
masterfrom
feat/space-user-view-name-labels

Conversation

@tkuhn

@tkuhn tkuhn commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Problem

The Approved Admins/Maintainers/Members, Self-Assigned/Observers and Pending Admins/Maintainers/Members tables on a space's About tab rendered most agents as bare ORCID digits.

Nanodash resolves an agent name client-side in NanodashLink, but only via UserDataget-all-user-intros, which covers just the agents who published a key introduction of their own. Most role holders of a space never did. For https://w3id.org/spaces/semantics/2026-eu that was 4 named out of 97 members.

Fix

The names are already in the data, so the listing queries now return them as a member_label companion column, resolved in two steps:

  1. foaf:name on the agent in the current space-state graph — canonical, from the agent's own introduction;
  2. otherwise the foaf:name asserted for that agent in the pubinfo of the grant nanopublication (Nanodash writes this whenever an agent placeholder is filled).

QueryResultTable hides a _label companion and renders it as the link text, and FilteredQueryResultDataProvider already sorts a column on its _label, so no rendering code changes. Default row order now follows the display name (tier first for members).

Full label coverage on every space sampled, at no measurable cost (330 rows in ~0.9 s). Agents whose grant carries no name either — purely self-declared claims — still show their IRI; that name was never asserted anywhere.

Why a code change is needed

Views resolve to their latest version automatically, but queries are pinned by exact IRI. And AboutSpacePanel drives these three tables from the hard-coded ref-scoped queries (root_np-keyed), not from the views' own gen:hasViewQuery, whenever the ref root is known — the view query is only the fallback. So the constants have to be bumped here for the change to reach a real space page.

Constant New query Supersedes
LIST_SPACE_MEMBERS_REF RA-90ZiEE8OomcMz4np_IoQtsodQjyycUKfRPMDI67ju4 RAJ15No3…
LIST_SPACE_OBSERVERS_REF RANXPEIihP6m2ozdLr6KTw4Jw9fKk6BxbI3sGVOuyYUzQ RAt8PKQ2…
LIST_SPACE_NON_APPROVED_REF RAoX3HtuHttjxGWkdPc9tzF11hNrTiD2fm3OcQgR7Wbxw RAVsaIwA…

The corresponding IRI-keyed queries (the no-refRoot fallback) and the three view nanopubs were superseded alongside them, so both paths agree. All are published live and their supersede chains resolve.

Verification

Ran a local instance on the patched constants:

  • zonmw/antibiotica-resistentie-abr/541003005 — members render as Margreet Bloemers, Tobias Kuhn, Anita C. Schürch, Ad Fluit, Herman Wunderink, JPM Coolen, Lieke B. van Alphen, Monika Anna Fliss, Rob Willems, Suzan Bongers (previously all but two were bare ORCIDs).
  • fdo-conference-2026 — members 3/3 named, observers 10/10 named on the first page, pending 10/10 named.

Headers stay member | tier | role assignments; member_label is hidden as a companion.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Npfb25jWo6cLNjKbHZPtim

…listings

The Approved Members, Self-Assigned/Observers and Pending Members tables on a
space's About tab rendered most agents as bare ORCID digits. Nanodash resolves a
name client-side only via UserData (get-all-user-intros), which covers just the
agents who published a key introduction of their own -- for
https://w3id.org/spaces/semantics/2026-eu that was 4 of 97 members.

The names are in the data already, so the listing queries now return them as a
member_label companion column: the canonical foaf:name mirrored into the current
space state when present, otherwise the foaf:name asserted for that agent in the
pubinfo of the grant nanopublication. Full label coverage on every space sampled,
at no measurable query cost (330 rows in ~0.9s). Purely self-declared claims that
carry no name anywhere still show their IRI.

Views resolve to their latest version, but queries are pinned by exact IRI, so
the three ref-scoped constants have to be bumped here for the change to take
effect on space pages -- AboutSpacePanel drives these tables from the ref-scoped
queries, not from the views' own gen:hasViewQuery, whenever the ref root is known.

Published query supersedes:
- LIST_SPACE_MEMBERS_REF      RA-90ZiE (supersedes RAJ15No3)
- LIST_SPACE_OBSERVERS_REF    RANXPEIi (supersedes RAt8PKQ2)
- LIST_SPACE_NON_APPROVED_REF RAoX3Htu (supersedes RAVsaIwA)

The corresponding IRI-keyed queries (used as the no-refRoot fallback) and the
three view nanopubs were superseded alongside them, so both paths agree.

Verified end-to-end against a local instance: all three tables render names and
keep their existing headers, with member_label hidden as a label companion.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Npfb25jWo6cLNjKbHZPtim
@tkuhn
tkuhn merged commit dc7f178 into master Sep 8, 2026
8 checks passed
@tkuhn
tkuhn deleted the feat/space-user-view-name-labels branch September 8, 2026 12:16
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