. . . . "For a FAIR Implementation Profile (FIP), lists the FAIR Supporting Resources (FSRs) it declares, ordered like the FIP itself: by FAIR principle in FIP order (F1, F2, F3, F4, A1.1, A1.2, A2, I1, I2, I3, R1.1, R1.2), then the supplementary \"S\" questions (FIP-S-Question-*, answered by FIP-Supporting-Declaration and FIP-No-Choice-Supporting-Declaration nanopublications) in a fixed order, and then by resource. One row per FSR and FIP question; the data and metadata variants of a question are merged, with the scope column telling whether the FSR was declared for metadata, data or both (empty for the S questions, which have no such variants). Columns: the FIP question as a group header (principle code and the question text as in the FIP Wizard, with \"data / metadata\" where the two variants differ, and the I2 question worded as its metadata variant so that both variants share one header; for an S question \"S:\" followed by the question name derived from its identifier and, if the question term is introduced by a nanopublication with a skos:definition, that definition; the question_group column is rendered by Nanodash as a header row above the rows of that question), the FSR (labelled from its metadata nanopublication, or by its identifier), its FSR types, scope, the kind of use (current use, planned use, planned replacement), the communities recommending the FSR (recommended by), and the declaration nanopublication. A FIP is resolved through its declaration index, or, without one, through the declarations of the same community: those carrying the FIP's own version (ignoring a leading \"v\"), or else the declarations of the most recently published version. Reference FIPs (rFIPs) are no longer served by this query, and both arms skip a profile typed fip:Reference-FAIR-Implementation-Profile, the three that also carry a declaration index included. An rFIP's content is a set of recommendation nanopublications carrying neither a FIP question nor a use property, so the question grouping, the scope and the use column of this table are all empty for one; they have their own query and view instead, \"Get the FSRs recommended by a reference FIP\" and \"⭐ Recommended FSRs\". A question counts as defined only by a nanopublication that is either one of the FIP Ontology's own definition nanopublications (namespace https://w3id.org/fair/fip/np/, which is where all twenty-one FIP-Question-* terms are defined) or signed by a member of the FAIR Implementation Space: an admin named in the space's root definition RA41_bLIoJeSd…, or an agent that one of those admins granted a role of the space in a non-invalidated role-instantiation nanopublication. An agent's keys are the ones declared with npx:declaredBy in a nanopublication signed with the very key it declares, so the declaration proves possession. Pinning the root definition is what stops the admin test from being circular; the materialised space state that would answer it directly lives in the spaces repository, which holds no FIP data. Without the gate any nanopublication asserting a skos:definition for a question term would supply the heading, since the lookup has no key restriction. The ontology-namespace branch keeps the twenty-one headings independent of who holds a role today: were the membership ever to stop covering the key that signed them, a membership-only gate would blank the headings of every regular question. Supplementary \"S\" questions, which the ontology does not define, are the ones the gate actually governs; the \"Defining a FIP question\" template RAo9Hnp7fqG… produces nanopublications in the shape this lookup expects. The recommended-by column lists every community with a current fip:recommended-by recommendation of the FSR, the statement the FIP Wizard publishes for reference FIPs, from any community and not only the FIP's own; it is empty when no community recommends the FSR. A recommendation counts only if it is signed with the FIP Wizard's key (public key hash ddf0547234e3…) or by a member of the FAIR Implementation Space, determined as for the question headings, and only while it is not invalidated by its own key. A community is named by its rdfs:label with a leading short code (\"GFF | \") removed, or by its identifier." . . . "Get the FSRs declared in a FIP" . . "prefix rdf: \nprefix rdfs: \nprefix np: \nprefix npa: \nprefix npx: \nprefix xsd: \nprefix dct: \nprefix owl: \nprefix foaf: \nprefix prov: \nprefix skos: \nprefix schema: \nprefix gen: \nprefix fip: \nprefix tpff: \nprefix search: \n\nselect ?question_group ?fsr ?fsr_label ?types_multi_iri ?types_label_multi ?scope ?use ?recommended_by_multi_iri ?recommended_by_label_multi ?np ?np_label where {\n{ select ?principle (concat(min(?qbase), \": \", min(?qtext)) as ?question_group)\n ?fsr (coalesce(min(?fsr_label_x), replace(str(?fsr), \"^.*[/#]\", \"\")) as ?fsr_label)\n (group_concat(distinct str(?type); separator=\" \") as ?types_multi_iri) (group_concat(distinct ?type_label; separator=\"\\n\") as ?types_label_multi)\n (if(max(?isMD) = 1 && max(?isD) = 1, \"Metadata, Data\", if(max(?isMD) = 1, \"Metadata\", if(max(?isD) = 1, \"Data\", \"\"))) as ?scope)\n (group_concat(distinct ?use; separator=\", \") as ?use)\n (min(?dnp) as ?np) (\"^\" as ?np_label) (min(?sortkey) as ?sk)\nwhere {\n graph npa:graph {\n ?fipnp npx:introduces ?_fip_iri ; np:hasAssertion ?fa ; npa:hasValidSignatureForPublicKey ?fpk .\n filter not exists { ?fx npx:invalidates ?fipnp ; npa:hasValidSignatureForPublicKey ?fpk . }\n }\n graph ?fa { ?_fip_iri fip:declared-by ?community . optional { ?_fip_iri schema:version| ?version . } }\n {\n graph ?fa {\n ?_fip_iri fip:has-declaration-index ?index .\n filter not exists { ?_fip_iri a fip:Reference-FAIR-Implementation-Profile . }\n }\n graph npa:networkGraph { ?index npx:includesElement ?dnp . }\n } union {\n graph ?fa {\n filter not exists { ?_fip_iri fip:has-declaration-index ?ix . }\n filter not exists { ?_fip_iri a fip:Reference-FAIR-Implementation-Profile . }\n }\n {\n select ?community (?dvC as ?chosenRawVersion) where {\n graph npa:graph { ?fnpB npx:introduces ?_fip_iri ; np:hasAssertion ?faB . }\n graph ?faB {\n ?_fip_iri fip:declared-by ?community .\n optional { ?_fip_iri schema:version| ?vB . }\n }\n bind(replace(str(coalesce(?vB, \"\")), \"^[vV][.]?\", \"\") as ?nverB)\n graph ?daC { ?declC fip:declared-by ?community ; schema:version| ?dvC . }\n graph npa:graph { ?dnpC np:hasAssertion ?daC ; npx:hasNanopubType fip:FIP-Declaration ; dct:created ?dtC . }\n bind(if(replace(str(?dvC), \"^[vV][.]?\", \"\") = ?nverB, 0, 1) as ?pref)\n } order by ?pref desc(?dtC) limit 1\n }\n graph ?da0 { ?decl0 fip:declared-by ?community ; schema:version| ?chosenRawVersion . }\n graph npa:graph { ?dnp np:hasAssertion ?da0 . }\n }\n graph npa:graph { ?dnp np:hasAssertion ?da . }\n values (?useProp ?use) {\n (fip:declares-current-use-of \"current use\")\n (fip:declares-planned-use-of \"planned use\")\n (fip:declares-planned-replacement-of \"planned replacement\")\n (fip:declares-replacement-from \"replacement from\")\n (fip:declares-replacement-to \"replacement to\")\n }\n graph ?da {\n ?decl fip:refers-to-question ?question ; ?useProp ?fsr .\n }\n graph npa:graph {\n ?dnp npx:hasNanopubType ?dtype ; npa:hasValidSignatureForPublicKey ?dpk .\n filter(?dtype in (fip:FIP-Declaration, fip:FIP-Supporting-Declaration, fip:FIP-No-Choice-Supporting-Declaration))\n filter not exists { ?dx npx:invalidates ?dnp ; npa:hasValidSignatureForPublicKey ?dpk . }\n }\n bind(strstarts(str(?question), \"https://w3id.org/fair/fip/terms/FIP-S-Question-\") as ?isS)\n bind(replace(str(?question), \"^.*FIP-(S-)?Question-\", \"\") as ?qcode)\n bind(if(?isS, \"S\", replace(?qcode, \"-(MD|D)$\", \"\")) as ?qbase)\n bind(if(!?isS && strends(?qcode, \"-MD\"), 1, 0) as ?isMD)\n bind(if(!?isS && strends(?qcode, \"-D\"), 1, 0) as ?isD)\n bind(if(?isS, ?question, iri(concat(\"https://w3id.org/fair/principles/terms/\", ?qbase))) as ?principle)\n optional {\n { # the definition nanopublications of the FIP Ontology itself\n graph npa:graph { ?qnp npx:introduces ?question ; np:hasAssertion ?qa . }\n filter(strstarts(str(?qnp), \"https://w3id.org/fair/fip/np/\")) }\n union\n { # or a definition signed by a member of the FAIR Implementation Space\n { select distinct ?qpk where {\n { select distinct ?member where {\n { graph npa:graph { np:hasAssertion ?spa . }\n graph ?spa { gen:hasAdmin ?member . } }\n union\n { { select distinct ?adminpk where {\n graph npa:graph { np:hasAssertion ?spa2 . }\n graph ?spa2 { gen:hasAdmin ?admin . }\n graph npa:graph { ?aknp np:hasAssertion ?aka ; npa:hasValidSignatureForPublicKey ?adminpk . }\n graph ?aka { ?akd npx:declaredBy ?admin ; npx:hasPublicKey ?adminpk . }\n } }\n graph npa:graph { ?gnp npx:hasNanopubType gen:RoleInstantiation ; np:hasAssertion ?ga ;\n npa:hasValidSignatureForPublicKey ?adminpk .\n filter not exists { ?gx npx:invalidates ?gnp ; npa:hasValidSignatureForPublicKey ?adminpk . } }\n graph ?ga { ?roleProp ?member . }\n filter(strstarts(str(?roleProp), \"https://w3id.org/kpxl/gen/terms/has\")) }\n } }\n graph npa:graph { ?mknp np:hasAssertion ?mka ; npa:hasValidSignatureForPublicKey ?qpk . }\n graph ?mka { ?mkd npx:declaredBy ?member ; npx:hasPublicKey ?qpk . }\n } }\n graph npa:graph { ?qnp npx:introduces ?question ; np:hasAssertion ?qa ; npa:hasValidSignatureForPublicKey ?qpk .\n filter not exists { ?qx npx:invalidates ?qnp ; npa:hasValidSignatureForPublicKey ?qpk . } }\n }\n graph ?qa { ?question skos:definition ?qdef . }\n }\n bind(replace(replace(replace(replace(?qdef, \" for datasets\", \" for data / metadata\"), \" your datasets\", \" your data / metadata\"), \"(for|annotate|your) metadata records\", \"$1 data / metadata\"), \"to encode your data / metadata\", \"to annotate your data / metadata\") as ?qtextDef)\n bind(replace(?qcode, \"-\", \" \") as ?qname)\n bind(if(?isS, if(bound(?qtextDef), concat(?qname, \" – \", ?qtextDef), ?qname), ?qtextDef) as ?qtext)\n bind(if(?isS, concat(\"5\", lcase(?qcode)), concat(replace(replace(replace(replace(substr(?qbase, 1, 1), \"F\", \"1\"), \"A\", \"2\"), \"I\", \"3\"), \"R\", \"4\"), ?qbase)) as ?sortkey)\n optional {\n values ?p { npx:introduces npx:describes }\n graph npa:graph {\n ?fsrnp ?p ?fsr ; rdfs:label ?fsr_label_x ; npx:hasNanopubType ?sft ; npa:hasValidSignatureForPublicKey ?spk .\n values ?sft { fip:FAIR-Enabling-Resource fip:FAIR-Supporting-Resource }\n filter not exists { ?sx npx:invalidates ?fsrnp ; npa:hasValidSignatureForPublicKey ?spk . }\n }\n optional {\n graph npa:graph { ?fsrnp npx:hasNanopubType ?type . }\n filter(strstarts(str(?type), \"https://w3id.org/fair/fip/terms/\"))\n 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))\n bind(replace(replace(str(?type), \"^.*/\", \"\"), \"-\", \" \") as ?type_label)\n }\n }\n} group by ?principle ?fsr }\n# The communities recommending each FSR (fip:recommended-by, as the FIP Wizard publishes them\n# for reference FIPs), counting any current recommendation signed by the FIP Wizard or by a\n# member of the FAIR Implementation Space.\noptional { {\n select ?fsr (group_concat(str(?rc); separator=\" \") as ?recommended_by_multi_iri)\n (group_concat(?rc_label; separator=\"\\n\") as ?recommended_by_label_multi) where {\n { select ?fsr ?rc (min(?rcl) as ?rc_label) where {\n { select (group_concat(distinct str(?mpk); separator=\" \") as ?memberKeys) where {\n { select distinct ?member where {\n { graph npa:graph { np:hasAssertion ?mspa . }\n graph ?mspa { gen:hasAdmin ?member . } }\n union\n { { select distinct ?madminpk where {\n graph npa:graph { np:hasAssertion ?mspa2 . }\n graph ?mspa2 { gen:hasAdmin ?madmin . }\n graph npa:graph { ?maknp np:hasAssertion ?maka ; npa:hasValidSignatureForPublicKey ?madminpk . }\n graph ?maka { ?makd npx:declaredBy ?madmin ; npx:hasPublicKey ?madminpk . }\n } }\n graph npa:graph { ?mgnp npx:hasNanopubType gen:RoleInstantiation ; np:hasAssertion ?mga ;\n npa:hasValidSignatureForPublicKey ?madminpk .\n filter not exists { ?mgx npx:invalidates ?mgnp ; npa:hasValidSignatureForPublicKey ?madminpk . } }\n graph ?mga { ?mroleProp ?member . }\n filter(strstarts(str(?mroleProp), \"https://w3id.org/kpxl/gen/terms/has\")) }\n } }\n graph npa:graph { ?mknp np:hasAssertion ?mka ; npa:hasValidSignatureForPublicKey ?mpk . }\n graph ?mka { ?mkd npx:declaredBy ?member ; npx:hasPublicKey ?mpk . }\n } }\n graph npa:graph {\n ?rnp npx:hasNanopubType fip:recommended-by ; np:hasAssertion ?ra ;\n npa:hasValidSignatureForPublicKey ?rpk ; npa:hasValidSignatureForPublicKeyHash ?rpkh .\n filter not exists { ?rx npx:invalidates ?rnp ; npa:hasValidSignatureForPublicKey ?rxk . filter(str(?rxk) = str(?rpk)) }\n }\n filter(str(?rpkh) = \"ddf0547234e33a887f71de3840d2a92c1d1c08d56e1a04b8a517dddc083298f7\" || contains(?memberKeys, str(?rpk)))\n graph ?ra { ?fsr fip:recommended-by ?rc . }\n optional {\n graph npa:graph { ?cnp npx:introduces|npx:describes ?rc ; np:hasAssertion ?ca . }\n graph ?ca { ?rc rdfs:label ?rcl0 . }\n }\n # \"GFF | GO FAIR Foundation community\" -> \"GO FAIR Foundation community\"\n bind(replace(coalesce(?rcl0, replace(str(?rc), \"^.*[/#]\", \"\")), \"^[^|]*[|] *\", \"\") as ?rcl)\n } group by ?fsr ?rc }\n} group by ?fsr } }\n} order by ?sk ?fsr_label\n" . . "Tobias Kuhn" . "2026-11-06T13:13:37Z"^^ . . . . . "Get the FSRs declared in a FIP" . . . . . "RSA" . "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzZAkv4Mu1YSUxQMriBnhYunqosX5wpuQ3FjUyzW8wTC51wjCmhsChyhS+mCx7Od+2MTDpdhxDWA+pH1r9AX508X2rIY/sbpMS+pd56e0qKPQ0t4folln1TgamPN9iOlY/yLc2x27AdipWIGXUdtL2iAcb+P/Y5dQS2AkHMS3lP2e5JBL5/bD/10qvTLKvdsqIKts8qjuLpxr9CFbsS2gLjMkXL5D2IsJ0cL5sgmIfS1inLVxIfXrS/OgqYNFqeNznUYCVWfo0g7DKjnjiICz3omeQeJFLYwlJ6PhUhYDQS6O318DGwUCwhnuXbBbwL9evZa2I/0Pwu5xpZdNLYJ5UwIDAQAB" . "nlIhx6Ytl/MFAPuqGTTRPDDUZgxqPZVQ3zd+8HZELJQsES9jwMsQROiLBZ4AaoqoubqVQ22q6ID8S0ee0qEoycCxYktT2Ngqmo/ZcZeioAk1Wp1szPgXI+JL6pUDDkkQIMWJVOReZ2wK4V0TZWeVvJPAzKCf2/qo3wtARRkJm+lD8YCjbpA8N0YZeX9Nf150eJpJh5P2yoLGpg2huCrMDu/i8AandY4AsoDJCFULMfAq9PWdeq+FVEmALBjlYEw+mCK9NIVD9B7EcsBBT3krm/Vwd3xY85ZNN4A21Lewpe/o4iyX4xnUt6wdSCh7PbLYVFANnqPlcnaogVR/OM+7Jw==" . . .