@prefix this: . @prefix sub: . @prefix np: . @prefix grlc: . @prefix dct: . @prefix nt: . @prefix npx: . @prefix xsd: . @prefix rdfs: . @prefix orcid: . @prefix prov: . @prefix foaf: . sub:Head { this: a np:Nanopublication; np:hasAssertion sub:assertion; np:hasProvenance sub:provenance; np:hasPublicationInfo sub:pubinfo . } sub:assertion { sub:get-fair-communities-overview a grlc:grlc-query; dct:description "Returns all FAIR Implementation Communities from their latest non-invalidated nanopublications: the community, its type (emerging, mature, domain-specific, cross-domain, specific), its top-level research domains (the SRAO roots its domains fall under, read from the materialized top-level links of the Research domains (SRAO) resource of the FAIR Implementation Space) and the number of its domains (domains are taken from every non-invalidated nanopublication introducing or describing the community), the number of its FIPs (counted as in the FIPs list: FIPs introduced by a FIP nanopublication, without reference FIPs and curator-disapproved ones), and whether it has a reference FIP (rFIP). Example nanopublications are excluded, and so are communities whose newest nanopublication a GO FAIR Foundation curator has disapproved of (npx:disapprovesOf, signed with a key from the curators list and not invalidated), as in the FSR lists and the FIP Wizard lookup."; dct:license ; rdfs:label "Get FAIR communities overview"; grlc:endpoint ; grlc:sparql """prefix rdf: prefix rdfs: prefix np: prefix npa: prefix npx: prefix xsd: prefix dct: prefix owl: prefix foaf: prefix prov: prefix skos: prefix schema: prefix gen: prefix fip: prefix tpff: prefix search: select ?community (min(?community_label) as ?community_label) (group_concat(distinct if(bound(?ctype_label), str(?ctype), ?no_value); separator=\" \") as ?type_multi_iri) (group_concat(distinct ?ctype_label; separator=\"\\n\") as ?type_label_multi) (min(?domains_iri_x) as ?domains_multi_iri) (min(?domains_lbl_x) as ?domains_label_multi) (coalesce(min(?subdomains_x), 0) as ?subdomains) (coalesce(min(?fips_x), 0) as ?fips) (min(?rfip_x) as ?rfip) (min(?np) as ?np) (\"^\" as ?np_label) where { { select ?community ?np ?a where { graph npa:graph { ?np npx:hasNanopubType fip:FAIR-Implementation-Community ; npx:introduces ?community ; npa:hasValidSignatureForPublicKey ?pk ; dct:created ?date ; np:hasAssertion ?a . filter(str(?date) > \"2022\") filter not exists { ?np npx:hasNanopubType npx:ExampleNanopub . } filter not exists { ?x npx:invalidates ?np ; npa:hasValidSignatureForPublicKey ?pk . } filter not exists { ?np2 npx:hasNanopubType fip:FAIR-Implementation-Community ; npx:introduces ?community ; npa:hasValidSignatureForPublicKey ?pk2 ; dct:created ?date2 . filter not exists { ?x2 npx:invalidates ?np2 ; npa:hasValidSignatureForPublicKey ?pk2 . } filter(?date2 > ?date) } } { select ?curators_a where { graph npa:graph { npa:hasValidSignatureForPublicKey ?curators_pk . ?curators_np npa:hasValidSignatureForPublicKey ?curators_pk ; np:hasAssertion ?curators_a . filter not exists { ?curators_x npx:invalidates ?curators_np ; npa:hasValidSignatureForPublicKey ?curators_pk . } } graph npa:networkGraph { ?curators_np (npx:supersedes)* . filter not exists { ?curators_y npx:supersedes ?curators_np } } } } filter not exists { graph ?dac { ?disapproverc npx:disapprovesOf ?np . } graph npa:graph { ?dnpc np:hasAssertion ?dac ; npa:hasValidSignatureForPublicKey ?dpkc . filter not exists { ?dxc npx:invalidates ?dnpc ; npa:hasValidSignatureForPublicKey ?dpkc . } } graph ?curators_a { ?dkc npx:hasPublicKey ?dpkc . } } } } graph ?a { ?community rdfs:label ?community_label . optional { ?community a ?ctype . filter(?ctype != fip:FAIR-Implementation-Community && strstarts(str(?ctype), \"https://w3id.org/fair/fip/terms/\")) } } optional { { select ?ctype (min(?ctl) as ?ctype_label) where { ?ctype rdfs:subClassOf fip:FAIR-Implementation-Community . graph npa:graph { ?ctnp npx:introduces ?ctype ; np:hasAssertion ?cta . } graph ?cta { ?ctype rdfs:label ?ctl . } } group by ?ctype } } optional { { select ?community (group_concat(distinct str(?top); separator=\" \") as ?domains_iri_x) (group_concat(distinct ?top_label; separator=\"\\n\") as ?domains_lbl_x) (count(distinct ?domain2) as ?subdomains_x) where { graph npa:graph { ?cnp2 npx:hasNanopubType fip:FAIR-Implementation-Community ; np:hasAssertion ?ca2 ; npa:hasValidSignatureForPublicKey ?cpk2 . filter not exists { ?cx2 npx:invalidates ?cnp2 ; npa:hasValidSignatureForPublicKey ?cpk2 . } } graph npa:graph { ?cnp2 npx:introduces|npx:describes ?community . } graph ?ca2 { ?community fip:has-research-domain ?domain2 . } optional { graph npa:graph { ?srao_np npx:describes ; npa:hasValidSignatureForPublicKeyHash \"9069576dbf1967483c9a3095fb8a7c38b4770974a1733c681d5969e14e455e2b\" ; np:hasAssertion ?srao_a . filter not exists { ?srao_x npx:invalidates ?srao_np ; npa:hasValidSignatureForPublicKeyHash \"9069576dbf1967483c9a3095fb8a7c38b4770974a1733c681d5969e14e455e2b\" . } } graph ?srao_a { { ?domain2 skos:broaderTransitive ?top . ?top skos:topConceptOf . } union { ?domain2 skos:topConceptOf . bind(?domain2 as ?top) } ?top rdfs:label ?top_label . } } } group by ?community } } optional { { select ?community (count(distinct ?fip) as ?fips_x) where { graph npa:graph { ?fipnp npx:hasNanopubType fip:FAIR-Implementation-Profile ; npx:introduces ?fip ; npa:hasValidSignatureForPublicKey ?fpk ; np:hasAssertion ?fa . filter not exists { ?fipnp npx:hasNanopubType fip:Reference-FAIR-Implementation-Profile . } filter not exists { ?fipnp npx:hasNanopubType npx:ExampleNanopub . } filter not exists { ?fx npx:invalidates ?fipnp ; npa:hasValidSignatureForPublicKey ?fpk . } } graph ?fa { ?fip a fip:FAIR-Implementation-Profile ; rdfs:label ?fip_label ; fip:declared-by ?community . } { select ?curators_a where { graph npa:graph { npa:hasValidSignatureForPublicKey ?curators_pk . ?curators_np npa:hasValidSignatureForPublicKey ?curators_pk ; np:hasAssertion ?curators_a . filter not exists { ?curators_x npx:invalidates ?curators_np ; npa:hasValidSignatureForPublicKey ?curators_pk . } } graph npa:networkGraph { ?curators_np (npx:supersedes)* . filter not exists { ?curators_y npx:supersedes ?curators_np } } } } filter not exists { graph ?daf { ?disapproverf npx:disapprovesOf ?fipnp . } graph npa:graph { ?dnpf np:hasAssertion ?daf ; npa:hasValidSignatureForPublicKey ?dpkf . filter not exists { ?dxf npx:invalidates ?dnpf ; npa:hasValidSignatureForPublicKey ?dpkf . } } graph ?curators_a { ?dkf npx:hasPublicKey ?dpkf . } } } group by ?community } } optional { { select distinct ?community ?rfip_x where { graph npa:graph { ?rnp npx:hasNanopubType fip:Reference-FAIR-Implementation-Profile ; npx:introduces ?rfip ; npa:hasValidSignatureForPublicKey ?rpk ; np:hasAssertion ?ra . filter not exists { ?rx npx:invalidates ?rnp ; npa:hasValidSignatureForPublicKey ?rpk . } } graph ?ra { ?rfip a fip:Reference-FAIR-Implementation-Profile ; rdfs:label ?rfip_label ; fip:declared-by ?community . } bind(\"✓\" as ?rfip_x) } } } } group by ?community order by ?community_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-11-04T08:59:07Z"^^xsd:dateTime; dct:creator ; dct:license ; npx:embeds sub:get-fair-communities-overview; npx:supersedes ; rdfs:label "Get FAIR communities overview"; nt:wasCreatedFromProvenanceTemplate ; nt:wasCreatedFromPubinfoTemplate , ; nt:wasCreatedFromTemplate . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzZAkv4Mu1YSUxQMriBnhYunqosX5wpuQ3FjUyzW8wTC51wjCmhsChyhS+mCx7Od+2MTDpdhxDWA+pH1r9AX508X2rIY/sbpMS+pd56e0qKPQ0t4folln1TgamPN9iOlY/yLc2x27AdipWIGXUdtL2iAcb+P/Y5dQS2AkHMS3lP2e5JBL5/bD/10qvTLKvdsqIKts8qjuLpxr9CFbsS2gLjMkXL5D2IsJ0cL5sgmIfS1inLVxIfXrS/OgqYNFqeNznUYCVWfo0g7DKjnjiICz3omeQeJFLYwlJ6PhUhYDQS6O318DGwUCwhnuXbBbwL9evZa2I/0Pwu5xpZdNLYJ5UwIDAQAB"; npx:hasSignature "dg/Iyvkbs47Yuv6YJ4EjzvXDljwssuJWae1fvluDNDkEhEGNRpi9ShZUt+X4JKgqTEH1LTDE6WHMb/QimY54DoyFkfxi/Drsw+hQFx4DcwZygw6FWMp/u3e/oV262C22syvf2GoYlOn9ChKMvK8ggqi1Sydvt5r2tfZhJ4pumJJAQ2DffwUnC2ZGQjZankMFvz/UkS6zpQJpTvlHRFgPehhPZtR3gd1M8s4TXBIAdB3Jf3FyFay1V9Yt5S2W+QhdsKXvsYtgoKM0E8K75+aukBOd+RKH1O3rFA+KFGLkLyGX3YqEaJLpOW1c1Kq8302CREGEYkRtELyg+bgp8jt9PA=="; npx:hasSignatureTarget this:; npx:signedBy . }