@prefix this: . @prefix sub: . @prefix np: . @prefix grlc: . @prefix dct: . @prefix nt: . @prefix npx: . @prefix xsd: . @prefix rdfs: . @prefix orcid: . @prefix prov: . @prefix foaf: . sub:Head { this: a np:Nanopublication; np:hasAssertion sub:assertion; np:hasProvenance sub:provenance; np:hasPublicationInfo sub:pubinfo . } sub:assertion { sub:get-latest-governed-version a grlc:grlc-query; dct:description "Resolves which version a reference to a space-governed definition should use: a resource view, an assertion/provenance/pubinfo template, or any other definition whose versions follow the embeds/isVersionOf/governedBy convention (docs/views-and-presets-as-maintained-resources.md and docs/template-identity-and-governance.md in the nanodash repo). Takes the definition's kind (its dct:isVersionOf target; kind), the space named by the pinned version's gen:governedBy (space), and the nanopublication URI of the pinned version (pin). If the kind is registered as a maintained resource of the space (npa:isMaintainedBy in the current space state), the result is the newest version of the (kind, space) pair: a nanopublication that npx:embeds the version, which declares dct:isVersionOf and gen:governedBy , is signed by a current member+ (admin/maintainer/member, not observer) of the space's governing ref, and is not invalidated by its own key (mode 'governed'). Without such a version the result is empty and the caller keeps its pin, which is not re-validated here. If the kind is not registered for the space, gen:governedBy has no effect and the pin resolves like an ungoverned version (mode 'supersedes'): the single current head of its npx:supersedes chain, signed with the pin's own key and not invalidated by it. This is the same rule as get-latest-version-of-np, so a chain that has forked into several heads yields no row. Returns at most one row: version (the embedded definition IRI, or the nanopublication URI if it embeds none), date, np and mode. Hosted on the spaces repo; the version lookups federate to the full repo with kind, space and pin as text-substituted constants. Supersedes the two-parameter version, which returned nothing for an unregistered kind and so kept every reference to such a version on exactly that version, ignoring even same-key supersedes."; dct:license ; rdfs:label "Get latest governed version"; grlc:endpoint ; grlc:sparql """prefix np: prefix npa: prefix npx: prefix dct: prefix gen: select distinct ?version ?date ?np ('^' as ?np_label) ?mode where { { # Kind registered for the space: newest version of the (kind, space) pair signed by a current member+. graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . } graph ?stateG { ?_kind_iri npa:isMaintainedBy ?_space_iri ; npa:hasGoverningSpaceRef ?ref . ?ri a gen:RoleInstantiation ; npa:forSpace ?_space_iri ; npa:forSpaceRef ?ref ; npa:hasRoleType ?tier ; npa:forAgent ?agent . filter(?tier = gen:AdminRole || ?tier = gen:MaintainerRole || ?tier = gen:MemberRole) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?pubkey . } service { graph npa:graph { ?np npa:hasValidSignatureForPublicKeyHash ?pubkey ; dct:created ?date ; npx:embeds ?version ; np:hasAssertion ?a . filter not exists { ?npx npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . } } graph ?a { ?version dct:isVersionOf ?_kind_iri ; gen:governedBy ?_space_iri . } } bind('governed' as ?mode) } union { # Kind not registered for the space: governedBy has no effect; follow the pin's same-key supersedes chain. graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateU . } filter not exists { graph ?stateU { ?_kind_iri npa:isMaintainedBy ?_space_iri . } } service { { select (count(distinct ?h) as ?heads) (sample(?h) as ?np) where { graph npa:networkGraph { ?h (npx:supersedes)* ?_pin_iri . } graph npa:graph { ?_pin_iri npa:hasValidSignatureForPublicKeyHash ?pinKey . ?h npa:hasValidSignatureForPublicKeyHash ?pinKey . filter not exists { ?hx npx:invalidates ?h ; npa:hasValidSignatureForPublicKeyHash ?pinKey . } } } } filter(?heads = 1) graph npa:graph { ?np dct:created ?date . optional { ?np npx:embeds ?embedded . } } bind(coalesce(?embedded, ?np) as ?version) } bind('supersedes' as ?mode) } } order by desc(?date) desc(?np) limit 1""" . } sub:provenance { sub:assertion prov:wasAttributedTo orcid:0000-0002-1267-0234 . } sub:pubinfo { orcid:0000-0002-1267-0234 foaf:name "Tobias Kuhn" . this: dct:created "2026-09-24T09:55:19Z"^^xsd:dateTime; dct:creator orcid:0000-0002-1267-0234; dct:license ; npx:embeds sub:get-latest-governed-version; npx:supersedes ; rdfs:label "Get latest governed version"; nt:wasCreatedFromProvenanceTemplate ; nt:wasCreatedFromPubinfoTemplate , , ; nt:wasCreatedFromTemplate . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB"; npx:hasSignature "Ufy0BH9NkWP2ScK/FeCgqXThcDtSwz/7vu5e+S37SfMRSehpWmfk2wRTVi/uxHTDt3aqQNw8CtkGvylOlSVU92W7ooh3w+IrsgJ6BoSlC+BAWZXVdsJAYVVkiYQ3jOxWeEJwvu4dnh+V1z7SyHvoe7dCOGgJ94O8bu1oKHDpkwU="; npx:hasSignatureTarget this:; npx:signedBy orcid:0000-0002-1267-0234 . }