. . . . "Returns an SVG rendering of the FAIRplus-DSM level-by-dimension grid for one dataset: the three maturity dimensions as rows, the six maturity levels as columns, and in each cell the number of that cell's indicators met out of the total, coloured by the proportion. Level 0 holds absence indicators, so there 'met' means the absence does not hold. A band under the grid marks the levels reached. Only the newest non-invalidated version of the assessment, of each verdict and of each indicator definition is used." . . . "Get the maturity grid of a dataset" . . "prefix rdf: \nprefix rdfs: \nprefix xsd: \nprefix dct: \nprefix np: \nprefix npa: \nprefix npx: \nprefix dsm: \nselect ?title ?svg ?np ?np_label\nwhere {\n {\n select ?assessment (max(?rank) as ?maxrank) where {\n values ?_dataset_multi_iri {}\n graph npa:graph {\n ?anp0 npx:hasNanopubType dsm:MaturityAssessment ;\n npa:hasValidSignatureForPublicKeyHash ?apk ;\n dct:created ?ad1 ; npx:introduces ?assessment ; np:hasAssertion ?aa1 .\n filter not exists { ?ainv npx:invalidates ?anp0 ; npa:hasValidSignatureForPublicKeyHash ?apk . }\n }\n graph ?aa1 { ?assessment dsm:assessedDataset ?_dataset_multi_iri . }\n bind(concat(str(?ad1), \"|\", str(?anp0)) as ?rank)\n } group by ?assessment\n }\n graph npa:graph {\n ?np npx:hasNanopubType dsm:MaturityAssessment ;\n dct:created ?ad2 ; npx:introduces ?assessment ; np:hasAssertion ?ag .\n }\n filter(concat(str(?ad2), \"|\", str(?np)) = ?maxrank)\n optional { graph ?ag { ?assessment dsm:achievedMaturityLevel ?alvl } }\n bind(coalesce(?alvl, ) as ?achieved)\n optional {\n { select (?t as ?achieved) (min(?n) as ?anum) where {\n graph npa:graph { ?lnp npx:introduces ?t ; np:hasAssertion ?la }\n graph ?la { ?t a dsm:MaturityLevel ; dsm:levelNumber ?n }\n } group by ?t }\n }\n bind(coalesce(?anum, 0) as ?achievedNum)\n {\n select ?assessment (group_concat(?cell; separator=\"\") as ?cells) where {\n {\n select ?assessment ?dimcode ?lvlnum\n (count(distinct ?verdict) as ?total) (sum(?okv) as ?nok)\n where {\n {\n select ?verdict (max(?vrank) as ?vmax) where {\n graph npa:graph {\n ?vn npx:hasNanopubType dsm:IndicatorVerdict ;\n npa:hasValidSignatureForPublicKeyHash ?vpk ;\n dct:created ?vd1 ; npx:introduces ?verdict .\n filter not exists { ?vi npx:invalidates ?vn ; npa:hasValidSignatureForPublicKeyHash ?vpk . }\n }\n bind(concat(str(?vd1), \"|\", str(?vn)) as ?vrank)\n } group by ?verdict\n }\n graph npa:graph {\n ?vnp npx:hasNanopubType dsm:IndicatorVerdict ;\n dct:created ?vd2 ; npx:introduces ?verdict ; np:hasAssertion ?va .\n }\n filter(concat(str(?vd2), \"|\", str(?vnp)) = ?vmax)\n graph ?va {\n ?assessment dsm:hasVerdict ?verdict .\n ?verdict dsm:forIndicator ?indicator ; dsm:verdictValue ?val .\n }\n {\n select ?indicator (max(?irank) as ?imax) where {\n graph npa:graph {\n ?in0 npx:hasNanopubType dsm:MaturityIndicator ;\n npa:hasValidSignatureForPublicKeyHash ?ipk ;\n dct:created ?id1 ; npx:introduces ?indicator .\n filter not exists { ?ii npx:invalidates ?in0 ; npa:hasValidSignatureForPublicKeyHash ?ipk . }\n }\n bind(concat(str(?id1), \"|\", str(?in0)) as ?irank)\n } group by ?indicator\n }\n graph npa:graph {\n ?inp npx:hasNanopubType dsm:MaturityIndicator ;\n dct:created ?id2 ; npx:introduces ?indicator ; np:hasAssertion ?ia .\n }\n filter(concat(str(?id2), \"|\", str(?inp)) = ?imax)\n graph ?ia { ?indicator dsm:hasMaturityLevel ?level ; dsm:inDimension ?dimension }\n { select (?t as ?level) (min(?n) as ?lvlnum) where {\n graph npa:graph { ?lnp2 npx:introduces ?t ; np:hasAssertion ?la2 }\n graph ?la2 { ?t a dsm:MaturityLevel ; dsm:levelNumber ?n }\n } group by ?t }\n { select (?t as ?dimension) (min(?c) as ?dimcode) where {\n graph npa:graph { ?dnp npx:introduces ?t ; np:hasAssertion ?da }\n graph ?da { ?t a dsm:MaturityDimension ; dsm:dimensionCode ?c }\n } group by ?t }\n bind(if(?lvlnum = 0,\n if(?val = dsm:NotSatisfied, 1, 0),\n if(?val = dsm:Satisfied, 1, if(?val = dsm:NotApplicable, 1, 0))) as ?okv)\n } group by ?assessment ?dimcode ?lvlnum\n }\n bind(150 + ?lvlnum * 86 as ?x)\n bind(26 + if(?dimcode = \"R\", 0, if(?dimcode = \"C\", 1, 2)) * 48 as ?y)\n bind(xsd:double(?nok) / xsd:double(?total) as ?ratio)\n bind(if(?ratio >= 1.0, \"#2e7d32\",\n if(?ratio >= 0.75, \"#66bb6a\",\n if(?ratio >= 0.5, \"#c5e1a5\",\n if(?ratio > 0.0, \"#ffe082\", \"#ef9a9a\")))) as ?fill)\n bind(if(?ratio >= 1.0, \"#ffffff\", \"#22292f\") as ?tcol)\n bind(concat(\n '',\n '', str(?nok), '/', str(?total), '') as ?cell)\n } group by ?assessment\n }\n bind(if(?achievedNum >= 1,\n concat('',\n 'reached'),\n '') as ?band)\n bind(concat(\n '',\n 'Level 0',\n 'Level 1',\n 'Level 2',\n 'Level 3',\n 'Level 4',\n 'Level 5',\n 'Representation & format',\n 'Content & context',\n 'Hosting environment',\n ?cells, ?band,\n '',\n '',\n '',\n '',\n '',\n 'none',\n 'some',\n 'half',\n 'most',\n 'all',\n '',\n 'Each cell: indicators met / total. At level 0, which lists absence indicators, ',\n '"met" means the absence does not hold.',\n '',\n '') as ?svg)\n bind(concat(\"Reached Level \", str(?achievedNum), \" of 5\") as ?title)\n bind(\"^\" as ?np_label)\n}\n" . . "Tobias Kuhn" . "2026-09-07T07:49:30Z"^^ . . . . "Get the maturity grid of a dataset" . . . . . "RSA" . "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwUtewGCpT5vIfXYE1bmf/Uqu1ojqnWdYxv+ySO80ul8Gu7m8KoyPAwuvaPj0lvPtHrg000qMmkxzKhYknEjq8v7EerxZNYp5B3/3+5ZpuWOYAs78UnQVjbHSmDdmryr4D4VvvNIiUmd0yxci47dTFUj4DvfHnGd6hVe5+goqdcwIDAQAB" . "K7++dKDeM8KocEOE0cbreUhtt0E5oYhGUoVDFOaj2qFZ8ytVcUE1qVJF5H80IFo/IQTFS3dBC5P//2cTrrJcmBeeq/MA+KpWY9VY8qAnuhefC17zdk1nZfbucAG3duCLaLiI5S7Etbq7COEzwCnzWZTexMTePqo9WlVeSQQuxtY=" . . .