@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-recommended-fsrs-of-type a grlc:grlc-query; dct:description "For a kind of FAIR Supporting Resource, lists the resources of that kind that a FAIR Implementation Community recommends, with the recommending communities and whether the resource has been qualified by a curator. The per-type counterpart of the space-level recommended-FSR listing, restricted by an added npx:hasNanopubType filter on the resource nanopublication."; dct:license ; rdfs:label "Get the recommended FSRs of a type"; 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 ?fsr (min(?fsr_label) as ?fsr_label) (group_concat(distinct str(?type); separator=\" \") as ?types_multi_iri) (group_concat(distinct ?type_label; separator=\"\\n\") as ?types_label_multi) (group_concat(distinct str(?community); separator=\" \") as ?recommended_by_multi_iri) (group_concat(distinct ?community_label; separator=\"\\n\") as ?recommended_by_label_multi) (max(?qualified_x) as ?qualified) (min(?np) as ?np) (\"^\" as ?np_label) where { { 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 } } } } graph npa:graph { ?rnp npx:hasNanopubType fip:recommended-by ; npa:hasValidSignatureForPublicKey ?rpk ; np:hasAssertion ?ra . filter not exists { ?rx npx:invalidates ?rnp ; npa:hasValidSignatureForPublicKey ?rpk . } } graph ?ra { ?fsr fip:recommended-by ?community . } graph npa:graph { ?np npx:introduces|npx:describes ?fsr ; rdfs:label ?fsr_label ; npa:hasValidSignatureForPublicKey ?pk ; dct:created ?date ; np:hasAssertion ?a . ?np npx:hasNanopubType ?_type_iri . ?np npx:hasNanopubType ?fsr_type . values ?fsr_type { fip:FAIR-Enabling-Resource fip:FAIR-Supporting-Resource } 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:introduces|npx:describes ?fsr ; npa:hasValidSignatureForPublicKey ?pk2 ; dct:created ?date2 . ?np2 npx:hasNanopubType ?fsr_type2 . values ?fsr_type2 { fip:FAIR-Enabling-Resource fip:FAIR-Supporting-Resource } filter not exists { ?np2 npx:hasNanopubType npx:ExampleNanopub . } filter not exists { ?x2 npx:invalidates ?np2 ; npa:hasValidSignatureForPublicKey ?pk2 . } filter(?date2 > ?date) } } filter not exists { graph ?da { ?disapprover npx:disapprovesOf ?np . } graph npa:graph { ?dnp np:hasAssertion ?da ; npa:hasValidSignatureForPublicKey ?dpk . filter not exists { ?dx npx:invalidates ?dnp ; npa:hasValidSignatureForPublicKey ?dpk . } } graph ?curators_a { ?dk npx:hasPublicKey ?dpk . } } optional { graph npa:graph { ?np npx:hasNanopubType ?type . } { select distinct ?type (min(?tl) as ?type_label) where { ?type rdfs:subClassOf+ fip:FAIR-Supporting-Resource . filter(strstarts(str(?type), \"https://w3id.org/fair/fip/terms/\")) filter(?type not in (fip:FAIR-Enabling-Resource, fip:FAIR-Supporting-Resource, fip:Available-FAIR-Enabling-Resource, fip:Available-FAIR-Supporting-Resource, fip:FAIR-Enabling-Resource-to-be-Developed, fip:FAIR-Supporting-Resource-to-be-Developed)) graph npa:graph { ?tnp npx:introduces ?type ; np:hasAssertion ?ta . } graph ?ta { ?type rdfs:label ?tl . } } group by ?type } } optional { graph npa:graph { ?cnp npx:hasNanopubType fip:FAIR-Implementation-Community ; npx:introduces|npx:describes ?community ; np:hasAssertion ?ca ; npa:hasValidSignatureForPublicKey ?cpk . filter not exists { ?cx npx:invalidates ?cnp ; npa:hasValidSignatureForPublicKey ?cpk . } } graph ?ca { ?community rdfs:label ?community_label . } } optional { graph ?qa { ?qualifier npx:qualifies ?np . } values ?qualifier { } graph npa:graph { ?qnp np:hasAssertion ?qa ; npa:hasValidSignatureForPublicKey ?qpk . filter not exists { ?qx npx:invalidates ?qnp ; npa:hasValidSignatureForPublicKey ?qpk . } } graph ?curators_a { ?qk npx:hasPublicKey ?qpk . } } bind(if(bound(?qnp), \"✓\", \"\") as ?qualified_x) } group by ?fsr order by ?fsr_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-09-18T08:17:05Z"^^xsd:dateTime; dct:creator orcid:0000-0002-1267-0234; dct:license ; npx:embeds sub:get-recommended-fsrs-of-type; rdfs:label "Get the recommended FSRs of a type"; prov:wasDerivedFrom ; nt:wasCreatedFromProvenanceTemplate ; nt:wasCreatedFromPubinfoTemplate , , ; nt:wasCreatedFromTemplate . sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB"; npx:hasSignature "fEjwjqTZQ8XsEEPWTtZ9i0PZyLMmXqLzlM81Ox2rPxmo8j2qN/7BkuNzKIDjbTgVmZnzy06/1jMqZiyt5E81nm6gX7frcRYVVWoJigcXMO+x6FS7a41XX1ThyPmgj3bQy0HvkQ3TdzRnnX0/pRX+ZGYSx3vc2OzAWHZjcy4rQ0g="; npx:hasSignatureTarget this:; npx:signedBy orcid:0000-0002-1267-0234 . }