@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:fip-search a grlc:grlc-query; dct:description "Full-text search over FAIR Implementation Profiles (FIPs): matches the query against the FIP nanopublications (label, description and other literals), and returns the FIP, its declaring community (name only), version, date, a checkmark when the nanopublication is qualified by the GO FAIR Foundation, and the match score. Reference FIPs are included. Example, invalidated and superseded nanopublications are excluded."; dct:license ; rdfs:label "FIP search"; 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 ?fip (min(?fip_label) as ?fip_label) (min(?community) as ?community) (min(?community_label) as ?community_label) (min(?version) as ?version) (min(?date) as ?date) (max(?qualified_x) as ?qualified) (max(?score) as ?score) (min(?np) as ?np) (\"^\" as ?np_label) where { { select ?np ?fip_label ?date (max(?score_x) as ?score) where { graph npa:graph { ?np npx:hasNanopubType fip:FAIR-Implementation-Profile ; rdfs:label ?fip_label ; npa:hasValidSignatureForPublicKey ?pk ; dct:created ?date . filter not exists { ?np npx:hasNanopubType npx:ExampleNanopub . } filter not exists { ?x npx:invalidates ?np ; npa:hasValidSignatureForPublicKey ?pk . } } ?np search:matches [ search:query ?_query ; search:property npa:hasFilterLiteral ; search:score ?score_x ] . } group by ?np ?fip_label ?date order by desc(?score) limit 50 } service { graph npa:graph { ?np np:hasAssertion ?a ; npx:introduces ?fip . } graph ?a { ?fip fip:declared-by ?community . optional { ?fip schema:version| ?version . } } } optional { service { graph npa:graph { ?cnp 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 { { select ?qpk where { service { select distinct ?qpk 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 ?curators_a { ?qk npx:hasPublicKey ?qpk . } } } } } service { graph npa:graph { ?qnp np:hasAssertion ?qa ; npa:hasValidSignatureForPublicKey ?qpk . filter not exists { ?qx npx:invalidates ?qnp ; npa:hasValidSignatureForPublicKey ?qpk . } } graph ?qa { ?qualifier npx:qualifies ?np . } values ?qualifier { } } } bind(if(bound(?qnp), \"✓\", \"\") as ?qualified_x) } group by ?fip order by desc(?score) """ . } 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-11T09:29:09Z"^^xsd:dateTime; dct:creator ; dct:license ; npx:embeds sub:fip-search; rdfs:label "FIP search"; 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 "Mz6HFVRhQTKvXgQcmkux72S13c9wixn1d9spnVPwclu/XZ9AR9GPuphBTUN2yJc86yjtdjKPjcaeDmxYiWBKFheuIU/OPn8EUzhNHMsfk+lkbsZd5Tpepu3i7kzTcKCFUvEPTRDVOw20XqcchYhs+2Kf31fR+5PyTqIcBP+HRjdZ2BPIHWK4WJkGIsWj4KEg2bKqqF4f51GkqJpnYR/x2zZ4H8GvFF42WDlp96hDJBDO+pivo9zZtMfRXHJGnjxoV9FBymwZVQXVpJezTtX+/7G6rlzUryPMMWqRd7rIMQan5/NoIJCBjwflqB33yuf5+Zior88xDQskuPMmCPS6Zw=="; npx:hasSignatureTarget this:; npx:signedBy . }