https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/Head
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://www.nanopub.org/nschema#hasAssertion
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/assertion
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://www.nanopub.org/nschema#hasProvenance
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/provenance
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://www.nanopub.org/nschema#hasPublicationInfo
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/pubinfo
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://www.nanopub.org/nschema#Nanopublication
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/assertion
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/get-project-summary-svg
http://purl.org/dc/terms/description
Computes an SVG summary diagram of a FAIR project: the studies and other activities on the left, the outputs they produced on the right, the evidence they yielded above that, 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/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/get-project-summary-svg
http://purl.org/dc/terms/license
http://www.apache.org/licenses/LICENSE-2.0
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/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/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/get-project-summary-svg
http://www.w3.org/2000/01/rdf-schema#label
Get project summary diagram as SVG
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/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/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/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/>
prefix prov: <http://www.w3.org/ns/prov#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select (concat(
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 ', str((((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) + (floor((?nppl + 2) / 3) * 28 + 14) + 36) + (floor((?ninst + 1) / 2) * 28 + 14) + 12)),
'" width="', str(700 * 2), '" height="', str((((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) + (floor((?nppl + 2) / 3) * 28 + 14) + 36) + (floor((?ninst + 1) / 2) * 28 + 14) + 12) * 2), '" font-family="Noto Emoji, Inter, Verdana, Helvetica, sans-serif">',
'<text x="350" y="', str(26 - 9), '" text-anchor="middle" font-size="11" font-weight="bold" fill="#444" letter-spacing="0.8">๐ก KNOWLEDGE</text>',
'<rect x="10" y="', str(26), '" width="680" height="', str((floor((?nkno + 0) / 1) * 40 + 14)),
'" rx="4" fill="#f4f4f4" stroke="#888"></rect>',
'<g transform="translate(22,', str(26 + 6), ')">', ?boxeskno, '</g>',
'<text x="350" y="', str((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) - 9), '" text-anchor="middle" font-size="11" font-weight="bold" fill="#444" letter-spacing="0.8">๐ EVIDENCE</text>',
'<rect x="10" y="', str((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44)), '" width="680" height="', str((floor((?nev + 1) / 2) * 28 + 14)),
'" rx="4" fill="#f4f4f4" stroke="#888"></rect>',
'<g transform="translate(22,', str((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + 6), ')">', ?boxesev, '</g>',
'<text x="192" y="', str(((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) - 9), '" text-anchor="middle" font-size="11" font-weight="bold" fill="#444" letter-spacing="0.8">๐งช ACTIVITIES</text>',
'<rect x="50" y="', str(((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44)), '" width="284" height="', str(((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14)),
'" rx="4" fill="#f4f4f4" stroke="#888"></rect>',
'<g transform="translate(62,', str(((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + 6), ')">', ?boxesact, '</g>',
'<text x="508" y="', str(((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) - 9), '" text-anchor="middle" font-size="11" font-weight="bold" fill="#444" letter-spacing="0.8">๐ฆ OUTPUTS</text>',
'<rect x="366" y="', str(((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44)), '" width="284" height="', str(((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14)),
'" rx="4" fill="#f4f4f4" stroke="#888"></rect>',
'<g transform="translate(378,', str(((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + 6), ')">', ?boxesout, '</g>',
'<text x="350" y="', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) - 9), '" text-anchor="middle" font-size="11" font-weight="bold" fill="#444" letter-spacing="0.8">๐ค PEOPLE</text>',
'<rect x="22" y="', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44)), '" width="656" height="', str((floor((?nppl + 2) / 3) * 28 + 14)),
'" rx="4" fill="#f4f4f4" stroke="#888"></rect>',
'<g transform="translate(34,', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) + 6), ')">', ?boxesppl, '</g>',
'<text x="350" y="', str(((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) + (floor((?nppl + 2) / 3) * 28 + 14) + 36) - 9), '" text-anchor="middle" font-size="11" font-weight="bold" fill="#444" letter-spacing="0.8">๐ INSTITUTIONS</text>',
'<rect x="30" y="', str(((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) + (floor((?nppl + 2) / 3) * 28 + 14) + 36)), '" width="640" height="', str((floor((?ninst + 1) / 2) * 28 + 14)),
'" rx="4" fill="#f4f4f4" stroke="#888"></rect>',
'<g transform="translate(42,', str(((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) + (floor((?nppl + 2) / 3) * 28 + 14) + 36) + 6), ')">', ?boxesinst, '</g>',
'<line x1="338" y1="', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) / 2)), '" x2="356" y2="', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) / 2)), '" stroke="#666" stroke-width="1.5"></line>',
'<path d="M 366 ', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) / 2)), ' L 354 ', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) / 2) - 5), ' L 354 ', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) / 2) + 5), ' Z" fill="#666"></path>',
'<line x1="350" y1="', str(((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) - 22), '" x2="350" y2="', str((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 10), '" stroke="#666" stroke-width="1.5"></line>',
'<path d="M 350 ', str((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 2), ' L ', str(350 - 5), ' ', str((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 14), ' L ', str(350 + 5), ' ', str((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 14), ' Z" fill="#666"></path>',
'<line x1="350" y1="', str((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) - 22), '" x2="350" y2="', str(26 + (floor((?nkno + 0) / 1) * 40 + 14) + 10), '" stroke="#666" stroke-width="1.5"></line>',
'<path d="M 350 ', str(26 + (floor((?nkno + 0) / 1) * 40 + 14) + 2), ' L ', str(350 - 5), ' ', str(26 + (floor((?nkno + 0) / 1) * 40 + 14) + 14), ' L ', str(350 + 5), ' ', str(26 + (floor((?nkno + 0) / 1) * 40 + 14) + 14), ' Z" fill="#666"></path>',
'<line x1="350" y1="', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) - 22), '" x2="350" y2="', str(((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14)), '" stroke="#bbb" stroke-width="1.5" stroke-dasharray="3 3"></line>',
'<line x1="350" y1="', str(((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) + (floor((?nppl + 2) / 3) * 28 + 14) + 36) - 22), '" x2="350" y2="', str((((26 + (floor((?nkno + 0) / 1) * 40 + 14) + 44) + (floor((?nev + 1) / 2) * 28 + 14) + 44) + ((if(?nact > ?nout, ?nact, ?nout)) * 28 + 14) + 44) + (floor((?nppl + 2) / 3) * 28 + 14)), '" stroke="#bbb" stroke-width="1.5" stroke-dasharray="3 3"></line>',
'</svg>') as ?svg) ("FAIR project summary" as ?title)
where {
{
select (group_concat(distinct ?boxkno; separator="") as ?boxeskno) (count(*) as ?nkno) where {
{
select ?irikno ?lblkno ?icokno ?typkno ?rrankkno (count(distinct ?okno) as ?iykno) where {
values ?_project_multi_iri {}
{
select ?irikno (min(?labelkno) as ?lblkno) (min(?iconkno) as ?icokno)
(group_concat(distinct ?typekno; separator=", ") as ?typkno) (min(?rrkno) as ?rrankkno)
(sample(?memberPubkeys) as ?mpkkno) 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 {
?npsgkno np:hasAssertion ?asgkno ;
npa:hasValidSignatureForPublicKeyHash ?pksgkno .
filter not exists { ?ixsgkno npx:invalidates ?npsgkno ; npa:hasValidSignatureForPublicKeyHash ?pksgkno . }
filter not exists { ?sxsgkno npx:supersedes ?npsgkno . }
}
filter(contains(?memberPubkeys, ?pksgkno))
graph ?asgkno {
?studygkno a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri .
}
graph npa:graph {
?npfgkno np:hasAssertion ?afgkno ;
npa:hasValidSignatureForPublicKeyHash ?pkfgkno .
filter not exists { ?ixfgkno npx:invalidates ?npfgkno ; npa:hasValidSignatureForPublicKeyHash ?pkfgkno . }
filter not exists { ?sxfgkno npx:supersedes ?npfgkno . }
}
filter(contains(?memberPubkeys, ?pkfgkno))
graph ?afgkno {
?fndkno a hycl:AIDA-Sentence ; cito:obtainsSupportFrom ?studygkno .
}
graph npa:graph {
?nprgkno np:hasAssertion ?argkno ;
npa:hasValidSignatureForPublicKeyHash ?pkrgkno .
filter not exists { ?ixrgkno npx:invalidates ?nprgkno ; npa:hasValidSignatureForPublicKeyHash ?pkrgkno . }
filter not exists { ?sxrgkno npx:supersedes ?nprgkno . }
}
filter(contains(?memberPubkeys, ?pkrgkno))
graph ?argkno {
?irikno hycl:hasMoreGeneralMeaningThan ?fndkno .
}
bind(replace(replace(replace(replace(replace(strafter(str(?irikno), "http://purl.org/aida/"), "[+]", " "), "%2C", ","), "%3A", ":"), "%28", "("), "%29", ")") as ?labelkno)
bind("increased evidence" as ?typekno)
bind(0 as ?rrkno)
bind("๐ก" as ?iconkno)
} union {
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 {
?npskno np:hasAssertion ?askno ;
npa:hasValidSignatureForPublicKeyHash ?pkskno .
filter not exists { ?ixskno npx:invalidates ?npskno ; npa:hasValidSignatureForPublicKeyHash ?pkskno . }
filter not exists { ?sxskno npx:supersedes ?npskno . }
}
filter(contains(?memberPubkeys, ?pkskno))
graph ?askno {
?studykno a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri .
}
graph npa:graph {
?npkno np:hasAssertion ?akno ;
np:hasPublicationInfo ?pikno ;
npa:hasValidSignatureForPublicKeyHash ?pkkno .
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 ?studykno .
}
optional { graph ?pikno { ?npkno rdfs:label ?lpkno } }
bind(coalesce(?lpkno, replace(replace(replace(replace(replace(strafter(str(?irikno), "http://purl.org/aida/"), "[+]", " "), "%2C", ","), "%3A", ":"), "%28", "("), "%29", ")")) as ?labelkno)
bind("finding" as ?typekno)
bind(1 as ?rrkno)
bind("๐ก" as ?iconkno)
}
} group by ?irikno
}
optional {
{
graph npa:graph {
?onpsgkno np:hasAssertion ?oasgkno ;
npa:hasValidSignatureForPublicKeyHash ?opksgkno .
filter not exists { ?oixsgkno npx:invalidates ?onpsgkno ; npa:hasValidSignatureForPublicKeyHash ?opksgkno . }
filter not exists { ?osxsgkno npx:supersedes ?onpsgkno . }
}
graph ?oasgkno {
?ostudygkno a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri .
}
graph npa:graph {
?onpfgkno np:hasAssertion ?oafgkno ;
npa:hasValidSignatureForPublicKeyHash ?opkfgkno .
filter not exists { ?oixfgkno npx:invalidates ?onpfgkno ; npa:hasValidSignatureForPublicKeyHash ?opkfgkno . }
filter not exists { ?osxfgkno npx:supersedes ?onpfgkno . }
}
graph ?oafgkno {
?ofndkno a hycl:AIDA-Sentence ; cito:obtainsSupportFrom ?ostudygkno .
}
graph npa:graph {
?onprgkno np:hasAssertion ?oargkno ;
npa:hasValidSignatureForPublicKeyHash ?opkrgkno .
filter not exists { ?oixrgkno npx:invalidates ?onprgkno ; npa:hasValidSignatureForPublicKeyHash ?opkrgkno . }
filter not exists { ?osxrgkno npx:supersedes ?onprgkno . }
}
graph ?oargkno {
?okno hycl:hasMoreGeneralMeaningThan ?ofndkno .
}
bind(0 as ?orrkno)
} union {
graph npa:graph {
?onpskno np:hasAssertion ?oaskno ;
npa:hasValidSignatureForPublicKeyHash ?opkskno .
filter not exists { ?oixskno npx:invalidates ?onpskno ; npa:hasValidSignatureForPublicKeyHash ?opkskno . }
filter not exists { ?osxskno npx:supersedes ?onpskno . }
}
graph ?oaskno {
?ostudykno a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri .
}
graph npa:graph {
?onpkno np:hasAssertion ?oakno ;
np:hasPublicationInfo ?opikno ;
npa:hasValidSignatureForPublicKeyHash ?opkkno .
filter not exists { ?oixkno npx:invalidates ?onpkno ; npa:hasValidSignatureForPublicKeyHash ?opkkno . }
filter not exists { ?osxkno npx:supersedes ?onpkno . }
}
graph ?oakno {
?okno a hycl:AIDA-Sentence ; cito:obtainsSupportFrom ?ostudykno .
}
bind(1 as ?orrkno)
}
filter(concat(str(?orrkno), "|", str(?okno)) < concat(str(?rrankkno), "|", str(?irikno))
&& (!bound(?opkfgkno) || contains(?mpkkno, ?opkfgkno))
&& (!bound(?opkkno) || contains(?mpkkno, ?opkkno))
&& (!bound(?opkrgkno) || contains(?mpkkno, ?opkrgkno))
&& (!bound(?opksgkno) || contains(?mpkkno, ?opksgkno))
&& (!bound(?opkskno) || contains(?mpkkno, ?opkskno)))
}
} group by ?irikno ?lblkno ?icokno ?typkno ?rrankkno
}
bind((?iykno - floor(?iykno / 1) * 1) * 672 as ?bxkno)
bind(floor(?iykno / 1) * 40 as ?bykno)
bind(xsd:integer(floor((656 - 30 - strlen(?typkno) * 4.9) / 5.5)) as ?cap0kno)
bind(if(?cap0kno < 8, 8, ?cap0kno) as ?capkno)
bind(?lblkno as ?tkno)
bind(replace(replace(replace(?tkno, "&", "&"), "<", "<"), ">", ">") as ?esckno)
bind(replace(replace(replace(?lblkno, "&", "&"), "<", "<"), ">", ">") as ?fullkno)
bind(if(strlen(?esckno) > 92, replace(?esckno, "^(.{1,92})[ ].*$", "$1"), ?esckno) as ?l1kno)
bind(if(strlen(?esckno) > strlen(?l1kno), substr(?esckno, strlen(?l1kno) + 2, 108), "") as ?l2kno)
bind(concat('<a href="/part?id=', encode_for_uri(str(?irikno)), '">',
'<title>', ?fullkno, '</title>',
'<text x="', str(?bxkno), '" y="', str(?bykno + 12), '" font-size="10" fill="#111">',
?icokno, ' ', ?l1kno, '</text>',
'<text x="', str(?bxkno + 14), '" y="', str(?bykno + 25), '" font-size="10" fill="#111">', ?l2kno, '</text>',
'</a>',
'<text x="', str(?bxkno + 656), '" y="', str(?bykno + 12), '" text-anchor="end" font-size="9" ',
'fill="#111">', ?typkno, '</text>') as ?boxkno)
}
}
{
select (group_concat(distinct ?boxev; separator="") as ?boxesev) (count(*) as ?nev) where {
{
select ?iriev ?lblev ?icoev ?typev ?rrankev (count(distinct ?oev) as ?iyev) where {
values ?_project_multi_iri {}
{
select ?iriev (min(?labelev) as ?lblev) (min(?iconev) as ?icoev)
(group_concat(distinct ?typeev; separator=", ") as ?typev) (min(?rrev) as ?rrankev)
(sample(?memberPubkeys) as ?mpkev) 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 {
?npsev np:hasAssertion ?asev ;
npa:hasValidSignatureForPublicKeyHash ?pksev .
filter not exists { ?ixsev npx:invalidates ?npsev ; npa:hasValidSignatureForPublicKeyHash ?pksev . }
filter not exists { ?sxsev npx:supersedes ?npsev . }
}
filter(contains(?memberPubkeys, ?pksev))
graph ?asev {
?studyev a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri .
}
graph npa:graph {
?npev np:hasAssertion ?aev ;
np:hasPublicationInfo ?piev ;
npa:hasValidSignatureForPublicKeyHash ?pkev .
filter not exists { ?ixev npx:invalidates ?npev ; npa:hasValidSignatureForPublicKeyHash ?pkev . }
filter not exists { ?sxev npx:supersedes ?npev . }
}
filter(contains(?memberPubkeys, ?pkev))
graph ?aev {
?iriev a obo:ECO_0000000 ; prov:wasGeneratedBy ?studyev .
}
optional { graph ?aev { ?iriev rdfs:label ?laev } }
optional {
graph ?aev {
?iriev a ?subev .
filter(?subev != obo:ECO_0000000 && strstarts(str(?subev), "http://purl.obolibrary.org/obo/ECO_"))
}
graph ?piev { ?subev rdfs:label ?sublev }
}
bind(coalesce(?laev, replace(str(?iriev), "^.*[/#]", "")) as ?labelev)
bind(coalesce(replace(?sublev, " evidence$", ""), "evidence") as ?typeev)
bind(0 as ?rrev)
bind("๐" as ?iconev)
} group by ?iriev
}
optional {
graph npa:graph {
?onpsev np:hasAssertion ?oasev ;
npa:hasValidSignatureForPublicKeyHash ?opksev .
filter not exists { ?oixsev npx:invalidates ?onpsev ; npa:hasValidSignatureForPublicKeyHash ?opksev . }
filter not exists { ?osxsev npx:supersedes ?onpsev . }
}
graph ?oasev {
?ostudyev a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri .
}
graph npa:graph {
?onpev np:hasAssertion ?oaev ;
np:hasPublicationInfo ?opiev ;
npa:hasValidSignatureForPublicKeyHash ?opkev .
filter not exists { ?oixev npx:invalidates ?onpev ; npa:hasValidSignatureForPublicKeyHash ?opkev . }
filter not exists { ?osxev npx:supersedes ?onpev . }
}
graph ?oaev {
?oev a obo:ECO_0000000 ; prov:wasGeneratedBy ?ostudyev .
}
bind(0 as ?orrev)
filter(concat(str(?orrev), "|", str(?oev)) < concat(str(?rrankev), "|", str(?iriev))
&& (!bound(?opkev) || contains(?mpkev, ?opkev))
&& (!bound(?opksev) || contains(?mpkev, ?opksev)))
}
} group by ?iriev ?lblev ?icoev ?typev ?rrankev
}
bind((?iyev - floor(?iyev / 2) * 2) * 336 as ?bxev)
bind(floor(?iyev / 2) * 28 as ?byev)
bind(xsd:integer(floor((320 - 30 - strlen(?typev) * 4.9) / 5.5)) as ?cap0ev)
bind(if(?cap0ev < 8, 8, ?cap0ev) as ?capev)
bind(if(strlen(?lblev) > ?capev, concat(substr(?lblev, 1, ?capev - 1), "โฆ"), ?lblev) as ?tev)
bind(replace(replace(replace(?tev, "&", "&"), "<", "<"), ">", ">") as ?escev)
bind(replace(replace(replace(?lblev, "&", "&"), "<", "<"), ">", ">") as ?fullev)
bind(concat('<a href="/part?id=', encode_for_uri(str(?iriev)), '">',
'<title>', ?fullev, '</title>',
'<text x="', str(?bxev), '" y="', str(?byev + 12), '" font-size="10" fill="#111">',
?icoev, ' ', ?escev, '</text>',
'</a>',
'<text x="', str(?bxev + 320), '" y="', str(?byev + 12), '" text-anchor="end" font-size="9" ',
'fill="#111">', ?typev, '</text>') as ?boxev)
}
}
{
select (group_concat(distinct ?boxact; separator="") as ?boxesact) (count(*) as ?nact) where {
{
select ?iriact ?lblact ?icoact ?typact ?rrankact (count(distinct ?oact) as ?iyact) where {
values ?_project_multi_iri {}
{
select ?iriact (min(?labelact) as ?lblact) (min(?iconact) as ?icoact)
(group_concat(distinct ?typeact; separator=", ") as ?typact) (min(?rract) as ?rrankact)
(sample(?memberPubkeys) as ?mpkact) 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 np:hasAssertion ?aact ;
np:hasPublicationInfo ?piact ;
npa:hasValidSignatureForPublicKeyHash ?pkact .
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(0 as ?rract)
bind("๐งช" as ?iconact)
} group by ?iriact
}
optional {
graph npa:graph {
?onpact np:hasAssertion ?oaact ;
np:hasPublicationInfo ?opiact ;
npa:hasValidSignatureForPublicKeyHash ?opkact .
filter not exists { ?oixact npx:invalidates ?onpact ; npa:hasValidSignatureForPublicKeyHash ?opkact . }
filter not exists { ?osxact npx:supersedes ?onpact . }
}
graph ?oaact {
?oact a obo:OBI_0000066 ; dct:isPartOf ?_project_multi_iri .
}
bind(0 as ?orract)
filter(concat(str(?orract), "|", str(?oact)) < concat(str(?rrankact), "|", str(?iriact))
&& (!bound(?opkact) || contains(?mpkact, ?opkact)))
}
} group by ?iriact ?lblact ?icoact ?typact ?rrankact
}
bind((?iyact - floor(?iyact / 1) * 1) * 276 as ?bxact)
bind(floor(?iyact / 1) * 28 as ?byact)
bind(xsd:integer(floor((260 - 30 - strlen(?typact) * 4.9) / 5.5)) as ?cap0act)
bind(if(?cap0act < 8, 8, ?cap0act) as ?capact)
bind(if(strlen(?lblact) > ?capact, concat(substr(?lblact, 1, ?capact - 1), "โฆ"), ?lblact) as ?tact)
bind(replace(replace(replace(?tact, "&", "&"), "<", "<"), ">", ">") as ?escact)
bind(replace(replace(replace(?lblact, "&", "&"), "<", "<"), ">", ">") as ?fullact)
bind(concat('<a href="/part?id=', encode_for_uri(str(?iriact)), '">',
'<title>', ?fullact, '</title>',
'<text x="', str(?bxact), '" y="', str(?byact + 12), '" font-size="10" fill="#111">',
?icoact, ' ', ?escact, '</text>',
'</a>',
'<text x="', str(?bxact + 260), '" y="', str(?byact + 12), '" text-anchor="end" font-size="9" ',
'fill="#111">', ?typact, '</text>') as ?boxact)
}
}
{
select (group_concat(distinct ?boxout; separator="") as ?boxesout) (count(*) as ?nout) where {
{
select ?iriout ?lblout ?icoout ?typout ?rrankout (count(distinct ?oout) as ?iyout) where {
values ?_project_multi_iri {}
{
select ?iriout (min(?labelout) as ?lblout) (min(?iconout) as ?icoout)
(group_concat(distinct ?typeout; separator=", ") as ?typout) (min(?rrout) as ?rrankout)
(sample(?memberPubkeys) as ?mpkout) 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 np:hasAssertion ?aout ;
np:hasPublicationInfo ?piout ;
npa:hasValidSignatureForPublicKeyHash ?pkout .
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 ?rawout)
bind(replace(?rawout, "-", " ") as ?typeout)
bind(0 as ?rrout)
bind(if(?rawout = "article", "๐", if(?rawout = "software", "๐ป", if(?rawout = "dataset", "๐พ", if(?rawout = "presentation", "๐ค", if(?rawout = "blog-post", "๐", if(?rawout = "podcast", "๐ง", if(?rawout = "media-coverage", "๐ฐ", if(?rawout = "social-post", "๐ฌ", if(?rawout = "discussion", "๐ฌ", if(?rawout = "method", "๐ง", if(?rawout = "dmp", "๐", "๐"))))))))))) as ?iconout)
} group by ?iriout
}
optional {
graph npa:graph {
?onpout np:hasAssertion ?oaout ;
np:hasPublicationInfo ?opiout ;
npa:hasValidSignatureForPublicKeyHash ?opkout .
filter not exists { ?oixout npx:invalidates ?onpout ; npa:hasValidSignatureForPublicKeyHash ?opkout . }
filter not exists { ?osxout npx:supersedes ?onpout . }
}
graph ?oaout {
?_project_multi_iri ?orelout ?oout .
values ?orelout { 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 }
}
bind(strafter(str(?orelout), "https://w3id.org/fair/ff/terms/has-") as ?orawout)
bind(0 as ?orrout)
filter(concat(str(?orrout), "|", str(?oout)) < concat(str(?rrankout), "|", str(?iriout))
&& (!bound(?opkout) || contains(?mpkout, ?opkout)))
}
} group by ?iriout ?lblout ?icoout ?typout ?rrankout
}
bind((?iyout - floor(?iyout / 1) * 1) * 276 as ?bxout)
bind(floor(?iyout / 1) * 28 as ?byout)
bind(xsd:integer(floor((260 - 30 - strlen(?typout) * 4.9) / 5.5)) as ?cap0out)
bind(if(?cap0out < 8, 8, ?cap0out) as ?capout)
bind(if(strlen(?lblout) > ?capout, concat(substr(?lblout, 1, ?capout - 1), "โฆ"), ?lblout) as ?tout)
bind(replace(replace(replace(?tout, "&", "&"), "<", "<"), ">", ">") as ?escout)
bind(replace(replace(replace(?lblout, "&", "&"), "<", "<"), ">", ">") as ?fullout)
bind(concat('<a href="/part?id=', encode_for_uri(str(?iriout)), '">',
'<title>', ?fullout, '</title>',
'<text x="', str(?bxout), '" y="', str(?byout + 12), '" font-size="10" fill="#111">',
?icoout, ' ', ?escout, '</text>',
'</a>',
'<text x="', str(?bxout + 260), '" y="', str(?byout + 12), '" text-anchor="end" font-size="9" ',
'fill="#111">', ?typout, '</text>') as ?boxout)
}
}
{
select (group_concat(distinct ?boxppl; separator="") as ?boxesppl) (count(*) as ?nppl) where {
{
select ?irippl ?lblppl ?icoppl ?typppl ?rrankppl (count(distinct ?oppl) as ?iyppl) where {
values ?_project_multi_iri {}
{
select ?irippl (min(?labelppl) as ?lblppl) (min(?iconppl) as ?icoppl)
(group_concat(distinct ?typeppl; separator=", ") as ?typppl) (min(?rrppl) as ?rrankppl)
(sample(?memberPubkeys) as ?mpkppl) 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 np:hasAssertion ?appl ;
np:hasPublicationInfo ?pippl ;
npa:hasValidSignatureForPublicKeyHash ?pkppl .
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, "project lead", if(?relppl = ff:has-data-steward, "data steward", "participant"))) as ?typeppl)
bind(if(?relppl = ff:has-principal-investigator, 0, if(?relppl = gen:hasProjectLead, 1, if(?relppl = ff:has-data-steward, 2, 3))) as ?rrppl)
bind("๐ค" as ?iconppl)
} group by ?irippl
}
optional {
graph npa:graph {
?onpppl np:hasAssertion ?oappl ;
np:hasPublicationInfo ?opippl ;
npa:hasValidSignatureForPublicKeyHash ?opkppl .
filter not exists { ?oixppl npx:invalidates ?onpppl ; npa:hasValidSignatureForPublicKeyHash ?opkppl . }
filter not exists { ?osxppl npx:supersedes ?onpppl . }
}
graph ?oappl {
?_project_multi_iri ?orelppl ?oppl .
values ?orelppl { ff:has-principal-investigator ff:has-participant ff:has-data-steward gen:hasProjectLead }
}
bind(if(?orelppl = ff:has-principal-investigator, 0, if(?orelppl = gen:hasProjectLead, 1, if(?orelppl = ff:has-data-steward, 2, 3))) as ?orrppl)
filter(concat(str(?orrppl), "|", str(?oppl)) < concat(str(?rrankppl), "|", str(?irippl))
&& (!bound(?opkppl) || contains(?mpkppl, ?opkppl)))
}
} group by ?irippl ?lblppl ?icoppl ?typppl ?rrankppl
}
bind((?iyppl - floor(?iyppl / 3) * 3) * 216 as ?bxppl)
bind(floor(?iyppl / 3) * 28 as ?byppl)
bind(xsd:integer(floor((200 - 30 - strlen(?typppl) * 4.9) / 5.5)) as ?cap0ppl)
bind(if(?cap0ppl < 8, 8, ?cap0ppl) as ?capppl)
bind(if(strlen(?lblppl) > ?capppl, concat(substr(?lblppl, 1, ?capppl - 1), "โฆ"), ?lblppl) as ?tppl)
bind(replace(replace(replace(?tppl, "&", "&"), "<", "<"), ">", ">") as ?escppl)
bind(replace(replace(replace(?lblppl, "&", "&"), "<", "<"), ">", ">") as ?fullppl)
bind(concat('<a href="/part?id=', encode_for_uri(str(?irippl)), '">',
'<title>', ?fullppl, '</title>',
'<text x="', str(?bxppl), '" y="', str(?byppl + 12), '" font-size="10" fill="#111">',
?icoppl, ' ', ?escppl, '</text>',
'</a>',
'<text x="', str(?bxppl + 200), '" y="', str(?byppl + 12), '" text-anchor="end" font-size="9" ',
'fill="#111">', ?typppl, '</text>') as ?boxppl)
}
}
{
select (group_concat(distinct ?boxinst; separator="") as ?boxesinst) (count(*) as ?ninst) where {
{
select ?iriinst ?lblinst ?icoinst ?typinst ?rrankinst (count(distinct ?oinst) as ?iyinst) where {
values ?_project_multi_iri {}
{
select ?iriinst (min(?labelinst) as ?lblinst) (min(?iconinst) as ?icoinst)
(group_concat(distinct ?typeinst; separator=", ") as ?typinst) (min(?rrinst) as ?rrankinst)
(sample(?memberPubkeys) as ?mpkinst) 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 np:hasAssertion ?ainst ;
np:hasPublicationInfo ?piinst ;
npa:hasValidSignatureForPublicKeyHash ?pkinst .
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 institution", if(?relinst = ff:has-partner-institution, "partner", "funder")) as ?typeinst)
bind(if(?relinst = ff:has-lead-institution, 0, if(?relinst = ff:has-partner-institution, 1, 2)) as ?rrinst)
bind(if(?relinst = ff:has-funder, "๐ถ", "๐") as ?iconinst)
} group by ?iriinst
}
optional {
graph npa:graph {
?onpinst np:hasAssertion ?oainst ;
np:hasPublicationInfo ?opiinst ;
npa:hasValidSignatureForPublicKeyHash ?opkinst .
filter not exists { ?oixinst npx:invalidates ?onpinst ; npa:hasValidSignatureForPublicKeyHash ?opkinst . }
filter not exists { ?osxinst npx:supersedes ?onpinst . }
}
graph ?oainst {
?_project_multi_iri ?orelinst ?oinst .
values ?orelinst { ff:has-lead-institution ff:has-partner-institution ff:has-funder }
}
bind(if(?orelinst = ff:has-lead-institution, 0, if(?orelinst = ff:has-partner-institution, 1, 2)) as ?orrinst)
filter(concat(str(?orrinst), "|", str(?oinst)) < concat(str(?rrankinst), "|", str(?iriinst))
&& (!bound(?opkinst) || contains(?mpkinst, ?opkinst)))
}
} group by ?iriinst ?lblinst ?icoinst ?typinst ?rrankinst
}
bind((?iyinst - floor(?iyinst / 2) * 2) * 316 as ?bxinst)
bind(floor(?iyinst / 2) * 28 as ?byinst)
bind(xsd:integer(floor((300 - 30 - strlen(?typinst) * 4.9) / 5.5)) as ?cap0inst)
bind(if(?cap0inst < 8, 8, ?cap0inst) as ?capinst)
bind(if(strlen(?lblinst) > ?capinst, concat(substr(?lblinst, 1, ?capinst - 1), "โฆ"), ?lblinst) as ?tinst)
bind(replace(replace(replace(?tinst, "&", "&"), "<", "<"), ">", ">") as ?escinst)
bind(replace(replace(replace(?lblinst, "&", "&"), "<", "<"), ">", ">") as ?fullinst)
bind(concat('<a href="/part?id=', encode_for_uri(str(?iriinst)), '">',
'<title>', ?fullinst, '</title>',
'<text x="', str(?bxinst), '" y="', str(?byinst + 12), '" font-size="10" fill="#111">',
?icoinst, ' ', ?escinst, '</text>',
'</a>',
'<text x="', str(?bxinst + 300), '" y="', str(?byinst + 12), '" text-anchor="end" font-size="9" ',
'fill="#111">', ?typinst, '</text>') as ?boxinst)
}
}
}
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/provenance
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/assertion
http://www.w3.org/ns/prov#wasAttributedTo
https://orcid.org/0000-0002-1267-0234
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/pubinfo
https://orcid.org/0000-0002-1267-0234
http://xmlns.com/foaf/0.1/name
Tobias Kuhn
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://purl.org/dc/terms/created
2026-08-17T07:20:00Z
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://purl.org/dc/terms/creator
https://orcid.org/0000-0002-1267-0234
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://purl.org/dc/terms/license
https://creativecommons.org/licenses/by/4.0/
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://purl.org/nanopub/x/embeds
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/get-project-summary-svg
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://purl.org/nanopub/x/supersedes
https://w3id.org/np/RAVZ7DWsfBMe6kjFw80tBbkMbVZi0v7BLpb-Wq2ar37tQ
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
http://www.w3.org/2000/01/rdf-schema#label
Get project summary diagram as SVG
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
https://w3id.org/np/o/ntemplate/wasCreatedFromProvenanceTemplate
http://purl.org/np/RAcm8OurwUk15WOgBM9wySo-T3a5h6as4K8YR5MBrrxUc
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate
https://w3id.org/np/RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate
https://w3id.org/np/RARW4MsFkHuwjycNElvEVtuMjpf4yWDL10-0C5l2MqqRQ
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate
https://w3id.org/np/RAoTD7udB2KtUuOuAe74tJi1t3VzK0DyWS7rYVAq1GRvw
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate
https://w3id.org/np/RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
https://w3id.org/np/o/ntemplate/wasCreatedFromTemplate
https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/sig
http://purl.org/nanopub/x/hasAlgorithm
RSA
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/sig
http://purl.org/nanopub/x/hasPublicKey
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/sig
http://purl.org/nanopub/x/hasSignature
ohetJeUuvy4gKqHJ0NDSJao3sSMnNx8jTlMU5sl0rvsWnTrRM23D55qyOqFT1ftp+OhupMhEZsH7Cmo6vJylIfJbdc+86x5TfOKn1zV0poavRz76gOrYO3UuLWQ8PdmCuoih9ZGHGGBfvrEiXzXIavjoDrlZdjv9RB03C2b0aBM=
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/sig
http://purl.org/nanopub/x/hasSignatureTarget
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s
https://w3id.org/np/RAIl77GsOo8_o1vsNOP-9docHAWFIcB2GAVD0cyl2Bb7s/sig
http://purl.org/nanopub/x/signedBy
https://orcid.org/0000-0002-1267-0234