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: "RAkFlQ0Lx0kHl9PgvVdPzEWQ12NIu8YhUtGW8zlCaFO3E" } } rows { namespace { name: "this" value { prefix_id: 1 } } } rows { prefix { value: "https://w3id.org/np/RAkFlQ0Lx0kHl9PgvVdPzEWQ12NIu8YhUtGW8zlCaFO3E/" } } 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-template-kind-version-history" } } rows { name { value: "description" } } rows { quad { s_iri { prefix_id: 2 } p_iri { prefix_id: 5 } o_literal { lex: "Returns the version history of a space-governed definition kind (e.g. a template kind or view kind) given as the resource, for display on its maintained-resource page. Each row is a nanopub whose embedded instance declares dct:isVersionOf the given kind -- including superseded and retracted versions, which are marked \'superseded\' or \'retracted\' (only invalidations signed with the version\'s own key count, as in nanopub-level invalidation) -- showing its creation date, an \'Open as form\' link that opens the version\'s embedded template in the /publish form (labelled with the version\'s title), the change note attached to that version\'s publication info (skos:changeNote, truncated to its first line and at most 50 characters), and its author (signer, with the name resolved from the governing space\'s trust state where available; the agent-to-name map is materialized once in a self-contained sub-select sharing no variables with the outer query and matched by string containment, instead of a per-row federated lookup, so the number of federated calls does not grow with the number of versions). The row marked \'\342\234\223 current\' is the current governed winner of the (kind, space) pair -- the newest non-invalidated version signed by a current member+ of the governing space, with the kind validated as maintained by that space (mirroring the get-latest-governed-version resolver and the get-assertion-templates dedup). Governed winners are materialized once in a self-contained sub-select sharing no variables with the outer query, then matched by string containment. The restore_target column carries the nanopub URI for every row that is neither the current winner nor retracted (empty otherwise), and the restore_template column carries that version\'s own meta-template (its nt:wasCreatedFromTemplate, lexicographically first where there are several, or the assertion-template meta-template where that link is absent), so the form opens the chain that actually made it, so a per-row action can offer to restore an older version: overriding it republishes its content as the newest version, which is the cross-key way to undo a change. Updating the current version is offered as its own button in the template-info view instead of as a per-row action here. Rows are ordered newest first." } 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 template kind version history" } } } rows { name { value: "endpoint" } } rows { prefix { value: "https://w3id.org/np/l/nanopub-query-1.1/repo/" } } rows { name { value: "full" } } 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: "prefix rdfs: \nprefix dct: \nprefix np: \nprefix npa: \nprefix npx: \nprefix gen: \nprefix foaf: \nprefix nt: \nprefix skos: \n\nselect ?Date ?Open_as_form ?Change_note ?Author ?Author_label ?Status_noheader ?restore_target ?restore_template ?np ?np_label where {\n values ?_resource_multi_iri {}\n {\n select (group_concat(?w1; separator=\"|\") as ?winners) where {\n {\n select ?gKind ?gSpace (max(concat(str(?gDate), \">\", str(?gNp))) as ?maxW) where {\n graph npa:graph {\n ?gNp npa:hasValidSignatureForPublicKeyHash ?gPubkeyhash ;\n dct:created ?gDate ; npx:embeds ?gVersion ; np:hasAssertion ?gA .\n filter not exists { ?gInv npx:invalidates ?gNp ; npa:hasValidSignatureForPublicKeyHash ?gPubkeyhash . }\n }\n graph ?gA { ?gVersion dct:isVersionOf ?gKind ; gen:governedBy ?gSpace . }\n service {\n graph npa:graph { npa:hasCurrentSpaceState ?stateG . }\n graph ?stateG {\n ?gKind npa:isMaintainedBy ?gSpace ; npa:hasGoverningSpaceRef ?gRef .\n ?gRi a gen:RoleInstantiation ; npa:forSpace ?gSpace ; npa:forSpaceRef ?gRef ;\n npa:hasRoleType ?gTier ; npa:forAgent ?gAgent .\n filter(?gTier = gen:AdminRole || ?gTier = gen:MaintainerRole || ?gTier = gen:MemberRole)\n ?gAcct a npa:AccountState ; npa:agent ?gAgent ; npa:pubkey ?gPubkeyhash .\n }\n }\n } group by ?gKind ?gSpace\n }\n bind(concat(str(?gKind), \">\", str(?gSpace), \">\", ?maxW) as ?w1)\n }\n }\n {\n select (group_concat(?nEntry; separator=\"|\") as ?names) where {\n {\n select ?nAgent (min(?nNameRaw) as ?nName) where {\n service {\n graph npa:graph { npa:hasCurrentSpaceState ?nStateG . }\n graph ?nStateG { ?nAgent foaf:name ?nNameRaw . }\n }\n } group by ?nAgent\n }\n bind(concat(str(?nAgent), \">\", ?nName) as ?nEntry)\n }\n }\n graph npa:graph {\n ?np npa:hasValidSignatureForPublicKeyHash ?pubkeyhash ;\n npx:embeds ?version ; dct:created ?Date ; np:hasAssertion ?a ; np:hasPublicationInfo ?pi .\n optional { ?np npx:signedBy ?Author . }\n }\n graph ?a { ?version dct:isVersionOf ?_resource_multi_iri . }\n optional { graph ?a { ?version rdfs:label ?titleVal } }\n optional { graph ?a { ?version gen:governedBy ?space } }\n optional { graph ?pi { ?np skos:changeNote ?noteRaw } }\n optional {\n graph ?pi { ?np nt:wasCreatedFromTemplate ?metaTmplVal . }\n filter not exists { graph ?pi { ?np nt:wasCreatedFromTemplate ?metaOther . filter(str(?metaOther) < str(?metaTmplVal)) } }\n }\n bind(replace(coalesce(?noteRaw, \"\"), \"\\r\", \"\") as ?noteNoCr)\n bind(if(contains(?noteNoCr, \"\\n\"), strbefore(?noteNoCr, \"\\n\"), ?noteNoCr) as ?firstLine)\n bind(substr(?firstLine, 1, 50) as ?Change_note)\n bind(concat(\'\', coalesce(?titleVal, str(?version)), \'\') as ?Open_as_form)\n bind(concat(\"|\", coalesce(?winners, \"\"), \"|\") as ?wlist)\n bind(exists { graph npa:graph { ?sInv npx:invalidates ?np ; npx:supersedes ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkeyhash . } } as ?isSuperseded)\n bind(exists { graph npa:graph { ?rInv npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkeyhash . filter not exists { ?rInv npx:supersedes ?np } } } as ?isRetracted)\n bind(bound(?space) && contains(?wlist, concat(\"|\", str(?_resource_multi_iri), \">\", str(?space), \">\", str(?Date), \">\", str(?np), \"|\")) as ?isCurrent)\n bind(if(?isCurrent, \"\342\234\223 current\", if(?isRetracted, \"retracted\", if(?isSuperseded, \"superseded\", \"\"))) as ?Status_noheader)\n bind(if(!?isCurrent && !?isRetracted, str(?np), \"\") as ?restore_target)\n bind(if(!?isCurrent && !?isRetracted, coalesce(str(?metaTmplVal), \'https://w3id.org/np/RAKmcrbEVkxF0ivA0_yGg8bnl6iKkwVDp_2SSHvPBrkPw/template\'), \"\") as ?restore_template)\n bind(coalesce(str(?Author), \"\") as ?authorStr)\n bind(concat(\"|\", coalesce(?names, \"\"), \"|\") as ?nlist)\n bind(strbefore(strafter(?nlist, concat(\"|\", ?authorStr, \">\")), \"|\") as ?nameRaw)\n bind(if(?nameRaw != \"\", ?nameRaw, ?authorStr) as ?Author_label)\n bind(\"^\" as ?np_label)\n}\norder by desc(?Date)" } } } 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-10-12T13:21:13Z" 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: "RAfEGS11EsuE3SabRXMXKbsvuVDn1NSYyOf92P3t3CJro" } } 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 template kind version history" } } } 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: "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: "JNXd664enIbDj0LVInxx9sPVaIDKYZUrRr0exekjaMRnA1nBkjakaSia/GcUcwUY6x/czCjFXuw5H/ZexsHsGhsze/WihcIBazLxdYCumYpU/LqLHZbqXaAJyLeD5r5FmDH1j5fy/BjfbdjOFrJRNByTBWGxAam6UNRPiO/xHSo=" } } } 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: 41 } o_iri { prefix_id: 10 name_id: 22 } } }