From 7f0ca21cc3ae1c8b8f288636f19d3d5f4c0f59a4 Mon Sep 17 00:00:00 2001 From: Alyssa Dai Date: Tue, 13 Aug 2024 14:46:32 -0400 Subject: [PATCH] [FIX] Ensure subjects without imaging sessions are considered in main query (#333) * use left join approach for imaging session subquery * update default non-aggregated query --- app/api/utility.py | 1 + docs/default_neurobagel_query.rq | 28 +++++++++++++--------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/app/api/utility.py b/app/api/utility.py index 1bb60d7..e09c80a 100644 --- a/app/api/utility.py +++ b/app/api/utility.py @@ -247,6 +247,7 @@ def create_query( {{ SELECT ?subject (count(distinct ?imaging_session) as ?num_matching_imaging_sessions) WHERE {{ + ?subject a nb:Subject. OPTIONAL {{ ?subject nb:hasSession ?imaging_session. ?imaging_session a nb:ImagingSession; diff --git a/docs/default_neurobagel_query.rq b/docs/default_neurobagel_query.rq index c4dc71c..ae2ff14 100644 --- a/docs/default_neurobagel_query.rq +++ b/docs/default_neurobagel_query.rq @@ -9,13 +9,13 @@ SELECT DISTINCT ?dataset_uuid ?dataset_name ?dataset_portal_uri ?sub_id ?age ?se ?diagnosis ?subject_group ?num_matching_phenotypic_sessions ?num_matching_imaging_sessions ?session_id ?session_type ?assessment ?image_modal ?session_file_path WHERE { ?dataset_uuid a nb:Dataset; - nb:hasLabel ?dataset_name; - nb:hasSamples ?subject. + nb:hasLabel ?dataset_name; + nb:hasSamples ?subject. ?subject a nb:Subject; - nb:hasLabel ?sub_id; - nb:hasSession ?session. + nb:hasLabel ?sub_id; + nb:hasSession ?session. ?session a ?session_type; - nb:hasLabel ?session_id. + nb:hasLabel ?session_id. OPTIONAL { ?session nb:hasAcquisition/nb:hasContrastType ?image_modal. OPTIONAL {?session nb:hasFilePath ?session_file_path.} @@ -29,17 +29,15 @@ WHERE { { SELECT ?subject (count(distinct ?phenotypic_session) as ?num_matching_phenotypic_sessions) WHERE { - ?subject a nb:Subject. - OPTIONAL { - ?subject nb:hasSession ?phenotypic_session. - ?phenotypic_session a nb:PhenotypicSession. + ?subject nb:hasSession ?phenotypic_session. + ?phenotypic_session a nb:PhenotypicSession. + + OPTIONAL {?phenotypic_session nb:hasAge ?age.} + OPTIONAL {?phenotypic_session nb:hasSex ?sex.} + OPTIONAL {?phenotypic_session nb:hasDiagnosis ?diagnosis.} + OPTIONAL {?phenotypic_session nb:isSubjectGroup ?subject_group.} + OPTIONAL {?phenotypic_session nb:hasAssessment ?assessment.} - OPTIONAL {?phenotypic_session nb:hasAge ?age.} - OPTIONAL {?phenotypic_session nb:hasSex ?sex.} - OPTIONAL {?phenotypic_session nb:hasDiagnosis ?diagnosis.} - OPTIONAL {?phenotypic_session nb:isSubjectGroup ?subject_group.} - OPTIONAL {?phenotypic_session nb:hasAssessment ?assessment.} - } } GROUP BY ?subject }