https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/Head https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://www.nanopub.org/nschema#hasAssertion https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/assertion https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://www.nanopub.org/nschema#hasProvenance https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/provenance https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://www.nanopub.org/nschema#hasPublicationInfo https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/pubinfo https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.nanopub.org/nschema#Nanopublication https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/assertion https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/get-project-summary-svg http://purl.org/dc/terms/description Computes an SVG summary diagram of a FAIR project: the studies and other activities in the middle, the reused datasets that feed them on the left, the outputs they produce on the right, the findings and insights they yield above, and the people and their institutions below. Every box links to the resource it stands for. https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/get-project-summary-svg http://purl.org/dc/terms/license http://www.apache.org/licenses/LICENSE-2.0 https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/get-project-summary-svg http://www.w3.org/1999/02/22-rdf-syntax-ns#type https://w3id.org/kpxl/grlc/grlc-query https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/get-project-summary-svg http://www.w3.org/2000/01/rdf-schema#label Get project summary diagram as SVG https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/get-project-summary-svg https://w3id.org/kpxl/grlc/endpoint https://w3id.org/np/l/nanopub-query-1.1/repo/full https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/get-project-summary-svg https://w3id.org/kpxl/grlc/sparql prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix dct: <http://purl.org/dc/terms/> prefix np: <http://www.nanopub.org/nschema#> prefix npa: <http://purl.org/nanopub/admin/> prefix npx: <http://purl.org/nanopub/x/> prefix gen: <https://w3id.org/kpxl/gen/terms/> prefix ff: <https://w3id.org/fair/ff/terms/> prefix obo: <http://purl.obolibrary.org/obo/> prefix hycl: <http://purl.org/petapico/o/hycl#> prefix cito: <http://purl.org/spar/cito/> prefix foaf: <http://xmlns.com/foaf/0.1/> select (concat( '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 ', str(((((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) + (?nppl * 21 + 12) + 34) + (?ninst * 21 + 12) + 20)), '" width="980" height="', str(((((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) + (?nppl * 21 + 12) + 34) + (?ninst * 21 + 12) + 20)), '" font-family="sans-serif">', '<text x="490" y="', str(44 - 12), '" text-anchor="middle" font-size="15" font-weight="bold" fill="#333">Knowledge</text>', '<rect x="20" y="', str(44), '" width="940" height="', str((?nkno * 21 + 12)), '" rx="4" fill="#f0f0f0" stroke="#ccc"></rect>', '<text x="34" y="', str(44), '" font-size="14" fill="#111">', ?lineskno, '</text>', '<text x="180" y="', str((44 + (?nkno * 21 + 12) + 48) - 12), '" text-anchor="middle" font-size="15" font-weight="bold" fill="#333">Inputs</text>', '<rect x="20" y="', str((44 + (?nkno * 21 + 12) + 48)), '" width="320" height="', str(((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12)), '" rx="4" fill="#f0f0f0" stroke="#ccc"></rect>', '<text x="34" y="', str((44 + (?nkno * 21 + 12) + 48)), '" font-size="14" fill="#111">', ?linesin, '</text>', '<text x="505" y="', str((44 + (?nkno * 21 + 12) + 48) - 12), '" text-anchor="middle" font-size="15" font-weight="bold" fill="#333">Activities</text>', '<rect x="345" y="', str((44 + (?nkno * 21 + 12) + 48)), '" width="320" height="', str(((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12)), '" rx="4" fill="#f0f0f0" stroke="#ccc"></rect>', '<text x="359" y="', str((44 + (?nkno * 21 + 12) + 48)), '" font-size="14" fill="#111">', ?linesact, '</text>', '<text x="830" y="', str((44 + (?nkno * 21 + 12) + 48) - 12), '" text-anchor="middle" font-size="15" font-weight="bold" fill="#333">Outputs</text>', '<rect x="670" y="', str((44 + (?nkno * 21 + 12) + 48)), '" width="290" height="', str(((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12)), '" rx="4" fill="#f0f0f0" stroke="#ccc"></rect>', '<text x="684" y="', str((44 + (?nkno * 21 + 12) + 48)), '" font-size="14" fill="#111">', ?linesout, '</text>', '<text x="490" y="', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) - 12), '" text-anchor="middle" font-size="15" font-weight="bold" fill="#333">People</text>', '<rect x="20" y="', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48)), '" width="940" height="', str((?nppl * 21 + 12)), '" rx="4" fill="#f0f0f0" stroke="#ccc"></rect>', '<text x="34" y="', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48)), '" font-size="14" fill="#111">', ?linesppl, '</text>', '<text x="490" y="', str((((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) + (?nppl * 21 + 12) + 34) - 12), '" text-anchor="middle" font-size="15" font-weight="bold" fill="#333">Institutions</text>', '<rect x="20" y="', str((((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) + (?nppl * 21 + 12) + 34)), '" width="940" height="', str((?ninst * 21 + 12)), '" rx="4" fill="#f0f0f0" stroke="#ccc"></rect>', '<text x="34" y="', str((((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) + (?nppl * 21 + 12) + 34)), '" font-size="14" fill="#111">', ?linesinst, '</text>', '<path d="M 345 ', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) / 2)), ' L 329 ', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) / 2) - 7), ' L 329 ', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) / 2) + 7), ' Z" fill="#999"></path>', '<path d="M 670 ', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) / 2)), ' L 654 ', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) / 2) - 7), ' L 654 ', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) / 2) + 7), ' Z" fill="#999"></path>', '<path d="M 505 ', str((44 + (?nkno * 21 + 12) + 48) - 34), ' L 498 ', str((44 + (?nkno * 21 + 12) + 48) - 20), ' L 512 ', str((44 + (?nkno * 21 + 12) + 48) - 20), ' Z" fill="#999"></path>', '<line x1="505" y1="', str((44 + (?nkno * 21 + 12) + 48) - 20), '" x2="505" y2="', str(44 + (?nkno * 21 + 12)), '" stroke="#999" stroke-width="2"></line>', '<line x1="505" y1="', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) - 32), '" x2="505" y2="', str((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12)), '" stroke="#bbb" stroke-width="2" stroke-dasharray="4 3"></line>', '<line x1="505" y1="', str((((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) + (?nppl * 21 + 12) + 34) - 32), '" x2="505" y2="', str(((44 + (?nkno * 21 + 12) + 48) + ((if(?nin > ?nact, if(?nin > ?nout, ?nin, ?nout), if(?nact > ?nout, ?nact, ?nout))) * 21 + 12) + 48) + (?nppl * 21 + 12)), '" stroke="#bbb" stroke-width="2" stroke-dasharray="4 3"></line>', '</svg>') as ?svg) ("FAIR project summary" as ?title) where { { select (group_concat(distinct ?linekno; separator="") as ?lineskno) (count(*) as ?nkno) where { { select ?irikno (min(?labelkno) as ?lblkno) (min(?icon0kno) as ?icokno) (group_concat(distinct ?typekno; separator="/") as ?typkno) where { values ?_project_multi_iri {} service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?mpk; separator=" ") as ?memberPubkeys) where { graph npa:graph { <http://purl.org/nanopub/admin/thisRepo> npa:hasCurrentSpaceState ?stateG . } values ?_project_multi_iri {} graph ?stateG { ?_project_multi_iri npa:isMaintainedBy? ?space . ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?roleType . filter(?roleType in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk . } } } graph npa:graph { ?nps npa:hasValidSignatureForPublicKeyHash ?pks ; np:hasAssertion ?as ; np:hasPublicationInfo ?pis . filter not exists { ?ixs npx:invalidates ?nps ; npa:hasValidSignatureForPublicKeyHash ?pks . } filter not exists { ?sxs npx:supersedes ?nps . } } filter(contains(?memberPubkeys, ?pks)) graph ?as { ?study a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri . } graph npa:graph { ?npkno npa:hasValidSignatureForPublicKeyHash ?pkkno ; np:hasAssertion ?akno ; np:hasPublicationInfo ?pikno . filter not exists { ?ixkno npx:invalidates ?npkno ; npa:hasValidSignatureForPublicKeyHash ?pkkno . } filter not exists { ?sxkno npx:supersedes ?npkno . } } filter(contains(?memberPubkeys, ?pkkno)) graph ?akno { ?irikno a hycl:AIDA-Sentence ; cito:obtainsSupportFrom ?study . } optional { graph ?pikno { ?npkno rdfs:label ?lpkno } } bind(coalesce(?lpkno, "(finding)") as ?labelkno) bind("finding" as ?typekno) bind("๐Ÿ’ก" as ?icon0kno) } group by ?irikno } bind(if(strlen(?lblkno) > 96, concat(substr(?lblkno, 1, 95), "โ€ฆ"), ?lblkno) as ?tkno) bind(replace(replace(replace(?tkno, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?esckno) bind(replace(replace(replace(?lblkno, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?fullkno) bind(concat('<a href="/part?id=', encode_for_uri(str(?irikno)), '">', '<title>', ?fullkno, '</title>', '<tspan x="34" dy="21">', ?icokno, ' ', ?esckno, '</tspan>', '<tspan fill="#777"> ยท ', ?typkno, '</tspan></a>') as ?linekno) } } { select (group_concat(distinct ?linein; separator="") as ?linesin) (count(*) as ?nin) where { { select ?iriin (min(?labelin) as ?lblin) (min(?icon0in) as ?icoin) (group_concat(distinct ?typein; separator="/") as ?typin) where { values ?_project_multi_iri {} service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?mpk; separator=" ") as ?memberPubkeys) where { graph npa:graph { <http://purl.org/nanopub/admin/thisRepo> npa:hasCurrentSpaceState ?stateG . } values ?_project_multi_iri {} graph ?stateG { ?_project_multi_iri npa:isMaintainedBy? ?space . ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?roleType . filter(?roleType in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk . } } } graph npa:graph { ?npin npa:hasValidSignatureForPublicKeyHash ?pkin ; np:hasAssertion ?ain ; np:hasPublicationInfo ?piin . filter not exists { ?ixin npx:invalidates ?npin ; npa:hasValidSignatureForPublicKeyHash ?pkin . } filter not exists { ?sxin npx:supersedes ?npin . } } filter(contains(?memberPubkeys, ?pkin)) graph ?ain { ?_project_multi_iri ff:reuses ?iriin . } optional { graph ?ain { ?iriin rdfs:label ?lain } } optional { graph ?piin { ?iriin foaf:name ?lfin } } optional { graph ?piin { ?iriin rdfs:label ?lqin } } bind(coalesce(?lain, ?lfin, ?lqin, replace(str(?iriin), "^.*[/#]", "")) as ?labelin) bind("dataset" as ?typein) bind("๐Ÿ’พ" as ?icon0in) } group by ?iriin } bind(if(strlen(?lblin) > 30, concat(substr(?lblin, 1, 29), "โ€ฆ"), ?lblin) as ?tin) bind(replace(replace(replace(?tin, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?escin) bind(replace(replace(replace(?lblin, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?fullin) bind(concat('<a href="/part?id=', encode_for_uri(str(?iriin)), '">', '<title>', ?fullin, '</title>', '<tspan x="34" dy="21">', ?icoin, ' ', ?escin, '</tspan>', '<tspan fill="#777"> ยท ', ?typin, '</tspan></a>') as ?linein) } } { select (group_concat(distinct ?lineact; separator="") as ?linesact) (count(*) as ?nact) where { { select ?iriact (min(?labelact) as ?lblact) (min(?icon0act) as ?icoact) (group_concat(distinct ?typeact; separator="/") as ?typact) where { values ?_project_multi_iri {} service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?mpk; separator=" ") as ?memberPubkeys) where { graph npa:graph { <http://purl.org/nanopub/admin/thisRepo> npa:hasCurrentSpaceState ?stateG . } values ?_project_multi_iri {} graph ?stateG { ?_project_multi_iri npa:isMaintainedBy? ?space . ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?roleType . filter(?roleType in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk . } } } graph npa:graph { ?npact npa:hasValidSignatureForPublicKeyHash ?pkact ; np:hasAssertion ?aact ; np:hasPublicationInfo ?piact . filter not exists { ?ixact npx:invalidates ?npact ; npa:hasValidSignatureForPublicKeyHash ?pkact . } filter not exists { ?sxact npx:supersedes ?npact . } } filter(contains(?memberPubkeys, ?pkact)) graph ?aact { ?iriact a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri . } optional { graph ?aact { ?iriact rdfs:label ?laact } } optional { graph ?aact { ?iriact a ?subact . filter(?subact != obo:OBI_0000066 && strstarts(str(?subact), "http://purl.obolibrary.org/obo/OBI_")) } graph ?piact { ?subact rdfs:label ?sublact } } bind(coalesce(?laact, replace(str(?iriact), "^.*[/#]", "")) as ?labelact) bind(coalesce(replace(?sublact, " .*", ""), "study") as ?typeact) bind("๐Ÿงช" as ?icon0act) } group by ?iriact } bind(if(strlen(?lblact) > 30, concat(substr(?lblact, 1, 29), "โ€ฆ"), ?lblact) as ?tact) bind(replace(replace(replace(?tact, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?escact) bind(replace(replace(replace(?lblact, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?fullact) bind(concat('<a href="/part?id=', encode_for_uri(str(?iriact)), '">', '<title>', ?fullact, '</title>', '<tspan x="359" dy="21">', ?icoact, ' ', ?escact, '</tspan>', '<tspan fill="#777"> ยท ', ?typact, '</tspan></a>') as ?lineact) } } { select (group_concat(distinct ?lineout; separator="") as ?linesout) (count(*) as ?nout) where { { select ?iriout (min(?labelout) as ?lblout) (min(?icon0out) as ?icoout) (group_concat(distinct ?typeout; separator="/") as ?typout) where { values ?_project_multi_iri {} service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?mpk; separator=" ") as ?memberPubkeys) where { graph npa:graph { <http://purl.org/nanopub/admin/thisRepo> npa:hasCurrentSpaceState ?stateG . } values ?_project_multi_iri {} graph ?stateG { ?_project_multi_iri npa:isMaintainedBy? ?space . ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?roleType . filter(?roleType in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk . } } } graph npa:graph { ?npout npa:hasValidSignatureForPublicKeyHash ?pkout ; np:hasAssertion ?aout ; np:hasPublicationInfo ?piout . filter not exists { ?ixout npx:invalidates ?npout ; npa:hasValidSignatureForPublicKeyHash ?pkout . } filter not exists { ?sxout npx:supersedes ?npout . } } filter(contains(?memberPubkeys, ?pkout)) graph ?aout { ?_project_multi_iri ?relout ?iriout . values ?relout { ff:has-article ff:has-dataset ff:has-software ff:has-method ff:has-dmp ff:has-presentation ff:has-blog-post ff:has-media-coverage ff:has-social-post ff:has-podcast ff:has-discussion } } optional { graph ?aout { ?iriout rdfs:label ?laout } } optional { graph ?piout { ?iriout foaf:name ?lfout } } optional { graph ?piout { ?iriout rdfs:label ?lqout } } bind(coalesce(?laout, ?lfout, ?lqout, replace(str(?iriout), "^.*[/#]", "")) as ?labelout) bind(strafter(str(?relout), "https://w3id.org/fair/ff/terms/has-") as ?raw) bind(replace(?raw, "-", " ") as ?typeout) bind(if(?raw = "article", "๐Ÿ“„", if(?raw = "software", "๐Ÿ’ป", if(?raw = "dataset", "๐Ÿ’พ", if(?raw = "presentation", "๐ŸŽค", if(?raw = "blog-post", "โœ", if(?raw = "podcast", "๐ŸŽง", if(?raw = "media-coverage", "๐Ÿ“ฐ", if(?raw = "social-post", "๐Ÿ’ฌ", if(?raw = "discussion", "๐Ÿ—ฃ", if(?raw = "method", "๐Ÿ”ง", if(?raw = "dmp", "๐Ÿ“‹", "๐Ÿ”—"))))))))))) as ?iconout) bind(?iconout as ?icon0out) } group by ?iriout } bind(if(strlen(?lblout) > 30, concat(substr(?lblout, 1, 29), "โ€ฆ"), ?lblout) as ?tout) bind(replace(replace(replace(?tout, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?escout) bind(replace(replace(replace(?lblout, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?fullout) bind(concat('<a href="/part?id=', encode_for_uri(str(?iriout)), '">', '<title>', ?fullout, '</title>', '<tspan x="684" dy="21">', ?icoout, ' ', ?escout, '</tspan>', '<tspan fill="#777"> ยท ', ?typout, '</tspan></a>') as ?lineout) } } { select (group_concat(distinct ?lineppl; separator="") as ?linesppl) (count(*) as ?nppl) where { { select ?irippl (min(?labelppl) as ?lblppl) (min(?icon0ppl) as ?icoppl) (group_concat(distinct ?typeppl; separator="/") as ?typppl) where { values ?_project_multi_iri {} service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?mpk; separator=" ") as ?memberPubkeys) where { graph npa:graph { <http://purl.org/nanopub/admin/thisRepo> npa:hasCurrentSpaceState ?stateG . } values ?_project_multi_iri {} graph ?stateG { ?_project_multi_iri npa:isMaintainedBy? ?space . ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?roleType . filter(?roleType in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk . } } } graph npa:graph { ?npppl npa:hasValidSignatureForPublicKeyHash ?pkppl ; np:hasAssertion ?appl ; np:hasPublicationInfo ?pippl . filter not exists { ?ixppl npx:invalidates ?npppl ; npa:hasValidSignatureForPublicKeyHash ?pkppl . } filter not exists { ?sxppl npx:supersedes ?npppl . } } filter(contains(?memberPubkeys, ?pkppl)) graph ?appl { ?_project_multi_iri ?relppl ?irippl . values ?relppl { ff:has-principal-investigator ff:has-participant ff:has-data-steward gen:hasProjectLead } } optional { graph ?appl { ?irippl rdfs:label ?lappl } } optional { graph ?pippl { ?irippl foaf:name ?lfppl } } optional { graph ?pippl { ?irippl rdfs:label ?lqppl } } bind(coalesce(?lappl, ?lfppl, ?lqppl, replace(str(?irippl), "^.*[/#]", "")) as ?labelppl) bind(if(?relppl = ff:has-principal-investigator, "PI", if(?relppl = gen:hasProjectLead, "lead", if(?relppl = ff:has-data-steward, "steward", "participant"))) as ?typeppl) bind("๐Ÿ‘ค" as ?icon0ppl) } group by ?irippl } bind(if(strlen(?lblppl) > 42, concat(substr(?lblppl, 1, 41), "โ€ฆ"), ?lblppl) as ?tppl) bind(replace(replace(replace(?tppl, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?escppl) bind(replace(replace(replace(?lblppl, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?fullppl) bind(concat('<a href="/part?id=', encode_for_uri(str(?irippl)), '">', '<title>', ?fullppl, '</title>', '<tspan x="34" dy="21">', ?icoppl, ' ', ?escppl, '</tspan>', '<tspan fill="#777"> ยท ', ?typppl, '</tspan></a>') as ?lineppl) } } { select (group_concat(distinct ?lineinst; separator="") as ?linesinst) (count(*) as ?ninst) where { { select ?iriinst (min(?labelinst) as ?lblinst) (min(?icon0inst) as ?icoinst) (group_concat(distinct ?typeinst; separator="/") as ?typinst) where { values ?_project_multi_iri {} service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?mpk; separator=" ") as ?memberPubkeys) where { graph npa:graph { <http://purl.org/nanopub/admin/thisRepo> npa:hasCurrentSpaceState ?stateG . } values ?_project_multi_iri {} graph ?stateG { ?_project_multi_iri npa:isMaintainedBy? ?space . ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?roleType . filter(?roleType in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk . } } } graph npa:graph { ?npinst npa:hasValidSignatureForPublicKeyHash ?pkinst ; np:hasAssertion ?ainst ; np:hasPublicationInfo ?piinst . filter not exists { ?ixinst npx:invalidates ?npinst ; npa:hasValidSignatureForPublicKeyHash ?pkinst . } filter not exists { ?sxinst npx:supersedes ?npinst . } } filter(contains(?memberPubkeys, ?pkinst)) graph ?ainst { ?_project_multi_iri ?relinst ?iriinst . values ?relinst { ff:has-lead-institution ff:has-partner-institution ff:has-funder } } optional { graph ?ainst { ?iriinst rdfs:label ?lainst } } optional { graph ?piinst { ?iriinst foaf:name ?lfinst } } optional { graph ?piinst { ?iriinst rdfs:label ?lqinst } } bind(coalesce(?lainst, ?lfinst, ?lqinst, replace(str(?iriinst), "^.*[/#]", "")) as ?labelinst) bind(if(?relinst = ff:has-lead-institution, "lead", if(?relinst = ff:has-partner-institution, "partner", "funder")) as ?typeinst) bind("๐Ÿ›" as ?icon0inst) } group by ?iriinst } bind(if(strlen(?lblinst) > 52, concat(substr(?lblinst, 1, 51), "โ€ฆ"), ?lblinst) as ?tinst) bind(replace(replace(replace(?tinst, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?escinst) bind(replace(replace(replace(?lblinst, "&", "&amp;"), "<", "&lt;"), ">", "&gt;") as ?fullinst) bind(concat('<a href="/part?id=', encode_for_uri(str(?iriinst)), '">', '<title>', ?fullinst, '</title>', '<tspan x="34" dy="21">', ?icoinst, ' ', ?escinst, '</tspan>', '<tspan fill="#777"> ยท ', ?typinst, '</tspan></a>') as ?lineinst) } } } https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/provenance https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/assertion http://www.w3.org/ns/prov#wasAttributedTo https://orcid.org/0000-0002-1267-0234 https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/pubinfo https://orcid.org/0000-0002-1267-0234 http://xmlns.com/foaf/0.1/name Tobias Kuhn https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://purl.org/dc/terms/created 2026-08-14T09:30:00Z https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://purl.org/dc/terms/creator https://orcid.org/0000-0002-1267-0234 https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://purl.org/dc/terms/license https://creativecommons.org/licenses/by/4.0/ https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://purl.org/nanopub/x/embeds https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/get-project-summary-svg https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://purl.org/nanopub/x/supersedes https://w3id.org/np/RAB0A48STv6efzv1khghLrvl-hMh88-1hBl6vOMJvzM2I https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 http://www.w3.org/2000/01/rdf-schema#label Get project summary diagram as SVG https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 https://w3id.org/np/o/ntemplate/wasCreatedFromProvenanceTemplate http://purl.org/np/RAcm8OurwUk15WOgBM9wySo-T3a5h6as4K8YR5MBrrxUc https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8 https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RARW4MsFkHuwjycNElvEVtuMjpf4yWDL10-0C5l2MqqRQ https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RAoTD7udB2KtUuOuAe74tJi1t3VzK0DyWS7rYVAq1GRvw https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 https://w3id.org/np/o/ntemplate/wasCreatedFromTemplate https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/sig http://purl.org/nanopub/x/hasAlgorithm RSA https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/sig http://purl.org/nanopub/x/hasPublicKey MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/sig http://purl.org/nanopub/x/hasSignature AfbsHXrIhouiy+S8HS9v0g2k/1UrJcQrgTR/l70niqFWsxVTpgLYmvqdHt1C986mWdxHzaUQSvLv4sEX7PrYZAxtsOfDPoBKAmPdpdE6nG+qSLuu7fMl9xqpQ9KBUGciqYbaAUSKrQYJ+W/4mNWw0QTKEuL1BxV1i9ffE7rPc4I= https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/sig http://purl.org/nanopub/x/hasSignatureTarget https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0 https://w3id.org/np/RAylw5GVAohwMiDZty7dtWtZu94TbrFcfLLtgzJ1wbHX0/sig http://purl.org/nanopub/x/signedBy https://orcid.org/0000-0002-1267-0234