https://w3id.org/np/RANbhOvFGPgkcWy0y3MkFNh4Wru5mQqIAdGmUz1mSIsu8
.trig | .trig.txt | .jelly | .jelly.txt | .jsonld | .jsonld.txt | .nq | .nq.txt | .xml | .xml.txt
@prefix this: <https://w3id.org/np/RANbhOvFGPgkcWy0y3MkFNh4Wru5mQqIAdGmUz1mSIsu8> .
@prefix sub: <https://w3id.org/np/RANbhOvFGPgkcWy0y3MkFNh4Wru5mQqIAdGmUz1mSIsu8/> .
@prefix np: <http://www.nanopub.org/nschema#> .
@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 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:get-definitions-of-ontology-ns a <https://w3id.org/kpxl/grlc/grlc-query>;
dct:description "Like 'Get the latest member-authored definitions of an ontology including namespace', but additionally restricted to approved definitions -- the same approval semantics as 'Get the approved classes of an ontology from space members', applied to all definition types. It returns the definitions of the elements of a given OWL ontology (classes, properties, named individuals, and describing paragraphs) that either match the ontology namespace or declare dct:isPartOf the ontology, restricted to definition nanopublications published by an admin, maintainer, or member of the space that maintains the resource (observers excluded). The maintaining space and its validated member public-key hashes are resolved server-side from the spaces repo (/repo/spaces). Each element appears once, kept from the latest member-authored definition (by nanopub timestamp, ties broken by nanopub URI); approval is judged on that winning definition only. A definition counts as approved when 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 when its 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. Definitions that are neither approved nor helper-signed (i.e. the ones pending approval or explicitly disapproved) are excluded, so the result matches the union of what the approved-classes query shows plus the equivalently-approved non-class definitions -- making this query suitable for assembling release content indexes. The approval verdicts are resolved once per request by a self-contained sub-select over the current repo (wrapped in a SERVICE self-reference to /repo/full so the planner evaluates it independently), federating to /repo/spaces for the approvers' member keys; the helper-role holders' key hashes come from the spaces repo via the validated role instantiations carrying gen:hasRole, wrapped in an extra sub-select so the federated call is evaluated once rather than per result row. The last_modified_by/last_modified columns give the signer and timestamp of that latest definition; the signer name is resolved from the trust repo (/repo/trust) or left blank.";
dct:license <http://www.apache.org/licenses/LICENSE-2.0>;
rdfs:label "Get the latest approved definitions of an ontology including namespace";
<https://w3id.org/kpxl/grlc/endpoint> <https://w3id.org/np/l/nanopub-query-1.1/repo/full>;
<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 rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
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 schema: <https://schema.org/>
prefix gen: <https://w3id.org/kpxl/gen/terms/>
prefix foaf: <http://xmlns.com/foaf/0.1/>
select ?item (sample(?item_label_) as ?item_label)
(sample(?user) as ?last_modified_by) (sample(?lmbl) as ?last_modified_by_label)
(sample(?date) as ?last_modified)
(sample(?np_) as ?np) (\"^\" as ?np_label) where {
{
select ?item (max(?rank) as ?maxrank) where {
{
select ?np_ ?item ?a ?date ?pubkey ?itemType where {
values ?itemType { owl:Class rdf:Property owl:ObjectProperty owl:DatatypeProperty owl:NamedIndividual gen:Paragraph }
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 ?itemType .
?np_ npa:hasValidSignatureForPublicKeyHash ?pubkey .
filter not exists { ?npx npx:invalidates ?np_ ; npa:hasValidSignatureForPublicKeyHash ?pubkey . }
?np_ dct:created ?date .
?np_ npx:introduces ?item .
?np_ np:hasAssertion ?a .
}
filter(contains(?memberPubkeys, ?pubkey))
}
}
values ?_ontology_multi_iri {}
graph ?a {
{ ?item a ?itemType . filter(strstarts(str(?item), ?__ontologyNamespace)) }
union
{ ?item a ?itemType . ?item dct:isPartOf|schema:isPartOf ?_ontology_multi_iri . }
}
bind(concat(str(?date), \"|\", str(?np_)) as ?rank)
} group by ?item
}
{
select ?np_ ?item ?date ?user ?pubkey ?item_label_ where {
{
select ?np_ ?item ?a ?date ?user ?pubkey ?itemType where {
values ?itemType { owl:Class rdf:Property owl:ObjectProperty owl:DatatypeProperty owl:NamedIndividual gen:Paragraph }
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 ?itemType .
?np_ npa:hasValidSignatureForPublicKeyHash ?pubkey .
filter not exists { ?npx npx:invalidates ?np_ ; npa:hasValidSignatureForPublicKeyHash ?pubkey . }
?np_ dct:created ?date .
?np_ npx:introduces ?item .
?np_ np:hasAssertion ?a .
optional { ?np_ npx:signedBy ?user . }
}
filter(contains(?memberPubkeys, ?pubkey))
}
}
values ?_ontology_multi_iri {}
graph ?a {
{ ?item a ?itemType . filter(strstarts(str(?item), ?__ontologyNamespace)) }
union
{ ?item a ?itemType . ?item dct:isPartOf|schema:isPartOf ?_ontology_multi_iri . }
optional { ?item rdfs:label|schema:title ?item_label_ . }
}
}
}
bind(concat(str(?date), \"|\", str(?np_)) as ?rank)
filter(?rank = ?maxrank)
{
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 {
values ?vType { owl:Class rdf:Property owl:ObjectProperty owl:DatatypeProperty owl:NamedIndividual gen:Paragraph }
graph npa:graph {
?vTarget npx:hasNanopubType ?vType ; 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)
}
}
{
select (sample(?helperPubkeys_) as ?helperPubkeys) where {
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 .
}
}
}
}
}
bind(contains(concat(\" \", ?approvedNps, \" \"), concat(\" \", str(?np_), \" \")) as ?explicitApproved)
bind(contains(concat(\" \", ?disapprovedNps, \" \"), concat(\" \", str(?np_), \" \")) as ?explicitDisapproved)
bind(contains(?helperPubkeys, ?pubkey) as ?isAutoApproved)
filter(?explicitApproved || (?isAutoApproved && !?explicitDisapproved))
optional {
service <https://w3id.org/np/l/nanopub-query-1.1/repo/trust> {
select ?user ?lmbl where {
graph npa:graph { npa:thisRepo npa:hasCurrentTrustState ?tg . }
graph ?tg { ?user foaf:name ?lmbl . }
}
}
}
} group by ?item
order by ?item_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-08-19T07:26:36Z"^^xsd:dateTime;
dct:creator orcid:0000-0002-1267-0234;
dct:license <https://creativecommons.org/publicdomain/zero/1.0/>;
npx:embeds sub:get-definitions-of-ontology-ns;
npx:supersedes <https://w3id.org/np/RAVJmNizA8ZgU5J_6J5Odztw5ERBSeMmLbSOQQBDENN_k>;
rdfs:label "Get the latest approved definitions of an ontology including namespace";
nt:wasCreatedFromProvenanceTemplate <https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU>;
nt:wasCreatedFromPubinfoTemplate <https://w3id.org/np/RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8>,
<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 "BG4a4BkKOKyLVsDt0NV4/twPZgOwI4h44dnX6hZVpHo+PC8NbaRK3L5xew164el7iTcvSMmDd5uFPbcm7ZTzM5GWpk0DOg4La3uPN/UuEiSYJnQOIAnhJRNMKTDtMKH+NHFui6PsuYq5ZSWYT9EMC8Y6tWsy5kf69A7F4Wylftg=";
npx:hasSignatureTarget this:;
npx:signedBy orcid:0000-0002-1267-0234 .
}