Nanopublication

< Home

ID

https://w3id.org/np/RAPPwht-EN_jPsJvNDYDXuezmfU8O7zPyL_T_KXLgw_y0

Formats

.trig | .trig.txt | .jelly | .jelly.txt | .jsonld | .jsonld.txt | .nq | .nq.txt | .xml | .xml.txt

Content

@prefix this: <https://w3id.org/np/RAPPwht-EN_jPsJvNDYDXuezmfU8O7zPyL_T_KXLgw_y0> .
@prefix sub: <https://w3id.org/np/RAPPwht-EN_jPsJvNDYDXuezmfU8O7zPyL_T_KXLgw_y0/> .
@prefix np: <http://www.nanopub.org/nschema#> .
@prefix grlc: <https://w3id.org/kpxl/grlc/> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix nt: <https://w3id.org/np/o/ntemplate/> .
@prefix npx: <http://purl.org/nanopub/x/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix orcid: <https://orcid.org/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

sub:Head {
  this: a np:Nanopublication;
    np:hasAssertion sub:assertion;
    np:hasProvenance sub:provenance;
    np:hasPublicationInfo sub:pubinfo .
}

sub:assertion {
  sub:list-maintained-templates a grlc:grlc-query;
    dct:description "Lists the assertion templates governed by a given space. First, the template kinds whose versions declare gen:governedBy the space but which the space has not registered as maintained resources: they are marked as not registered and carry the kind IRI, label, description and type that an admin needs to register them (register_* columns, empty on registered rows). Then the kinds registered as maintained resources of the space. Each row shows the label of the kind's current version and links to that version's nanopublication. For a registered kind the current version is the newest non-invalidated version signed by a current member+ (admin/maintainer/member) of the governing space ref, mirroring the get-latest-governed-version resolver; for an unregistered kind it is the newest non-invalidated version signed by a current member+ of the space. The federated lookup for the unregistered kinds gathers the member keys and the registered kinds into a single row, so it runs once. Kinds without such a version are not listed. Ordered by status, then alphabetically by label.";
    dct:license <http://www.apache.org/licenses/LICENSE-2.0>;
    rdfs:label "List maintained templates of a space";
    grlc:endpoint <https://w3id.org/np/l/nanopub-query-1.1/repo/type/79342356d3a68063a627e83ac34b376479e438abb8a4c4b27d49f845f537dc8d>;
    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 nt: <https://w3id.org/np/o/ntemplate/>
prefix gen: <https://w3id.org/kpxl/gen/terms/>

select ?resource ?resource_label ?status ?register_kind ?register_label ?register_description ?register_type ?np (\"^\" as ?np_label) where {
  {
    select ?resource ?registered ?np (coalesce(min(if(lang(?label) = \"\", ?label, ?nolabel)), min(?label)) as ?resource_label) (coalesce(min(if(lang(?desc) = \"\", ?desc, ?nodesc)), min(?desc)) as ?description) where {
      {
        select ?resource ?registered (max(concat(str(?gDate), \">\", str(?gNp))) as ?maxW) where {
          {
            # Kinds registered as maintained resources of the space: newest version signed by a
            # current member+ of the governing space ref (as in get-latest-governed-version).
            values ?_space_multi_iri {}
            graph npa:graph {
              ?gNp npa:hasValidSignatureForPublicKeyHash ?gPubkeyhash ;
                   dct:created ?gDate ;
                   npx:embeds ?gVersion ;
                   np:hasAssertion ?gA .
              filter not exists { ?gInv npx:invalidates ?gNp ; npa:hasValidSignatureForPublicKeyHash ?gPubkeyhash . }
            }
            graph ?gA { ?gVersion a nt:AssertionTemplate ; dct:isVersionOf ?resource ; gen:governedBy ?_space_multi_iri . }
            service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> {
              graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . }
              graph ?stateG {
                ?resource npa:isMaintainedBy ?_space_multi_iri ; npa:hasGoverningSpaceRef ?gRef .
                ?gRi a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ; npa:forSpaceRef ?gRef ;
                     npa:hasRoleType ?gTier ; npa:forAgent ?gAgent .
                filter(?gTier = gen:AdminRole || ?gTier = gen:MaintainerRole || ?gTier = gen:MemberRole)
                ?gAcct a npa:AccountState ; npa:agent ?gAgent ; npa:pubkey ?gPubkeyhash .
              }
            }
            bind(true as ?registered)
          } union {
            # Kinds whose versions declare gen:governedBy the space but which the space has not
            # registered: newest version signed by a current member+ of the space. The member keys
            # and registered kinds are gathered into one row, so the federated call runs once.
            {
              select (concat(\" \", group_concat(distinct str(?uKey); separator=\" \"), \" \") as ?uKeys)
                     (concat(\" \", group_concat(distinct str(?uKind); separator=\" \"), \" \") as ?uKinds) where {
                values ?_space_multi_iri {}
                service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> {
                  graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?uState . }
                  graph ?uState {
                    ?uRi a gen:RoleInstantiation ; npa:forSpace ?_space_multi_iri ; npa:hasRoleType ?uTier ; npa:forAgent ?uAgent .
                    filter(?uTier = gen:AdminRole || ?uTier = gen:MaintainerRole || ?uTier = gen:MemberRole)
                    ?uAcct a npa:AccountState ; npa:agent ?uAgent ; npa:pubkey ?uKey .
                  }
                  optional { graph ?uState { ?uKind npa:isMaintainedBy ?_space_multi_iri . } }
                }
              }
            }
            values ?_space_multi_iri {}
            graph npa:graph {
              ?gNp npa:hasValidSignatureForPublicKeyHash ?gPubkeyhash ;
                   dct:created ?gDate ;
                   npx:embeds ?gVersion ;
                   np:hasAssertion ?gA .
              filter not exists { ?gInv npx:invalidates ?gNp ; npa:hasValidSignatureForPublicKeyHash ?gPubkeyhash . }
            }
            graph ?gA { ?gVersion a nt:AssertionTemplate ; dct:isVersionOf ?resource ; gen:governedBy ?_space_multi_iri . }
            filter(contains(?uKeys, concat(\" \", str(?gPubkeyhash), \" \")))
            filter(!contains(?uKinds, concat(\" \", str(?resource), \" \")))
            bind(false as ?registered)
          }
        } group by ?resource ?registered
      }
      graph npa:graph {
        ?np npa:hasValidSignatureForPublicKeyHash ?pubkeyhash ;
            dct:created ?date ;
            npx:embeds ?version ;
            np:hasAssertion ?a .
      }
      filter(concat(str(?date), \">\", str(?np)) = ?maxW)
      graph ?a { ?version a nt:AssertionTemplate ; dct:isVersionOf ?resource . }
      optional { graph ?a { ?version rdfs:label ?label } }
      optional { graph ?a { ?version dct:description ?desc } }
    } group by ?resource ?registered ?np
  }
  # Registration columns are empty on registered rows, which hides the register action there.
  bind(if(?registered, \"\", \"⚠ not registered\") as ?status)
  bind(if(?registered, \"\", str(?resource)) as ?register_kind)
  bind(if(?registered, \"\", ?resource_label) as ?register_label)
  bind(if(?registered, \"\", coalesce(?description, ?resource_label)) as ?register_description)
  bind(if(?registered, \"\", str(nt:AssertionTemplate)) as ?register_type)
} order by ?registered lcase(str(?resource_label))""" .
}

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-24T11:42:08Z"^^xsd:dateTime;
    dct:creator orcid:0000-0002-1267-0234;
    dct:license <https://creativecommons.org/licenses/by/4.0/>;
    npx:embeds sub:list-maintained-templates;
    npx:supersedes <https://w3id.org/np/RA3BSycqfPoG-qBCT7mE104-ucAXrENGhGHKKKEWfFuU4>;
    rdfs:label "List maintained templates of a space";
    skos:changeNote "list kinds that declare governedBy the space but are not registered, with register_* columns for a register action";
    nt:wasCreatedFromProvenanceTemplate <https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU>;
    nt:wasCreatedFromPubinfoTemplate <https://w3id.org/np/RA0J4vUn_dekg-U1kK3AOEt02p9mT2WO03uGxLDec1jLw>,
      <https://w3id.org/np/RAKc76yHLDbloE6ObluzYQsfX37v6qrZXbYeIKpe8-YUo>, <https://w3id.org/np/RAoTD7udB2KtUuOuAe74tJi1t3VzK0DyWS7rYVAq1GRvw>,
      <https://w3id.org/np/RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI>;
    nt:wasCreatedFromTemplate <https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k> .
  
  sub:sig npx:hasAlgorithm "RSA";
    npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB";
    npx:hasSignature "FhuqFh/TqYGnewIA6BHq/t0Ji5TrXlJuKv2quhkOpTBDCip+5XtRZkPlLp4JxCVLfpgq1wy/TqmMFRn05dBYFiVhY/EXAIDEfPsvrNLKqLiys2jy0ltIwWp2HzzWPYXLeFr1aKelhEJcvp6sPdUsjwvaJjY+xqqE/H1CTIQfNBA=";
    npx:hasSignatureTarget this:;
    npx:signedBy orcid:0000-0002-1267-0234 .
}