Nanopublication

< Home

ID

https://w3id.org/np/RAthEAsWKXcQb8k0XEzM9AfQBXbe3D2B4Ub0vFAoSlRdw

Formats

.trig | .trig.txt | .jelly | .jelly.txt | .jsonld | .jsonld.txt | .nq | .nq.txt | .xml | .xml.txt

Content

@prefix this: <https://w3id.org/np/RAthEAsWKXcQb8k0XEzM9AfQBXbe3D2B4Ub0vFAoSlRdw> .
@prefix sub: <https://w3id.org/np/RAthEAsWKXcQb8k0XEzM9AfQBXbe3D2B4Ub0vFAoSlRdw/> .
@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:find-gofair-qualified-things-valid a <https://w3id.org/kpxl/grlc/grlc-query>;
    dct:description "This query allows for searching for resources (FERs etc.) together with the info about whether GO FAIR qualified them. It performs a Lucene full-text search on labels and descriptions, restricted to FAIR Enabling Resource and FAIR Specification types (optionally narrowed to a single given nanopub type), and excludes retracted/superseded nanopublications, example nanopublications, entries from before 2022, and entries disapproved by the curators. This version merges the functions of the earlier 'Search on FAIR Specifications' and 'FSR lookup' queries, and includes new FSR types introduced in august 2026. It is also used to find Digital Object Types (these are ignored if not specifically requested).";
    dct:license <http://www.apache.org/licenses/LICENSE-2.0>;
    rdfs:label "Find GO FAIR qualified things (only valid entries)";
    <https://w3id.org/kpxl/grlc/endpoint> <https://w3id.org/np/l/nanopub-query-1.1/repo/full>;
    <https://w3id.org/kpxl/grlc/sparql> """prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix np: <http://www.nanopub.org/nschema#>
prefix npa: <http://purl.org/nanopub/admin/>
prefix npx: <http://purl.org/nanopub/x/>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix dct: <http://purl.org/dc/terms/>
prefix fip: <https://w3id.org/fair/fip/terms/>
prefix prov: <http://www.w3.org/ns/prov#>

select distinct ?thing ?label ?description ?np ?date ?pubkey ?qualifier ?qualification_np (group_concat(distinct ?recommender; separator=\" \") as ?recommenders) (group_concat(distinct ?recommendation_np; separator=\" \") as ?recommendation_nps) (count(distinct ?recommender) as ?recommender_count) (sample(?fairAssessmentLevel) as ?fairAssessmentLevel) (sample(?fairAssessmentLevelNp) as ?fairAssessmentLevelNp) where {
  graph npa:graph {
    <https://w3id.org/np/RA27Uhopq4MHZziL2lKXX-wTb1jz4KVLbHaupxyAcCt9Y> npa:hasValidSignatureForPublicKey ?curators_np_pk .
    ?latest_curators_np npa:hasValidSignatureForPublicKey ?curators_np_pk .
    filter not exists { ?latest_curators_npx npx:invalidates ?latest_curators_np ; npa:hasValidSignatureForPublicKey ?curators_np_pk . }
    ?latest_curators_np np:hasAssertion ?latest_curators_assertion .
  }
  graph npa:networkGraph {
    ?latest_curators_np (npx:supersedes)* <https://w3id.org/np/RA27Uhopq4MHZziL2lKXX-wTb1jz4KVLbHaupxyAcCt9Y> .
    filter not exists { ?latest_curators_npxx npx:supersedes ?latest_curators_np }
  }
  
  graph npa:graph {
    ?np npx:hasNanopubType ?type_iri .
    
    # Map the optional input to a standard variable.
    # If empty, the templating engine deletes this line, leaving ?input_type unbound.
    BIND(?__type_iri AS ?input_type)
    
    # Safely evaluate using the standard variable
    filter (
      (bound(?input_type) && ?type_iri = ?input_type) || 
      (!bound(?input_type) && ?type_iri != fip:Digital-Object-Type)
    )
    
    ?np npa:hasValidSignatureForPublicKey ?pubkey .
    filter not exists { ?retraction npx:retracts ?np ; npa:hasValidSignatureForPublicKey ?pubkey . }
    filter not exists { ?newversion npx:supersedes ?np ; npa:hasValidSignatureForPublicKey ?pubkey . }
    ?np (npx:introduces|npx:describes) ?thing .
    ?np rdfs:label ?label .
    ?np dct:description ?description .
    ?np dct:created ?date .
    filter(str(?date) > \"2022\")
  }
  bind(concat(\" \",lcase(str(?label)),\" \",lcase(str(?description)),\" \") as ?text)
  filter( contains(?text, lcase(str(?_searchterm))) )
  
  optional {
    graph npa:graph {
      ?disapproval npa:hasValidSignatureForPublicKey ?dpubkey .
    }
    graph ?latest_curators_assertion {
      ?dpubkeys npx:hasPublicKey ?dpubkey .
    }
    graph npa:graph {
      filter not exists { ?disapproval_x npx:invalidates ?disapproval ; npa:hasValidSignatureForPublicKey ?dpubkey . }
      ?disapproval np:hasAssertion ?da .
    }
    graph ?da {
      ?dsomebody ( npx:disapproves-of | npx:disapprovesOf ) ?np .
    }
  } filter(!bound(?disapproval))  # Faster than \"filter not exists\" for some reason

  optional {
    graph npa:graph {
      ?recommendation_np npx:hasNanopubType fip:recommended-by .
      ?recommendation_np npa:hasValidSignatureForPublicKey ?rpubkey .
      filter not exists { ?recommendation_np_x npx:invalidates ?recommendation_np ; npa:hasValidSignatureForPublicKey ?rpubkey . }
      ?recommendation_np np:hasAssertion ?ra .
      ?recommendation_np np:hasProvenance ?rp .
    }
    graph ?ra {
      ?thing fip:recommended-by ?recommender .
    }
    graph ?rp {
      ?ra prov:wasDerivedFrom ?rfip_np .
    }
    graph npa:graph {
      ?rfip_np npx:hasNanopubType fip:Reference-FAIR-Implementation-Profile .
      ?rfip_np npa:hasValidSignatureForPublicKey ?rfip_pubkey .
      ?latest_rfip_np npa:hasValidSignatureForPublicKey ?rfip_pubkey .
      filter not exists { ?latest_rfip_npx npx:invalidates ?latest_rfip_np ; npa:hasValidSignatureForPublicKey ?rfip_pubkey . }
    }
    graph npa:networkGraph {
      ?latest_rfip_np (npx:supersedes)* ?rfip_np .
    }
    graph ?rfip_qa {
      ?rfip_qualifier npx:qualifies ?latest_rfip_np .
    }
    graph npa:graph {
      ?rfip_qualification_np np:hasAssertion ?rfip_qa .
      ?rfip_qualification_np npx:hasNanopubType npx:qualifies .
      ?rfip_qualification_np npa:hasValidSignatureForPublicKey ?rfip_qpubkey .
      filter not exists { ?rfip_qualification_np_x npx:invalidates ?rfip_qualification_np ; npa:hasValidSignatureForPublicKey ?rfip_qpubkey . }
    }
    graph ?latest_curators_assertion {
      ?rfip_qpubkeys npx:hasPublicKey ?rfip_qpubkey .
    }
  }
  optional {
    graph npa:graph {
      ?qualification_np npx:hasNanopubType npx:qualifies .
      ?qualification_np npa:hasValidSignatureForPublicKey ?qpubkey .
    }
    graph ?latest_curators_assertion {
      ?qpubkeys npx:hasPublicKey ?qpubkey .
    }
    graph npa:graph {
      filter not exists { ?qualification_np_x npx:invalidates ?qualification_np ; npa:hasValidSignatureForPublicKey ?qpubkey . }
      ?qualification_np np:hasAssertion ?qa .
    }
    graph ?qa {
      ?qualifier npx:qualifies ?np .
    }
  }

  optional {
    graph npa:graph {
      ?fairAssessmentLevelNp npx:hasNanopubType fip:has-FAIR-assessment .
      ?fairAssessmentLevelNp npa:hasValidSignatureForPublicKey ?lpubkey .
    }
    graph ?latest_curators_assertion {
      ?lpubkeys npx:hasPublicKey ?lpubkey .
    }
    graph npa:graph {
      filter not exists { ?fairAssessmentLevelNp_x npx:invalidates ?fairAssessmentLevelNp ; npa:hasValidSignatureForPublicKey ?lpubkey . }
      ?fairAssessmentLevelNp np:hasAssertion ?la .
    }
    graph ?la {
      ?thing fip:has-FAIR-assessment ?fairAssessmentLevel .
    }
  } filter(!bound(?levelNp))  # Faster than \"filter not exists\" for some reason

}
group by ?thing ?label ?description ?np ?date ?pubkey ?retraction ?newversion ?qualifier ?qualification_np
order by desc(?recommender_count) asc(?label)""" .
}

sub:provenance {
  sub:assertion prov:wasAttributedTo orcid:0000-0002-1267-0234 .
}

sub:pubinfo {
  orcid:0000-0002-0319-6542 foaf:name "Dario Bijker" .
  
  orcid:0000-0002-1267-0234 foaf:name "Tobias Kuhn" .
  
  this: dct:created "2026-08-20T11:52:12.628Z"^^xsd:dateTime;
    dct:creator orcid:0000-0002-0319-6542, orcid:0000-0002-1267-0234;
    dct:license <https://creativecommons.org/publicdomain/zero/1.0/>;
    npx:embeds sub:find-gofair-qualified-things-valid;
    npx:supersedes <https://w3id.org/np/RANLKie5z_zkNgFJLPjjqZmZLwrgtpyIdBQ4TsrxUWEEk>;
    npx:wasCreatedAt <https://nanodash.knowledgepixels.com/>;
    prov:wasDerivedFrom <https://w3id.org/np/RA9rho2HHeT5zl2z7dk6ntdzCE3CWYHfdqdg10dCk5kJc>,
      <https://w3id.org/np/RAQjW2MXoE9fSzp5dLH2l5VrcDBNJSeaMvsjHINp-FaAM>, <https://w3id.org/np/RAbagGprLwYUsKq1Ae6mqRqzsXQI3jx8K6I4zPwPUy7V0>;
    nt:wasCreatedFromProvenanceTemplate <https://w3id.org/np/RA7lSq6MuK_TIC6JMSHvLtee3lpLoZDOqLJCLXevnrPoU>;
    nt:wasCreatedFromPubinfoTemplate <https://w3id.org/np/RACJ58Gvyn91LqCKIO9zu1eijDQIeEff28iyDrJgjSJF8>,
      <https://w3id.org/np/RAMEgudZsQ1bh1fZhfYnkthqH6YSXpghSE_DEN1I-6eAI>, <https://w3id.org/np/RARW4MsFkHuwjycNElvEVtuMjpf4yWDL10-0C5l2MqqRQ>,
      <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 "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCfUo0FLu1y2EeueL40lqkVdm9fTJa6WhF6MhyjhKAagbuaWe1wwyk453ot8KAQ3aHtL3B8Ze/aLf+wHrBhS0nz4wS6urc8ksIzlLCoa9KIfa0JuQunBLFptV0U9fTR8kDlPoB+klNrUfzeCXmkdgnnUiiwBoN+j1eN87XMSHKI3wIDAQAB";
    npx:hasSignature "C1cq4uCypKGHs5RdAkyD0OaqjSUZJfNP829+VPJy37y0W3V9XUhqEwau1NDqBMRR8Cl1yvnHZv6JUVy2cMWWBxv2lRcoMdt3gkHyOOyInmZqLlWNU9yRmBXkgLyIFrfwf8jItfnGPBVuzEKnS4bb3VR2jr5FuZonQrDYcCbL4Wk=";
    npx:hasSignatureTarget this:;
    npx:signedBy orcid:0000-0002-0319-6542 .
}