[ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/provenance", "@graph": [ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/assertion", "http://www.w3.org/ns/prov#wasAttributedTo": [ { "@id": "https://orcid.org/0000-0002-1267-0234" } ] } ] }, { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/Head", "@graph": [ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI", "http://www.nanopub.org/nschema#hasAssertion": [ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/assertion" } ], "http://www.nanopub.org/nschema#hasProvenance": [ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/provenance" } ], "http://www.nanopub.org/nschema#hasPublicationInfo": [ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/pubinfo" } ], "@type": [ "http://www.nanopub.org/nschema#Nanopublication" ] } ] }, { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/assertion", "@graph": [ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/list-maintained-and-not-yet-listed-resources", "http://purl.org/dc/terms/description": [ { "@value": "Lists the resources a space maintains, preceded by the kinds of the definitions (views, templates and the like) that say they are governed by the space but that the space does not list as maintained resources yet, marked as not listed yet. The maintained resources are those of the space ref whose root nanopublication is given (root_np) or, without it, of every ref of the space IRI (space), as in list-maintained-resources. A not-yet-listed kind is shown with the label it would get when listed; its row points to the kind's newest version that declares gen:governedBy , embedded in a nanopublication signed by a current admin, maintainer or member of the space and not invalidated by its own key. Left out are kinds the space already maintains, kinds that were re-minted (the nanopublication minting the kind supersedes a version of another kind), and versions whose latest verdict by an admin of the space is npx:disapprovesOf (a later npx:approvesOf brings them back), as in list-maintained-resources-pending-approval. Hidden columns pre-fill the admin actions on the not-yet-listed rows and are empty on the others: list_* for listing the kind as a maintained resource of the space, dismiss_target and dismiss_choice for dismissing the version, which only takes it off the list. Hosted on the full repo; the space state comes from the spaces repo in two federated calls that each run once." } ], "http://purl.org/dc/terms/license": [ { "@id": "http://www.apache.org/licenses/LICENSE-2.0" } ], "@type": [ "https://w3id.org/kpxl/grlc/grlc-query" ], "http://www.w3.org/2000/01/rdf-schema#label": [ { "@value": "List maintained and not yet listed resources of a space" } ], "https://w3id.org/kpxl/grlc/endpoint": [ { "@id": "https://w3id.org/np/l/nanopub-query-1.1/repo/full" } ], "https://w3id.org/kpxl/grlc/sparql": [ { "@value": "prefix np: \nprefix npa: \nprefix npx: \nprefix dct: \nprefix rdfs: \nprefix gen: \nprefix nt: \n\nselect ?resource ?resource_label ?status ?np ('^' as ?np_label)\n ?list_resource ?list_label ?list_description ?list_type ?dismiss_target ?dismiss_choice\nwhere {\n {\n # The resources the space ref lists as maintained resources (all refs of the space IRI\n # when no root_np is given).\n service {\n select ?resource (sample(?label) as ?resource_label) (sample(?viaNp) as ?np) where {\n graph npa:spacesGraph { ?spaceRef npa:spaceIri ?_space_iri . }\n optional {\n values ?__root_np_multi_iri {}\n graph npa:spacesGraph { ?passedRef npa:rootNanopub ?__root_np_multi_iri . }\n }\n filter(!bound(?passedRef) || ?spaceRef = ?passedRef)\n graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?g . }\n graph ?g { ?spaceRef npa:hasMaintainedResource ?resource . }\n graph ?ag { ?resource a gen:MaintainedResource ; rdfs:label ?label . }\n graph npa:graph {\n ?defNp np:hasAssertion ?ag ; npa:hasValidSignatureForPublicKey ?pubkey .\n filter not exists { ?inv npx:invalidates ?defNp ; npa:hasValidSignatureForPublicKey ?pubkey . }\n }\n optional { graph npa:spacesGraph { ?d a npa:MaintainedResourceDeclaration ; npa:resourceIri ?resource ; npa:maintainerSpace ?_space_iri ; npa:viaNanopub ?viaNp } }\n }\n group by ?resource\n }\n bind(1 as ?listed)\n }\n union\n {\n {\n select (?kind as ?resource) (sample(?klabel) as ?resource_label) ?np\n (str(?kind) as ?list_resource) (sample(?klabel) as ?list_label) (sample(?kdesc) as ?list_description)\n (sample(?atype) as ?list_type) (str(?np) as ?dismiss_target) (str(npx:disapprovesOf) as ?dismiss_choice)\n where {\n # The space's current state in one row: the keys of its admins, of all its admins,\n # maintainers and members, and the resources it already maintains.\n {\n select (sample(?mk) as ?memberKeys) (sample(?ak) as ?adminKeys) (sample(?mr) as ?maintained) where {\n service {\n select (group_concat(distinct ?pk; separator=' ') as ?mk)\n (group_concat(distinct ?apk; separator=' ') as ?ak)\n (group_concat(distinct str(?r); separator=' ') as ?mr) where {\n graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?sg . }\n graph ?sg {\n { ?ri a gen:RoleInstantiation ; npa:forSpace ?_space_iri ; npa:hasRoleType ?tier ; npa:forAgent ?agent .\n filter(?tier in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole))\n ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?pk . }\n union\n { ?ria a gen:RoleInstantiation ; npa:forSpace ?_space_iri ; npa:hasRoleType gen:AdminRole ; npa:forAgent ?admin .\n ?aacct a npa:AccountState ; npa:agent ?admin ; npa:pubkey ?apk . }\n union\n { ?r npa:isMaintainedBy ?_space_iri . }\n }\n }\n }\n }\n }\n # Versions naming this space as governing, signed by one of its members, not\n # invalidated, whose kind the space does not maintain yet.\n graph ?a { ?definition gen:governedBy ?_space_iri ; dct:isVersionOf ?kind . }\n graph npa:graph {\n ?np np:hasAssertion ?a ; npx:embeds ?definition ; dct:created ?date ;\n npa:hasValidSignatureForPublicKeyHash ?pubkey .\n filter not exists { ?inv npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . }\n }\n filter(contains(?memberKeys, ?pubkey))\n filter(!contains(concat(' ', ?maintained, ' '), concat(' ', str(?kind), ' ')))\n # Only the newest such version of each kind.\n optional {\n graph ?a2 { ?d2 gen:governedBy ?_space_iri ; dct:isVersionOf ?kind . }\n graph npa:graph {\n ?np2 np:hasAssertion ?a2 ; npx:embeds ?d2 ; dct:created ?date2 ;\n npa:hasValidSignatureForPublicKeyHash ?pubkey2 .\n filter not exists { ?inv2 npx:invalidates ?np2 ; npa:hasValidSignatureForPublicKeyHash ?pubkey2 . }\n }\n filter(contains(?memberKeys, ?pubkey2) && concat(str(?date2), '>', str(?np2)) > concat(str(?date), '>', str(?np)))\n }\n filter(!bound(?np2))\n # Not a re-minted kind: the nanopublication minting it must not supersede a version of\n # another kind.\n optional {\n graph npa:graph { ?kn npx:introduces ?kind . }\n filter(strstarts(str(?kind), concat(str(?kn), '/')))\n graph npa:networkGraph { ?kn npx:supersedes ?old . }\n graph npa:graph { ?old np:hasAssertion ?oa . }\n graph ?oa { ?ov dct:isVersionOf ?oldKind . }\n filter(?oldKind != ?kind)\n }\n filter(!bound(?oldKind))\n # Admin verdicts on this version, for the latest one to decide below: a version whose\n # latest admin verdict is a disapproval drops out.\n optional {\n values ?vpred { npx:approvesOf npx:disapprovesOf }\n graph ?va { ?vagent ?vpred ?np . }\n graph npa:graph {\n ?vnp np:hasAssertion ?va ; dct:created ?vdate ; npa:hasValidSignatureForPublicKeyHash ?vpk .\n filter not exists { ?vinv npx:invalidates ?vnp ; npa:hasValidSignatureForPublicKeyHash ?vpk . }\n }\n filter(contains(?adminKeys, ?vpk))\n bind(concat(str(?vdate), '>', if(?vpred = npx:disapprovesOf, 'd', 'a')) as ?verdict)\n }\n # The label the kind gets when listed, and what the list action pre-fills.\n optional { graph ?a { ?definition dct:title ?title . } }\n optional { graph ?a { ?definition rdfs:label ?label . } }\n optional { graph ?a { ?definition dct:description ?description . } }\n optional { graph ?a { ?definition a ?rdftype . filter(?rdftype in (gen:ResourceView, nt:AssertionTemplate, nt:ProvenanceTemplate, nt:PubinfoTemplate, gen:Preset)) } }\n optional { graph ?a { ?definition a ?atype . filter(?atype = nt:AssertionTemplate) } }\n bind(coalesce(if(?rdftype = gen:ResourceView, 'view', if(?rdftype = nt:AssertionTemplate, 'assertion template',\n if(?rdftype = nt:ProvenanceTemplate, 'provenance template', if(?rdftype = nt:PubinfoTemplate, 'pubinfo template',\n if(?rdftype = gen:Preset, 'preset', 'definition'))))), 'definition') as ?dtype)\n bind(coalesce(?title, ?label, str(?definition)) as ?dlabel)\n bind(coalesce(?label, ?title, str(?kind)) as ?baseLabel)\n bind(if(?dtype = 'view', concat(str(?baseLabel), ' kind'), concat(str(?baseLabel), ' (', ?dtype, ' kind)')) as ?klabel)\n bind(coalesce(?description, concat('The kind of the ', ?dtype, ' «', str(?dlabel), '», maintained by this space so that any of its members can publish the next version.')) as ?kdesc)\n }\n group by ?kind ?np\n having (coalesce(!strends(max(?verdict), 'd'), true))\n }\n bind(0 as ?listed)\n bind('⏳ not listed yet' as ?status)\n }\n}\norder by ?listed lcase(str(?resource_label))" } ] } ] }, { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/pubinfo", "@graph": [ { "@id": "https://orcid.org/0000-0002-1267-0234", "http://xmlns.com/foaf/0.1/name": [ { "@value": "Tobias Kuhn" } ] }, { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI", "http://purl.org/dc/terms/created": [ { "@value": "2026-09-24T14:43:13Z", "@type": "http://www.w3.org/2001/XMLSchema#dateTime" } ], "http://purl.org/dc/terms/creator": [ { "@id": "https://orcid.org/0000-0002-1267-0234" } ], "http://purl.org/dc/terms/license": [ { "@id": "https://creativecommons.org/licenses/by/4.0/" } ], "http://purl.org/nanopub/x/embeds": [ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/list-maintained-and-not-yet-listed-resources" } ], "http://www.w3.org/2000/01/rdf-schema#label": [ { "@value": "List maintained and not yet listed resources of a space" } ], "http://www.w3.org/ns/prov#wasDerivedFrom": [ { "@id": "https://w3id.org/np/RAACDhEU3OF8BF52aaHDMfs-djySEp_i-yv1Yb5We6zxc" }, { "@id": "https://w3id.org/np/RAPthUMRDXiJeD2BrOsZigTsbA0LktBc-HC4alDSfVNKM" } ], "https://w3id.org/np/o/ntemplate/wasCreatedFromProvenanceTemplate": [ { "@id": "https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU" } ], "https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate": [ { "@id": "https://w3id.org/np/RA0J4vUn_dekg-U1kK3AOEt02p9mT2WO03uGxLDec1jLw" }, { "@id": "https://w3id.org/np/RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI" } ], "https://w3id.org/np/o/ntemplate/wasCreatedFromTemplate": [ { "@id": "https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k" } ] }, { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI/sig", "http://purl.org/nanopub/x/hasAlgorithm": [ { "@value": "RSA" } ], "http://purl.org/nanopub/x/hasPublicKey": [ { "@value": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" } ], "http://purl.org/nanopub/x/hasSignature": [ { "@value": "WMWWzFgZ7P6OHZDbsCRXiv381f8OHAqGNj0cCtZxYabGQiBRK+CGezLijIyc/fJJ95mO+sqM68N7zCTvyxmfUgwljL1SijFH/PMi7PQVA6ejvHguchNwOFb9rb3FamqqdXD4I6jBHUOpCuyMlOIT2dG0aa2BvuhobUDK4rDLeDw=" } ], "http://purl.org/nanopub/x/hasSignatureTarget": [ { "@id": "https://w3id.org/np/RAWZab2iKc3cB6TwqHdUEn1ZgMh817nfiwFKAVMrypVlI" } ], "http://purl.org/nanopub/x/signedBy": [ { "@id": "https://orcid.org/0000-0002-1267-0234" } ] } ] } ]