rows { options { physical_type: PHYSICAL_STREAM_TYPE_QUADS max_name_table_size: 128 max_prefix_table_size: 16 max_datatype_table_size: 16 logical_type: LOGICAL_STREAM_TYPE_DATASETS version: 2 } } rows { prefix { value: "https://w3id.org/np/" } } rows { name { value: "RAlNuH3cj4ZNmkZMyoeHft28CfD71ImIyWlulX9rXZTJU" } } rows { namespace { name: "this" value { prefix_id: 1 } } } rows { prefix { value: "https://w3id.org/np/RAlNuH3cj4ZNmkZMyoeHft28CfD71ImIyWlulX9rXZTJU/" } } rows { name { } } rows { namespace { name: "sub" value { prefix_id: 2 } } } rows { prefix { value: "http://www.nanopub.org/nschema#" } } rows { namespace { name: "np" value { prefix_id: 3 name_id: 2 } } } rows { prefix { value: "https://w3id.org/kpxl/grlc/" } } rows { namespace { name: "grlc" value { prefix_id: 4 name_id: 2 } } } rows { prefix { value: "http://purl.org/dc/terms/" } } rows { namespace { name: "dct" value { prefix_id: 5 name_id: 2 } } } rows { prefix { value: "https://w3id.org/np/o/ntemplate/" } } rows { namespace { name: "nt" value { prefix_id: 6 name_id: 2 } } } rows { prefix { value: "http://purl.org/nanopub/x/" } } rows { namespace { name: "npx" value { prefix_id: 7 name_id: 2 } } } rows { prefix { value: "http://www.w3.org/2001/XMLSchema#" } } rows { namespace { name: "xsd" value { prefix_id: 8 name_id: 2 } } } rows { prefix { value: "http://www.w3.org/2000/01/rdf-schema#" } } rows { namespace { name: "rdfs" value { prefix_id: 9 name_id: 2 } } } rows { prefix { value: "https://orcid.org/" } } rows { namespace { name: "orcid" value { prefix_id: 10 name_id: 2 } } } rows { prefix { value: "http://www.w3.org/ns/prov#" } } rows { namespace { name: "prov" value { prefix_id: 11 name_id: 2 } } } rows { prefix { value: "http://xmlns.com/foaf/0.1/" } } rows { namespace { name: "foaf" value { prefix_id: 12 name_id: 2 } } } rows { name { value: "hasAssertion" } } rows { name { value: "assertion" } } rows { name { value: "Head" } } rows { quad { s_iri { prefix_id: 1 name_id: 1 } p_iri { prefix_id: 3 name_id: 3 } o_iri { prefix_id: 2 } g_iri { } } } rows { name { value: "hasProvenance" } } rows { name { value: "provenance" } } rows { quad { p_iri { prefix_id: 3 } o_iri { prefix_id: 2 } } } rows { name { value: "hasPublicationInfo" } } rows { name { value: "pubinfo" } } rows { quad { p_iri { prefix_id: 3 } o_iri { prefix_id: 2 } } } rows { prefix { value: "http://www.w3.org/1999/02/22-rdf-syntax-ns#" } } rows { name { value: "type" } } rows { name { value: "Nanopublication" } } rows { quad { p_iri { prefix_id: 13 } o_iri { prefix_id: 3 } } } rows { name { value: "get-nanosuggestions-for-assignee" } } rows { name { value: "description" } } rows { quad { s_iri { prefix_id: 2 } p_iri { prefix_id: 5 } o_literal { lex: "Returns the nanosuggestions currently assigned to a given agent, for that agent\'s user page: title, kind, current status, the spaces the nanosuggestion is relevant for, who assigned it, and the date it was originally reported (which is also the sort order, most recent first, with closed and rejected entries last). Only the most recent assignment of each nanosuggestion counts, so a reassignment moves the entry to the new assignee instead of leaving it with both. Also returns the winning assignment nanopublication if there is one, so a reassign action can seed its form from it, and an assign target that is empty in that case so that assign and reassign are offered exclusively. Unlike the space-page listing, this query is not gated on space membership: a user page has no space to resolve membership against, so every assignment naming the agent is shown." } g_iri { prefix_id: 2 name_id: 4 } } } rows { name { value: "license" } } rows { prefix { value: "http://www.apache.org/licenses/" } } rows { name { value: "LICENSE-2.0" } } rows { quad { p_iri { prefix_id: 5 name_id: 14 } o_iri { prefix_id: 14 } } } rows { name { value: "grlc-query" } } rows { quad { p_iri { prefix_id: 13 name_id: 10 } o_iri { prefix_id: 4 name_id: 16 } } } rows { name { value: "label" } } rows { quad { p_iri { prefix_id: 9 } o_literal { lex: "Get the nanosuggestions assigned to an agent" } } } rows { name { value: "endpoint" } } rows { prefix { value: "https://w3id.org/np/l/nanopub-query-1.1/repo/type/" } } rows { name { value: "29e2f808e4864fca4930806dee70c4a32df54a63ee90156244910a47d3443736" } } rows { quad { p_iri { prefix_id: 4 } o_iri { prefix_id: 15 } } } rows { name { value: "sparql" } } rows { quad { p_iri { prefix_id: 4 } o_literal { lex: "\nprefix rdf: \nprefix rdfs: \nprefix dct: \nprefix foaf: \nprefix np: \nprefix npa: \nprefix npx: \nprefix schema: \nprefix gen: \nprefix nsug: \n\nselect distinct ?item_multi_iri ?item_label_multi ?kind ?status ?spaces_multi_iri ?spaces_label_multi\n ?assigned_by ?assigned_by_label ?date ?suggestion ?np ?fill_source ?assign_target\nwhere {\n # grlc fills this block with the page\'s agent IRI. A multi-valued (_multi_iri)\n # parameter REQUIRES the empty values block: used bare the variable simply stays\n # unbound, and the assignee pattern then matches every agent.\n values ?_resource_multi_iri {}\n # the most recent assignment nanopub for each nanosuggestion\n { select ?suggestion (max(concat(?ad, \' \', str(?anp))) as ?apick) where {\n graph npa:graph {\n ?anp npa:hasValidSignatureForPublicKeyHash ?apk ; np:hasAssertion ?aa ; dct:created ?adate .\n filter not exists { ?anpi npx:invalidates ?anp ; npa:hasValidSignatureForPublicKeyHash ?apk . }\n }\n graph ?aa { ?suggestion schema:agent ?ag . }\n bind(str(?adate) as ?ad)\n } group by ?suggestion }\n bind(iri(strafter(?apick, \' \')) as ?assignNp)\n # ...and it must name this agent, so a later reassignment removes the entry\n graph npa:graph { ?assignNp np:hasAssertion ?assignA .\n optional { ?assignNp dct:creator ?assigned_by } }\n graph ?assignA { ?suggestion schema:agent ?_resource_multi_iri . }\n # the declaring nanopub carries the title, the kind and the original report date:\n # ?date is deliberately taken from here and not from the assignment nanopub, so the\n # listing is ordered by when each nanosuggestion was reported rather than by the\n # latest thing that happened to it.\n graph npa:graph {\n ?np npa:hasValidSignatureForPublicKeyHash ?pubkey ; np:hasAssertion ?a ; dct:created ?date .\n filter not exists { ?npi npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . }\n }\n graph ?a {\n ?suggestion a nsug:Nanosuggestion ; rdfs:label ?title .\n optional { ?suggestion a ?k . filter(?k != nsug:Nanosuggestion && ?k != schema:Statement) }\n }\n # current status: no space to anchor to on a user page, so the most recent one overall\n optional {\n { select ?suggestion (max(concat(?sd, \' \', str(?s))) as ?pick) where {\n graph npa:graph {\n ?snp npa:hasValidSignatureForPublicKeyHash ?spk ; np:hasAssertion ?sa ; dct:created ?sdate .\n filter not exists { ?snpi npx:invalidates ?snp ; npa:hasValidSignatureForPublicKeyHash ?spk . }\n }\n graph ?sa { ?suggestion schema:actionStatus ?s . }\n bind(str(?sdate) as ?sd)\n } group by ?suggestion }\n }\n bind(coalesce(iri(strafter(?pick, \' \')), schema:PotentialActionStatus) as ?st)\n bind(if(?st = schema:CompletedActionStatus, \'done\',\n if(?st = schema:FailedActionStatus, \'rejected\',\n if(?st = schema:ActiveActionStatus, \'in progress\', \'open\'))) as ?status)\n # which spaces the nanosuggestion is relevant for\n optional {\n { select ?suggestion (group_concat(distinct str(?sp); separator=\' \') as ?spaces_multi_iri)\n (group_concat(distinct ?splabel; separator=\'\\n\') as ?spaces_label_multi) where {\n graph npa:graph {\n ?lnp npa:hasValidSignatureForPublicKeyHash ?lpk ; np:hasAssertion ?la .\n filter not exists { ?lnpi npx:invalidates ?lnp ; npa:hasValidSignatureForPublicKeyHash ?lpk . }\n }\n graph ?la { ?suggestion gen:isRelevantFor ?sp . }\n optional { ?sp rdfs:label ?spl . filter(lang(?spl) = \'\') }\n bind(coalesce(?spl, replace(str(?sp), \'^.*/\', \'\')) as ?splabel)\n } group by ?suggestion }\n }\n optional { ?assigned_by foaf:name ?assigned_by_label }\n # the winning *genuine* assignment nanopub, used only to seed the reassign form\n optional {\n { select ?suggestion (max(concat(?fd, \' \', str(?fnp))) as ?fpick) where {\n graph npa:graph {\n ?fnp npa:hasValidSignatureForPublicKeyHash ?fpk ; np:hasAssertion ?fa ; dct:created ?fdate .\n filter not exists { ?fnpi npx:invalidates ?fnp ; npa:hasValidSignatureForPublicKeyHash ?fpk . }\n }\n graph ?fa { ?suggestion schema:agent ?fag . }\n # Only a *reporting* nanopub asserts the issue\'s title, so this keeps the\n # candidates to genuine assignment nanopubs. Seeding the assign form from a\n # report would leave its title/description/status/space unmatched, which is\n # what produces the \"could not be filled in\" warning.\n filter not exists { graph ?fa { ?suggestion rdfs:label ?titleHere . } }\n bind(str(?fdate) as ?fd)\n } group by ?suggestion }\n bind(iri(strafter(?fpick, \' \')) as ?fill_source)\n }\n # \"assign...\" is offered only while there is no assignment nanopub yet; once there\n # is one, \"reassign...\" takes over (it seeds the form from it). An empty string is\n # the off-switch: applyEntryMappings hides a button whose mapped value is blank.\n # Written with an empty string rather than an unbound value because RDF4J evaluates\n # both if() branches eagerly, so an erroring branch would blank the column always.\n bind(if(bound(?fill_source), \'\', str(?suggestion)) as ?assign_target)\n bind(?suggestion as ?item_multi_iri)\n bind(?title as ?item_label_multi)\n bind(coalesce(lcase(strafter(str(?k), \'RA5BAdUvlxLWMWFQN3UVKoIQEB_MYTiAoLH1klXJ7z-XI/\')), \'\') as ?kind)\n bind(if(?st in (schema:CompletedActionStatus, schema:FailedActionStatus), \'2\', \'1\') as ?openRank)\n}\norder by ?openRank desc(?date)\n" } } } rows { name { value: "wasAttributedTo" } } rows { name { value: "0000-0002-1267-0234" } } rows { quad { s_iri { prefix_id: 2 name_id: 4 } p_iri { prefix_id: 11 name_id: 21 } o_iri { prefix_id: 10 } g_iri { prefix_id: 2 name_id: 7 } } } rows { name { value: "name" } } rows { quad { s_iri { prefix_id: 10 name_id: 22 } p_iri { prefix_id: 12 } o_literal { lex: "Tobias Kuhn" } g_iri { prefix_id: 2 name_id: 9 } } } rows { name { value: "created" } } rows { datatype { value: "http://www.w3.org/2001/XMLSchema#dateTime" } } rows { quad { s_iri { prefix_id: 1 name_id: 1 } p_iri { prefix_id: 5 name_id: 24 } o_literal { lex: "2026-09-02T13:06:25Z" datatype: 1 } } } rows { name { value: "creator" } } rows { quad { p_iri { } o_iri { prefix_id: 10 name_id: 22 } } } rows { prefix { value: "https://creativecommons.org/licenses/by/4.0/" } } rows { quad { p_iri { prefix_id: 5 name_id: 14 } o_iri { prefix_id: 16 name_id: 2 } } } rows { name { value: "embeds" } } rows { quad { p_iri { prefix_id: 7 name_id: 26 } o_iri { prefix_id: 2 name_id: 12 } } } rows { name { value: "supersedes" } } rows { name { value: "RADJJRWWHOhDog_5Lq_rpEoKWcBofbJJ5DImmyznAEfuI" } } rows { quad { p_iri { prefix_id: 7 name_id: 27 } o_iri { prefix_id: 1 } } } rows { quad { p_iri { prefix_id: 9 name_id: 17 } o_literal { lex: "Get the nanosuggestions assigned to an agent" } } } rows { name { value: "wasCreatedFromProvenanceTemplate" } } rows { name { value: "RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU" } } rows { quad { p_iri { prefix_id: 6 name_id: 29 } o_iri { prefix_id: 1 } } } rows { name { value: "wasCreatedFromPubinfoTemplate" } } rows { name { value: "RA0J4vUn_dekg-U1kK3AOEt02p9mT2WO03uGxLDec1jLw" } } rows { quad { p_iri { prefix_id: 6 } o_iri { prefix_id: 1 } } } rows { name { value: "RAoTD7udB2KtUuOuAe74tJi1t3VzK0DyWS7rYVAq1GRvw" } } rows { quad { o_iri { } } } rows { name { value: "RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI" } } rows { quad { o_iri { } } } rows { name { value: "wasCreatedFromTemplate" } } rows { name { value: "RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k" } } rows { quad { p_iri { prefix_id: 6 } o_iri { prefix_id: 1 } } } rows { name { value: "sig" } } rows { name { value: "hasAlgorithm" } } rows { quad { s_iri { prefix_id: 2 } p_iri { prefix_id: 7 } o_literal { lex: "RSA" } } } rows { name { value: "hasPublicKey" } } rows { quad { p_iri { } o_literal { lex: "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" } } } rows { name { value: "hasSignature" } } rows { quad { p_iri { } o_literal { lex: "UIj5cZ9XdPG033Mi1IIlPbMAzlKDED2hRA7lQis6W7wV/haVRJJ+8r6ubh52x2wZKSL0x22ZuX74r7xEmQscsWmzKAkktQgV+sb5PuOC3TV0f9fKz6YKuvikrCAnlzvqeJRmVLlWp2uPaJ94unnHQ8kX42LHh1s5LkNNrGuwAJY=" } } } rows { name { value: "hasSignatureTarget" } } rows { quad { p_iri { } o_iri { prefix_id: 1 name_id: 1 } } } rows { name { value: "signedBy" } } rows { quad { p_iri { prefix_id: 7 name_id: 42 } o_iri { prefix_id: 10 name_id: 22 } } }