https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/Head https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://www.nanopub.org/nschema#hasAssertion https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/assertion https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://www.nanopub.org/nschema#hasProvenance https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/provenance https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://www.nanopub.org/nschema#hasPublicationInfo https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/pubinfo https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.nanopub.org/nschema#Nanopublication https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/assertion https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/get-classes-pending-approval-of-an-ontology-from-space-members http://purl.org/dc/terms/description Generalized 'pending' half of the former 'Get the biochementities of an ontology from space members' query (its counterpart is 'Get the approved classes of an ontology from space members'). Returns the classes (owl:Class) of the given ontology or vocabulary that are pending approval: classes whose definition declares them part of the given resource via dct:isPartOf (or the legacy dct:partOf), published by an admin, maintainer, or member of the space that maintains the resource, but neither approved nor explicitly disapproved. The maintaining space and its validated member public-key hashes are resolved server-side from the spaces repo (/repo/spaces); observers are excluded. Each class URI appears once, kept from the latest (by nanopub timestamp) member-published definition, and approval state is judged on that winning definition only, so publishing a new version of an approved class moves it back to this listing. A definition is excluded from this listing when it is approved -- either explicitly, because the newest non-invalidated approval/disapproval nanopublication targeting it is an npx:approvesOf signed by a current member+ of the maintaining space who is not the definition's own signer (self-approval never counts; latest verdict wins across all publishers), or by default, because the definition's signing key belongs to a validated holder of the auto-approved helper role (https://w3id.org/np/RASGFRI3F5TtJ4GA4Yaed3esIpTF3pDyJLbpuvsqHzIXc/autoApprovedHelperRole) in the maintaining space with no outstanding member disapproval -- and also when it is explicitly disapproved, i.e. the newest member-signed verdict is an npx:disapprovesOf, so explicitly rejected contributions appear in neither this listing nor the approved one. Because approval nanopublications do not carry the owl:Class nanopub type they are absent from the type-scoped endpoint this query runs on, so the set of current approval verdicts is resolved once per request by a self-contained sub-select that federates to /repo/full for the approvals and to /repo/spaces for the approvers' member keys, keeping every federated call at one SERVICE level; the helper-role holders' key hashes are resolved from the spaces repo via the validated role instantiations carrying gen:hasRole. Superclass labels are taken from the superclass' own rdfs:label when it is a class in the same ontology. The status column is a multi-value literal listing the curation states that apply to the winning definition: "deprecated" (owl:DeprecatedClass), "withdrawn" (gen:WithdrawnTerm) and "example" (npx:ExampleNanopub), in that order. Note that "withdrawn" can never appear because classes whose winning definition types them gen:WithdrawnTerm are excluded entirely; the branch is kept so the expression matches the sibling queries. The approve_target/approval_choice and disapprove_target/disapproval_choice column pairs are action data rather than content: they let a view offer per-row approve and disapprove (dismiss) actions pre-filled with the row's nanopublication and the matching npx predicate, and the override_target column carries the row's nanopublication for an in-place re-edit action. The last_modified_by/last_modified columns give the signer and timestamp of the latest definition; the signer name is resolved from the trust repo (/repo/trust) or left blank. https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/get-classes-pending-approval-of-an-ontology-from-space-members http://purl.org/dc/terms/license http://www.apache.org/licenses/LICENSE-2.0 https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/get-classes-pending-approval-of-an-ontology-from-space-members http://www.w3.org/1999/02/22-rdf-syntax-ns#type https://w3id.org/kpxl/grlc/grlc-query https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/get-classes-pending-approval-of-an-ontology-from-space-members http://www.w3.org/2000/01/rdf-schema#label Get the classes pending approval of an ontology from space members https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/get-classes-pending-approval-of-an-ontology-from-space-members https://w3id.org/kpxl/grlc/endpoint https://w3id.org/np/l/nanopub-query-1.1/repo/type/e8cc5bb29ec5597303f8f101c65c545dc124ee0df68ce733764b03adc3237184 https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/get-classes-pending-approval-of-an-ontology-from-space-members https://w3id.org/kpxl/grlc/sparql prefix owl: <http://www.w3.org/2002/07/owl#> 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 skos: <http://www.w3.org/2004/02/skos/core#> prefix gen: <https://w3id.org/kpxl/gen/terms/> prefix foaf: <http://xmlns.com/foaf/0.1/> select ?class ?class_label ?description ?superclasses_multi_iri ?superclasses_label_multi ?status_multi ?last_modified_by (sample(?lmbl) as ?last_modified_by_label) ?last_modified (?np as ?override_target) ?approve_target ?approval_choice ?disapprove_target ?disapproval_choice ?np ?np_label where { { select ?class ?class_label (?definition as ?description) (group_concat(distinct str(?superclass); separator=" ") as ?superclasses_multi_iri) (group_concat(distinct replace(replace(coalesce(?superclass_lbl, str(?superclass)), "\\\\", "\\\\\\\\"), "[\r\n]+", "\\\\n"); separator="\n") as ?superclasses_label_multi) ?status_multi ?approve_target ?approval_choice ?disapprove_target ?disapproval_choice (sample(?user) as ?last_modified_by) (sample(?date) as ?last_modified) ?np ("^" as ?np_label) where { values ?_ontology_multi_iri {} service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?mpk; separator=" ") as ?memberPubkeys) where { graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . } values ?_ontology_multi_iri {} graph ?stateG { ?_ontology_multi_iri npa:isMaintainedBy? ?space . ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ; npa:hasRoleType ?rt . filter(?rt in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk . } } } graph npa:graph { ?np npx:hasNanopubType owl:Class . ?np npa:hasValidSignatureForPublicKeyHash ?pubkey . filter not exists { ?npx npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . } ?np dct:created ?date . ?np npx:introduces ?class . ?np np:hasAssertion ?a . optional { ?np npx:signedBy ?user . } } filter(contains(?memberPubkeys, ?pubkey)) { select (group_concat(distinct ?apV; separator=" ") as ?approvedNps) (group_concat(distinct ?disV; separator=" ") as ?disapprovedNps) where { { select ?vTarget (max(concat(str(?vDate), ">", str(?vNp), ">", ?vMark)) as ?vWin) where { values ?_ontology_multi_iri {} service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?vpk; separator=" ") as ?vMemberPubkeys) where { graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?vStateG . } values ?_ontology_multi_iri {} graph ?vStateG { ?_ontology_multi_iri npa:isMaintainedBy? ?vSpace . ?vRi a gen:RoleInstantiation ; npa:forSpace ?vSpace ; npa:forAgent ?vMember ; npa:hasRoleType ?vRt . filter(?vRt in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole)) ?vAcct a npa:AccountState ; npa:agent ?vMember ; npa:pubkey ?vpk . } } } service <https://w3id.org/np/l/nanopub-query-1.1/repo/full> { select distinct ?vTarget ?vNp ?vDate ?vPubkey ?vMark where { graph npa:graph { ?vTarget npx:hasNanopubType owl:Class ; npx:signedBy ?targetAgent . ?vNp npx:signedBy ?vAgent ; npa:hasValidSignatureForPublicKeyHash ?vPubkey ; dct:created ?vDate ; np:hasAssertion ?vA . filter not exists { ?vInv npx:invalidates ?vNp ; npa:hasValidSignatureForPublicKeyHash ?vPubkey . } } graph ?vA { ?vAgent ?vPred ?vTarget . } values ?vPred { npx:approvesOf npx:disapprovesOf } filter(?vAgent != ?targetAgent) bind(if(?vPred = npx:approvesOf, "a", "d") as ?vMark) } } filter(contains(?vMemberPubkeys, ?vPubkey)) } group by ?vTarget } bind(if(strends(?vWin, "a"), str(?vTarget), "") as ?apV) bind(if(strends(?vWin, "d"), str(?vTarget), "") as ?disV) } } service <https://w3id.org/np/l/nanopub-query-1.1/repo/spaces> { select (group_concat(?hpk; separator=" ") as ?helperPubkeys) where { graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?hStateG . } values ?_ontology_multi_iri {} graph ?hStateG { ?_ontology_multi_iri npa:isMaintainedBy? ?hSpace . ?hRi a gen:RoleInstantiation ; npa:forSpace ?hSpace ; npa:forAgent ?hAgent ; gen:hasRole <https://w3id.org/np/RASGFRI3F5TtJ4GA4Yaed3esIpTF3pDyJLbpuvsqHzIXc/autoApprovedHelperRole> . ?hAcct a npa:AccountState ; npa:agent ?hAgent ; npa:pubkey ?hpk . } } } graph ?a { ?class dct:isPartOf|dct:partOf ?_ontology_multi_iri . optional { ?class rdfs:label ?class_label . filter(lang(?class_label) = "") } optional { ?class skos:definition ?definition . } optional { ?class rdfs:subClassOf ?superclass . filter(isIRI(?superclass)) } } filter not exists { graph ?a { ?class a gen:WithdrawnTerm } } bind(contains(concat(" ", ?approvedNps, " "), concat(" ", str(?np), " ")) as ?explicitApproved) bind(contains(concat(" ", ?disapprovedNps, " "), concat(" ", str(?np), " ")) as ?explicitDisapproved) bind(contains(?helperPubkeys, ?pubkey) as ?isAutoApproved) bind(?explicitApproved || (?isAutoApproved && !?explicitDisapproved) as ?isApproved) filter(!?isApproved && !?explicitDisapproved) bind(str(?np) as ?approve_target) bind(str(npx:approvesOf) as ?approval_choice) bind(str(?np) as ?disapprove_target) bind(str(npx:disapprovesOf) as ?disapproval_choice) bind(replace(concat( if(exists { graph ?a { ?class a owl:DeprecatedClass } }, "deprecated\n", ""), if(exists { graph ?a { ?class a gen:WithdrawnTerm } }, "withdrawn\n", ""), if(exists { graph npa:graph { ?np npx:hasNanopubType npx:ExampleNanopub } }, "example\n", "") ), "\n$", "") as ?status_multi) filter not exists { graph npa:graph { ?np2 npx:hasNanopubType owl:Class . ?np2 npa:hasValidSignatureForPublicKeyHash ?pubkey2 . filter not exists { ?np2x npx:invalidates ?np2 ; npa:hasValidSignatureForPublicKeyHash ?pubkey2 . } ?np2 dct:created ?date2 . ?np2 npx:introduces ?class . ?np2 np:hasAssertion ?a2 . } filter(contains(?memberPubkeys, ?pubkey2)) graph ?a2 { ?class dct:isPartOf|dct:partOf ?_ontology_multi_iri . } filter(?date2 > ?date || (?date2 = ?date && str(?np2) > str(?np))) } optional { select ?superclass (sample(?sclbl) as ?superclass_lbl) where { values ?_ontology_multi_iri {} graph npa:graph { ?scnp npx:hasNanopubType owl:Class ; npx:introduces ?superclass ; np:hasAssertion ?sca . } graph ?sca { ?superclass dct:isPartOf|dct:partOf ?_ontology_multi_iri ; rdfs:label ?sclbl . } } group by ?superclass } } group by ?class ?class_label ?definition ?status_multi ?approve_target ?approval_choice ?disapprove_target ?disapproval_choice ?np } optional { service <https://w3id.org/np/l/nanopub-query-1.1/repo/trust> { select ?last_modified_by ?lmbl where { graph npa:graph { npa:thisRepo npa:hasCurrentTrustState ?tg . } graph ?tg { ?last_modified_by foaf:name ?lmbl . } } } } } group by ?class ?class_label ?description ?superclasses_multi_iri ?superclasses_label_multi ?status_multi ?last_modified_by ?last_modified ?approve_target ?approval_choice ?disapprove_target ?disapproval_choice ?np ?np_label order by ?class_label https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/provenance https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/assertion http://www.w3.org/ns/prov#wasAttributedTo https://orcid.org/0000-0002-1267-0234 https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/pubinfo https://orcid.org/0000-0002-1267-0234 http://xmlns.com/foaf/0.1/name Tobias Kuhn https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://purl.org/dc/terms/created 2026-08-19T06:38:06Z https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://purl.org/dc/terms/creator https://orcid.org/0000-0002-1267-0234 https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://purl.org/dc/terms/license https://creativecommons.org/publicdomain/zero/1.0/ https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://purl.org/nanopub/x/embeds https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/get-classes-pending-approval-of-an-ontology-from-space-members https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw http://www.w3.org/2000/01/rdf-schema#label Get the classes pending approval of an ontology from space members https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw https://w3id.org/np/o/ntemplate/wasCreatedFromProvenanceTemplate https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8 https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw https://w3id.org/np/o/ntemplate/wasCreatedFromPubinfoTemplate https://w3id.org/np/RAukAcWHRDlkqxk7H2XNSegc1WnHI569INvNr-xdptDGI https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw https://w3id.org/np/o/ntemplate/wasCreatedFromTemplate https://w3id.org/np/RAEFAt-QcFK0ZhqfvlsmS10BnzGJA0xwOICZXkO-ai87k https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/sig http://purl.org/nanopub/x/hasAlgorithm RSA https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/sig http://purl.org/nanopub/x/hasPublicKey MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/sig http://purl.org/nanopub/x/hasSignature mYzdOBsc8FZ+LcJvU1RdIUBtLD3zS3/23gtB1A4SYQTjWh1tL0sSVI2rd7ZJmvfsQ6RWNlPtvIu+t0ZYbeRRVm78K3H6B6jaI35C8bk1Vfm47Uz6Fb6glmRaxJyEv1oHnGX2HSs9JwdREQwLiHrsmdt1VmyI9Jm4zY6Q1DX+mto= https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/sig http://purl.org/nanopub/x/hasSignatureTarget https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw https://w3id.org/np/RA_xvyrc879w6-6tjTy9LQGvxqumWEXs6uJxm7ktz28dw/sig http://purl.org/nanopub/x/signedBy https://orcid.org/0000-0002-1267-0234