. . . . "Returns one row per person involved in the projects of a space: everybody granted a project role (principal investigator, project leader, data steward or participant, the ff:has-* role relations) in the space itself or in any space whose IRI extends it with a slash, the same sub-space convention the sibling 'all projects' views use. Each row gives the person with their name (from the pubinfo of the role nanopublications), the number of projects they are involved in, and the distinct roles they hold across those projects. Rows are ordered by the number of projects, then by name. Institutions, which the previous version of this query listed alongside the people, now have their own view. Only role nanopublications signed by a current admin, maintainer or member of a space in the subtree count, with invalidated, superseded and example nanopublications skipped; the membership lookup is a federated sub-select sharing no variables with the rest of the query, so it runs once." . . . "Get the people per space and its sub-spaces, with project counts" . . "prefix rdfs: \nprefix np: \nprefix npa: \nprefix npx: \nprefix nt: \nprefix gen: \nprefix ff: \nprefix foaf: \n\nselect ?person ?person_label ?projects ?roles\nwhere {\n {\n select ?person (min(?name) as ?person_label)\n (count(distinct ?project) as ?projects)\n (group_concat(distinct ?roleLabel; separator=\", \") as ?roles)\n where {\n values ?_space_multi_iri {}\n # One row holding every member pubkey hash of the space and its sub-spaces; a\n # sub-select sharing no variables with the rest, so it is evaluated once.\n {\n select (group_concat(distinct ?mpk; separator=\" \") as ?memberPubkeys) where {\n service {\n select ?mpk where {\n values ?_space_multi_iri {}\n graph npa:graph { npa:hasCurrentSpaceState ?stateG . }\n graph ?stateG {\n ?ri a gen:RoleInstantiation ; npa:forSpace ?sp ; npa:forAgent ?agent ; npa:hasRoleType ?rt .\n filter(?rt in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole))\n ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk .\n }\n filter(?sp = ?_space_multi_iri || strstarts(str(?sp), concat(str(?_space_multi_iri), \"/\")))\n }\n }\n }\n }\n graph npa:graph {\n ?np npa:hasValidSignatureForPublicKeyHash ?npPubkey .\n filter not exists { ?invNp npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?npPubkey . }\n filter not exists { ?supNp npx:supersedes ?np . }\n filter not exists { ?np npx:hasNanopubType npx:ExampleNanopub . }\n ?np np:hasAssertion ?a .\n ?np np:hasPublicationInfo ?pi .\n }\n filter(contains(?memberPubkeys, ?npPubkey))\n # People: one role-instantiation nanopub per person and project role.\n graph ?pi { ?np npx:hasNanopubType gen:RoleInstantiation }\n graph ?a { ?project ?relation ?person }\n filter(?relation in (ff:has-principal-investigator, ff:has-project-leader,\n ff:has-data-steward, ff:has-participant))\n filter(?project = ?_space_multi_iri || strstarts(str(?project), concat(str(?_space_multi_iri), \"/\")))\n optional { graph ?pi { ?person foaf:name|nt:hasLabelFromApi ?name } }\n bind(replace(strafter(str(?relation), \"https://w3id.org/fair/ff/terms/has-\"), \"-\", \" \") as ?roleLabel)\n }\n group by ?person\n }\n}\norder by desc(?projects) ?person_label" . . "Tobias Kuhn" . "2026-09-13T05:50:30Z"^^ . . . . . "Get the people per space and its sub-spaces, with project counts" . . . . . . "RSA" . "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" . "ftRzN+JKOjetCBbmUhardQchb8m1ggemgDimjB+2fS3Y36eR5vUipoKdsRB+GC/h3pDa38SGnfGBv6RxI/xcTtynYn933PtG5sZTC5cENGl9j0lIdatXNg0W47gqHo5qCwMYMyQIPGgjny30t5pi4UDHohcS4La6V6MHxhDnnQU=" . . .