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