about summary refs log tree commit diff
path: root/gn3/db
diff options
context:
space:
mode:
Diffstat (limited to 'gn3/db')
-rw-r--r--gn3/db/rdf.py90
1 files changed, 26 insertions, 64 deletions
diff --git a/gn3/db/rdf.py b/gn3/db/rdf.py
index 80b32fa..78ddc17 100644
--- a/gn3/db/rdf.py
+++ b/gn3/db/rdf.py
@@ -89,80 +89,42 @@ def get_dataset_metadata(
         sparql_conn: SPARQLWrapper, name: str
 ) -> MonadicDict:
     """Return info about dataset with a given NAME"""
-    __metadata_query = """
+    response: MonadicDict = MonadicDict()
+    for key, value in sparql_query(
+            sparql_conn,
+            Template("""
 $prefix
 
 CONSTRUCT {
-    gn:dataset ?datasetTerm ?datasetValue .
-    gn:dataset ?platformName ?platform_name .
-    gn:dataset gn:normalization ?normalization .
-    gn:dataset gn:investigatorName ?investigatorName .
-    gn:dataset gn:investigatorWebUrl ?investigatorWebUrl .
-    gn:dataset gn:tissueName ?tissueName .
-    gn:dataset gn:organism ?speciesDisplayName .
-    gn:dataset gn:organismUrl ?ncbiReference .
-    gn:dataset gn:inbredSetName ?inbredSetName .
-    gn:dataset gn:geoPlatformUrl ?geoPlatform .
-    gn:dataset gn:platformName ?platform_name .
+	  ?dataset ?predicate ?term .
+	  ?dataset gnt:classifiedUnder ?inbredSetName .
+          ?dataset gnt:usesNormalization ?normalizationLabel .
+          ?typePredicate ex:DatasetType ?typeName .
 } WHERE {
-    ?subClass rdf:subClassOf gn:dataset .
-    ?dataset rdf:type ?subclass ;
-             gn:name "$name";
-             ?datasetTerm ?datasetValue .
-    OPTIONAL {
-        ?dataset gn:datasetOfInvestigator ?investigator .
-        ?investigator foaf:name ?investigatorName .
-        ?investigator foaf:homepage ?investigatorWebUrl .
-    } .
-    OPTIONAL{
-        ?dataset gn:normalization ?normalizationType .
-        ?normalizationType gn:name ?normalization .
-    } .
-    OPTIONAL{
-        ?dataset gn:datasetOfSpecies ?species .
-        ?species gn:displayName ?speciesDisplayName .
-        ?species gn:organism ?ncbiReference .
-    } .
-    OPTIONAL {
-        ?dataset gn:datasetOfInbredSet ?inbredSet .
-        ?inbredSet gn:binomialName ?inbredSetName .
-        ?inbredSet gn:inbredSetOfSpecies ?species .
-        ?species gn:displayName ?speciesDisplayName .
-        ?species gn:organism ?ncbiReference .
-    } .
-    OPTIONAL{
-        ?dataset gn:datasetOfPlatform ?platform .
-        ?platform gn:name ?platform_name .
-        ?platform gn:geoPlatform ?geoPlatform .
-    } .
-    OPTIONAL{
-        ?dataset gn:datasetOfTissue ?tissue .
-        ?tissue gn:name ?tissueName .
-    } .
-    VALUES ?datasetTerm {
-        dct:created gn:aboutCases gn:aboutDataProcessing gn:aboutPlatform
-        gn:aboutTissue gn:accessionId gn:acknowledgment gn:citation
-        gn:contributors gn:datasetGroup gn:datasetOfinvestigator
-        gn:experimentDesign gn:geoSeries gn:name gn:notes
-        gn:specifics gn:summary gn:title gn:publicationTitle
-        gn:datasetStatusName gn:datasetOfOrganization
-    }
-}
-"""
-    response: MonadicDict = MonadicDict()
-    for key, value in sparql_query(
-            sparql_conn,
-            Template(__metadata_query)
+	 ?dataset rdf:type dcat:Dataset .
+	 ?dataset ?predicate ?term .
+	 ?dataset xkos:classifiedUnder ?inbredSet .
+	 gnc:Set skos:member ?inbredSet .
+	 ?dataset (rdfs:label|dct:identifier) "$name" .
+	 ?inbredSet rdfs:label ?inbredSetName .
+         OPTIONAL {
+            ?dataset xkos:classifiedUnder ?type .
+            gnc:DatasetType skos:member ?type .
+            ?type ?typePredicate ?typeName .
+            ?type (skos:altLabel|skos:prefLabel) ?typeName .
+         } .
+         OPTIONAL {
+            ?dataset gnt:usesNormalization ?normalization .
+            ?normalization rdfs:label ?normalizationLabel .
+         }
+	 FILTER (!regex(str(?predicate), '(classifiedUnder|usesNormalization)','i')) .
+}""")
             .substitute(
                 prefix=RDF_PREFIXES,
                 name=name
             )
     )[0].items():
         response[key] = value
-        if isinstance(value, str) and not (
-                key.endswith("Url") or key == "geoSeries"
-        ):
-            response[key] = value.map(get_url_local_name)  # type: ignore
     return response