# Tuto MSD / Knapsack ### Update Mai 2023 Ressource TURTLE de Knapsack : https://ddbj.nig.ac.jp/public/rdf/metabobank/knapsack/dev/ fichiers TP: https://nextcloud.inrae.fr/s/MjSxdt7bRtd8A3P ## 0) Deposer le fichier csv knapsack sur le cluster - ligne de commande - spark-shell - programme spark (Jupiter ou exe depuis ara-unh-saroumane) ## 1) read/write/check/quality/stats rdf file Avec le fichier correspondant RDF de knapsack (celui-ci est fournit) utiliser SANSA via Jupiter / via programme Exemples SANSA : https://github.com/SANSA-Stack/SANSA-Stack/tree/develop/sansa-examples/sansa-examples-spark/src/main/scala/net/sansa_stack/examples/spark/rdf ## 2) Exercice Knapsack TTL Il existe 50899 metabolites dans la base rechercher : les metabolites dont la masse est supérieure 300.0 Da et inférieure à 1000 Da (count: 37117) ```sql PREFIX c_metabohub: <http://semanticweb.org/inrae/metabohub/forum/class#> PREFIX p_metabohub: <http://semanticweb.org/inrae/metabohub/forum/property#> select distinct ?metabolite ?label ?cas ?formula ?inchikey where { ?metabolite a c_metabohub:Metabolite. ?metabolite p_metabohub:mw ?mass. ?metabolite rdfs:label ?label . ?metabolite p_metabohub:cas ?cas . ?metabolite p_metabohub:formula ?formula . ?metabolite p_metabohub:inchikey ?inchikey . filter( ?mass > 300.0 && ?mass < 1000.0 ) } ``` validation possible avec le endpoint : https://openstack-192-168-101-49.vm.openstack.genouest.org/sparql/ ## 3) Utilisation de la base de connassance ChEBI /rdf/ebi/chebi/16-Feb-2021/chebi.owl Considérons le composé ``` http://semanticweb.org/inrae/metabohub/forum/entity#C00000025 "Gibberellin A25,GA25"@en "28535-69-5" "C20H26O6" "XOUJCIPAKFLTCI-CNOFLNOFNA-N" ``` Page banque de données: http://www.knapsackfamily.com/knapsack_core/information.php?word=C00000025 XOUJCIPAKFLTCI-CNOFLNOFNA-N Page CheBI https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:72601 XOUJCIPAKFLTCI-POPXMCHDSA-N a) Quels sont les identifiants chebi qui correspondent à ce composé de knapsack ? b) Vérifier que les formules chimiques (datatype property 'formula') correspondent bien à C20H26O6 ? ```sql select distinct * where { ?chebi <http://purl.obolibrary.org/obo/chebi/inchikey> ?inchi . ?chebi <http://purl.obolibrary.org/obo/chebi/formula> ?formula . FILTER( strstarts(str(?inchi),"XOUJCIPAKFLTCI") ) . } ``` ### reponse ``` http://purl.obolibrary.org/obo/CHEBI_143959 "XOUJCIPAKFLTCI-POPXMCHDSA-K"^^<http://www.w3.org/2001/XMLSchema#string> "C20H23O6"^^<http://www.w3.org/2001/XMLSchema#string> http://purl.obolibrary.org/obo/CHEBI_72601 "XOUJCIPAKFLTCI-POPXMCHDSA-N"^^<http://www.w3.org/2001/XMLSchema#string> "C20H26O6"^^<http://www.w3.org/2001/XMLSchema#string> ``` ## 4) Associer un Chebi ID à chacune des entrées knapsack et écrire dans des fichiers parquet NOTE : S'appuyer sur l'exemple SPARQL / SANSA( retourne un RDD , à priori pas de DF....) - https://github.com/SANSA-Stack/SANSA-Stack/blob/develop/sansa-examples/sansa-examples-spark/src/main/scala/net/sansa_stack/examples/spark/query/SPARQLExample.scala ## Notes ### Exemples SANSA https://github.com/SANSA-Stack/SANSA-Stack/tree/develop/sansa-examples/sansa-examples-spark/src/main/scala/net/sansa_stack/examples/spark