. . . . "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." . . . "Get the classes pending approval of an ontology from space members" . . "prefix owl: \n prefix rdfs: \n prefix dct: \n prefix np: \n prefix npa: \n prefix npx: \n prefix skos: \n prefix gen: \n prefix foaf: \n\n select ?class ?class_label ?description ?superclasses_multi_iri ?superclasses_label_multi\n ?status_multi\n ?last_modified_by (sample(?lmbl) as ?last_modified_by_label) ?last_modified\n (?np as ?override_target) ?approve_target ?approval_choice ?disapprove_target ?disapproval_choice ?np ?np_label where {\n {\n select ?class ?class_label (?definition as ?description)\n (group_concat(distinct str(?superclass); separator=\" \") as ?superclasses_multi_iri)\n (group_concat(distinct replace(replace(coalesce(?superclass_lbl, str(?superclass)), \"\\\\\\\\\", \"\\\\\\\\\\\\\\\\\"), \"[\\r\\n]+\", \"\\\\\\\\n\"); separator=\"\\n\") as ?superclasses_label_multi)\n ?status_multi ?approve_target ?approval_choice ?disapprove_target ?disapproval_choice\n (sample(?user) as ?last_modified_by) (sample(?date) as ?last_modified)\n ?np (\"^\" as ?np_label) where {\n values ?_ontology_multi_iri {}\n service {\n select (group_concat(?mpk; separator=\" \") as ?memberPubkeys) where {\n graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?stateG . }\n values ?_ontology_multi_iri {}\n graph ?stateG {\n ?_ontology_multi_iri npa:isMaintainedBy? ?space .\n ?ri a gen:RoleInstantiation ; npa:forSpace ?space ; npa:forAgent ?agent ;\n npa:hasRoleType ?rt .\n filter(?rt in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole))\n ?acct a npa:AccountState ; npa:agent ?agent ; npa:pubkey ?mpk .\n }\n }\n }\n graph npa:graph {\n ?np npx:hasNanopubType owl:Class .\n ?np npa:hasValidSignatureForPublicKeyHash ?pubkey .\n filter not exists { ?npx npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . }\n ?np dct:created ?date .\n ?np npx:introduces ?class .\n ?np np:hasAssertion ?a .\n optional { ?np npx:signedBy ?user . }\n }\n filter(contains(?memberPubkeys, ?pubkey))\n {\n select (group_concat(distinct ?apV; separator=\" \") as ?approvedNps)\n (group_concat(distinct ?disV; separator=\" \") as ?disapprovedNps) where {\n {\n select ?vTarget (max(concat(str(?vDate), \">\", str(?vNp), \">\", ?vMark)) as ?vWin) where {\n values ?_ontology_multi_iri {}\n service {\n select (group_concat(?vpk; separator=\" \") as ?vMemberPubkeys) where {\n graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?vStateG . }\n values ?_ontology_multi_iri {}\n graph ?vStateG {\n ?_ontology_multi_iri npa:isMaintainedBy? ?vSpace .\n ?vRi a gen:RoleInstantiation ; npa:forSpace ?vSpace ; npa:forAgent ?vMember ;\n npa:hasRoleType ?vRt .\n filter(?vRt in (gen:AdminRole, gen:MaintainerRole, gen:MemberRole))\n ?vAcct a npa:AccountState ; npa:agent ?vMember ; npa:pubkey ?vpk .\n }\n }\n }\n service {\n select distinct ?vTarget ?vNp ?vDate ?vPubkey ?vMark where {\n graph npa:graph {\n ?vTarget npx:hasNanopubType owl:Class ; npx:signedBy ?targetAgent .\n ?vNp npx:signedBy ?vAgent ;\n npa:hasValidSignatureForPublicKeyHash ?vPubkey ;\n dct:created ?vDate ;\n np:hasAssertion ?vA .\n filter not exists { ?vInv npx:invalidates ?vNp ; npa:hasValidSignatureForPublicKeyHash ?vPubkey . }\n }\n graph ?vA { ?vAgent ?vPred ?vTarget . }\n values ?vPred { npx:approvesOf npx:disapprovesOf }\n filter(?vAgent != ?targetAgent)\n bind(if(?vPred = npx:approvesOf, \"a\", \"d\") as ?vMark)\n }\n }\n filter(contains(?vMemberPubkeys, ?vPubkey))\n } group by ?vTarget\n }\n bind(if(strends(?vWin, \"a\"), str(?vTarget), \"\") as ?apV)\n bind(if(strends(?vWin, \"d\"), str(?vTarget), \"\") as ?disV)\n }\n }\n service {\n select (group_concat(?hpk; separator=\" \") as ?helperPubkeys) where {\n graph npa:graph { npa:thisRepo npa:hasCurrentSpaceState ?hStateG . }\n values ?_ontology_multi_iri {}\n graph ?hStateG {\n ?_ontology_multi_iri npa:isMaintainedBy? ?hSpace .\n ?hRi a gen:RoleInstantiation ; npa:forSpace ?hSpace ; npa:forAgent ?hAgent ;\n gen:hasRole .\n ?hAcct a npa:AccountState ; npa:agent ?hAgent ; npa:pubkey ?hpk .\n }\n }\n }\n graph ?a {\n ?class dct:isPartOf|dct:partOf ?_ontology_multi_iri .\n optional { ?class rdfs:label ?class_label . filter(lang(?class_label) = \"\") }\n optional { ?class skos:definition ?definition . }\n optional { ?class rdfs:subClassOf ?superclass . filter(isIRI(?superclass)) }\n }\n filter not exists { graph ?a { ?class a gen:WithdrawnTerm } }\n bind(contains(concat(\" \", ?approvedNps, \" \"), concat(\" \", str(?np), \" \")) as ?explicitApproved)\n bind(contains(concat(\" \", ?disapprovedNps, \" \"), concat(\" \", str(?np), \" \")) as ?explicitDisapproved)\n bind(contains(?helperPubkeys, ?pubkey) as ?isAutoApproved)\n bind(?explicitApproved || (?isAutoApproved && !?explicitDisapproved) as ?isApproved)\n filter(!?isApproved && !?explicitDisapproved)\n bind(str(?np) as ?approve_target)\n bind(str(npx:approvesOf) as ?approval_choice)\n bind(str(?np) as ?disapprove_target)\n bind(str(npx:disapprovesOf) as ?disapproval_choice)\n bind(replace(concat(\n if(exists { graph ?a { ?class a owl:DeprecatedClass } }, \"deprecated\\n\", \"\"),\n if(exists { graph ?a { ?class a gen:WithdrawnTerm } }, \"withdrawn\\n\", \"\"),\n if(exists { graph npa:graph { ?np npx:hasNanopubType npx:ExampleNanopub } }, \"example\\n\", \"\")\n ), \"\\n$\", \"\") as ?status_multi)\n filter not exists {\n graph npa:graph {\n ?np2 npx:hasNanopubType owl:Class .\n ?np2 npa:hasValidSignatureForPublicKeyHash ?pubkey2 .\n filter not exists { ?np2x npx:invalidates ?np2 ; npa:hasValidSignatureForPublicKeyHash ?pubkey2 . }\n ?np2 dct:created ?date2 .\n ?np2 npx:introduces ?class .\n ?np2 np:hasAssertion ?a2 .\n }\n filter(contains(?memberPubkeys, ?pubkey2))\n graph ?a2 { ?class dct:isPartOf|dct:partOf ?_ontology_multi_iri . }\n filter(?date2 > ?date || (?date2 = ?date && str(?np2) > str(?np)))\n }\n optional {\n select ?superclass (sample(?sclbl) as ?superclass_lbl) where {\n values ?_ontology_multi_iri {}\n graph npa:graph { ?scnp npx:hasNanopubType owl:Class ; npx:introduces ?superclass ; np:hasAssertion ?sca . }\n graph ?sca { ?superclass dct:isPartOf|dct:partOf ?_ontology_multi_iri ; rdfs:label ?sclbl . }\n } group by ?superclass\n }\n } group by ?class ?class_label ?definition ?status_multi ?approve_target ?approval_choice ?disapprove_target ?disapproval_choice ?np\n }\n optional {\n service {\n select ?last_modified_by ?lmbl where {\n graph npa:graph { npa:thisRepo npa:hasCurrentTrustState ?tg . }\n graph ?tg { ?last_modified_by foaf:name ?lmbl . }\n }\n }\n }\n }\n 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\n order by ?class_label" . . "Tobias Kuhn" . "2026-08-19T06:38:06Z"^^ . . . . "Get the classes pending approval of an ontology from space members" . . . . . "RSA" . "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" . "mYzdOBsc8FZ+LcJvU1RdIUBtLD3zS3/23gtB1A4SYQTjWh1tL0sSVI2rd7ZJmvfsQ6RWNlPtvIu+t0ZYbeRRVm78K3H6B6jaI35C8bk1Vfm47Uz6Fb6glmRaxJyEv1oHnGX2HSs9JwdREQwLiHrsmdt1VmyI9Jm4zY6Q1DX+mto=" . . .