https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/Head
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://www.nanopub.org/nschema#hasAssertion
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/assertion
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://www.nanopub.org/nschema#hasProvenance
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/provenance
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://www.nanopub.org/nschema#hasPublicationInfo
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/pubinfo
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://www.nanopub.org/nschema#Nanopublication
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/assertion
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/get-nanosuggestions
http://purl.org/dc/terms/description
Returns the nanosuggestions (issues, bug reports, feature requests and tasks) linked to a given space or maintained resource via gen:isRelevantFor, with kind, current status, current assignee, comment count, reporter and date. Anybody may link a nanosuggestion to a resource, but status and assignment are resolved per space: the most recent assertion by a current member (admin, maintainer or member, not observer) of that space wins; if no member has ever set a status, the most recent one from outside is shown and marked as such; with no status at all the nanosuggestion counts as open. Also returns the assignment nanopublication that currently wins, so that an assign action can open it in override mode and arrive pre-filled with the current assignees.
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/get-nanosuggestions
http://purl.org/dc/terms/license
http://www.apache.org/licenses/LICENSE-2.0
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/get-nanosuggestions
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
https://w3id.org/kpxl/grlc/grlc-query
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/get-nanosuggestions
http://www.w3.org/2000/01/rdf-schema#label
Get nanosuggestions for a resource
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/get-nanosuggestions
https://w3id.org/kpxl/grlc/endpoint
https://w3id.org/np/l/nanopub-query-1.1/repo/type/29e2f808e4864fca4930806dee70c4a32df54a63ee90156244910a47d3443736
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/get-nanosuggestions
https://w3id.org/kpxl/grlc/sparql
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix dct: <http://purl.org/dc/terms/>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix np: <http://www.nanopub.org/nschema#>
prefix npa: <http://purl.org/nanopub/admin/>
prefix npx: <http://purl.org/nanopub/x/>
prefix schema: <https://schema.org/>
prefix as: <https://www.w3.org/ns/activitystreams#>
prefix gen: <https://w3id.org/kpxl/gen/terms/>
prefix nsug: <https://w3id.org/np/RA5BAdUvlxLWMWFQN3UVKoIQEB_MYTiAoLH1klXJ7z-XI/>
select ?item_multi_iri ?item_label_multi ?kind ?status ?assignee ?assignee_label
?comments_multi_iri ?comments_label_multi ?reporter ?reporter_label ?date
?suggestion ?np ?override_target
where {
graph npa:graph {
?np npa:hasValidSignatureForPublicKeyHash ?pubkey .
filter not exists { ?npi npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . }
?np dct:created ?date .
?np np:hasAssertion ?a .
optional { ?np dct:creator ?reporter }
}
graph ?a {
?suggestion a nsug:Nanosuggestion ; rdfs:label ?title .
optional { ?suggestion a ?k . filter(?k != nsug:Nanosuggestion && ?k != schema:Statement) }
}
filter exists {
graph npa:graph {
?lnp npa:hasValidSignatureForPublicKeyHash ?lpk ; np:hasAssertion ?la .
filter not exists { ?lnpi npx:invalidates ?lnp ; npa:hasValidSignatureForPublicKeyHash ?lpk . }
}
graph ?la {
values ?_resource_multi_iri {}
?suggestion gen:isRelevantFor ?_resource_multi_iri .
}
}
optional {
{ select ?suggestion (max(concat(if(?fm,'1','0'), ?sd, ' ', str(?s))) as ?pick) where {
service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> {
select (group_concat(?mpk; separator=' ') as ?memberPubkeys) where {
graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . }
values ?_resource_multi_iri {}
graph ?stateG {
?_resource_multi_iri npa:isMaintainedBy? ?space .
?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?rt .
filter(?rt in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole))
?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk .
}
}
}
graph npa:graph {
?snp npa:hasValidSignatureForPublicKeyHash ?spk ; np:hasAssertion ?sa ; dct:created ?sdate .
filter not exists { ?snpi npx:invalidates ?snp ; npa:hasValidSignatureForPublicKeyHash ?spk . }
}
graph ?sa { ?suggestion schema:actionStatus ?s . }
bind(str(?sdate) as ?sd)
bind(contains(?memberPubkeys, ?spk) as ?fm)
} group by ?suggestion }
}
bind(coalesce(iri(strafter(?pick, ' ')), schema:PotentialActionStatus) as ?st)
bind(coalesce(substr(?pick, 1, 1) = '0', false) as ?outside)
bind(if(?st = schema:CompletedActionStatus, 'done',
if(?st = schema:FailedActionStatus, 'rejected',
if(?st = schema:ActiveActionStatus, 'in progress', 'open'))) as ?st_label)
bind(if(?outside, concat(?st_label, ' (set outside this space)'), ?st_label) as ?status)
optional {
{ select ?suggestion (max(concat(if(?afm,'1','0'), ?ad, ' ', str(?ag))) as ?apick) where {
service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> {
select (group_concat(?mpk; separator=' ') as ?memberPubkeys) where {
graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . }
values ?_resource_multi_iri {}
graph ?stateG {
?_resource_multi_iri npa:isMaintainedBy? ?space .
?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?rt .
filter(?rt in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole))
?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk .
}
}
}
graph npa:graph {
?anp npa:hasValidSignatureForPublicKeyHash ?apk ; np:hasAssertion ?aa ; dct:created ?adate .
filter not exists { ?anpi npx:invalidates ?anp ; npa:hasValidSignatureForPublicKeyHash ?apk . }
}
graph ?aa { ?suggestion schema:agent ?ag . }
bind(str(?adate) as ?ad)
bind(contains(?memberPubkeys, ?apk) as ?afm)
} group by ?suggestion }
bind(iri(strafter(?apick, ' ')) as ?assignee)
}
# The assignment nanopub that currently wins, so "assign..." can open it in
# override mode: the form then arrives pre-filled with ALL current assignees,
# whatever their number. Falls back to the declaring nanopub, because a raw-key
# (@) mapping with an empty value hides the button entirely.
optional {
{ select ?suggestion (max(concat(if(?nfm,'1','0'), ?nd, ' ', str(?anp2))) as ?npick) where {
service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> {
select (group_concat(?mpk; separator=' ') as ?memberPubkeys) where {
graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . }
values ?_resource_multi_iri {}
graph ?stateG {
?_resource_multi_iri npa:isMaintainedBy? ?space .
?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?rt .
filter(?rt in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole))
?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk .
}
}
}
graph npa:graph {
?anp2 npa:hasValidSignatureForPublicKeyHash ?npk ; np:hasAssertion ?aa2 ; dct:created ?ndate .
filter not exists { ?anp2i npx:invalidates ?anp2 ; npa:hasValidSignatureForPublicKeyHash ?npk . }
}
graph ?aa2 { ?suggestion schema:agent ?ag2 . }
bind(str(?ndate) as ?nd)
bind(contains(?memberPubkeys, ?npk) as ?nfm)
} group by ?suggestion }
bind(iri(strafter(?npick, ' ')) as ?assignNp)
}
bind(coalesce(?assignNp, ?np) as ?override_target)
optional {
{ select ?suggestion (count(distinct ?cnp) as ?ccount) where {
graph npa:graph {
?cnp npa:hasValidSignatureForPublicKeyHash ?cpk ; np:hasAssertion ?ca .
filter not exists { ?cnpi npx:invalidates ?cnp ; npa:hasValidSignatureForPublicKeyHash ?cpk . }
}
graph ?ca { ?c a schema:Statement ; rdf:value ?ctext . }
?c as:inReplyTo+ ?suggestion .
} group by ?suggestion }
filter(?ccount > 0)
bind(?suggestion as ?comments_multi_iri)
bind(concat(str(?ccount), if(?ccount = 1, ' comment', ' comments')) as ?comments_label_multi)
}
optional { { select ?reporter (min(?rn) as ?reporter_label) where { ?reporter foaf:name ?rn } group by ?reporter } }
optional { { select ?assignee (min(?an) as ?assignee_label) where { ?assignee foaf:name ?an } group by ?assignee } }
bind(?suggestion as ?item_multi_iri)
bind(?title as ?item_label_multi)
bind(coalesce(lcase(strafter(str(?k), 'RA5BAdUvlxLWMWFQN3UVKoIQEB_MYTiAoLH1klXJ7z-XI/')), '') as ?kind)
bind(if(?st in (schema:CompletedActionStatus, schema:FailedActionStatus), '2', '1') as ?openRank)
}
order by ?openRank desc(?date)
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/provenance
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/assertion
http://www.w3.org/ns/prov#wasAttributedTo
https://orcid.org/0000-0002-1267-0234
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/pubinfo
https://orcid.org/0000-0002-1267-0234
http://xmlns.com/foaf/0.1/name
Tobias Kuhn
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://purl.org/dc/terms/created
2026-08-27T07:20:40Z
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://purl.org/dc/terms/creator
https://orcid.org/0000-0002-1267-0234
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://purl.org/dc/terms/license
https://creativecommons.org/licenses/by/4.0/
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://purl.org/nanopub/x/embeds
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/get-nanosuggestions
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://purl.org/nanopub/x/supersedes
https://w3id.org/np/RARdP2d2VqxpfKOmUpMF4dOFaNmkCQIvuBB1F5_tBfN9M
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
http://www.w3.org/2000/01/rdf-schema#label
Get nanosuggestions for a resource
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
https://w3id.org/np/o/ntemplate/wasCreatedFromProvenanceTemplate
https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate
https://w3id.org/np/RA0J4vUn_dekg-U1kK3AOEt02p9mT2WO03uGxLDec1jLw
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate
https://w3id.org/np/RAoTD7udB2KtUuOuAe74tJi1t3VzK0DyWS7rYVAq1GRvw
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate
https://w3id.org/np/RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
https://w3id.org/np/o/ntemplate/wasCreatedFromTemplate
https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/sig
http://purl.org/nanopub/x/hasAlgorithm
RSA
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/sig
http://purl.org/nanopub/x/hasPublicKey
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/sig
http://purl.org/nanopub/x/hasSignature
EzuIeJYan8ZD3xKd9oAq1y/sJkky25tYNWP3CV5K4FrzLXT6P3DAaH7/LyGqQdkycqT3M4Y93UP0LLTZUqCY/kvgmDrGNJew8aYuMVkBqNx0r9fqswBM/hVdlLyKXBeLT0ThwL7P6kgwCc+ILcCGCynWg+vpDwYUte9Junyzzyo=
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/sig
http://purl.org/nanopub/x/hasSignatureTarget
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc
https://w3id.org/np/RATn_fac54wP1UOyThzg-sPQA7N5q2miWhBPHumUJ6VPc/sig
http://purl.org/nanopub/x/signedBy
https://orcid.org/0000-0002-1267-0234