From c8c6b15b30ba9a65d951441b41f90e056b6fbb32 Mon Sep 17 00:00:00 2001 From: Puja Trivedi Date: Tue, 22 Apr 2025 10:38:03 -0700 Subject: [PATCH 1/2] added query to get bkbit_id given an xref id --- query_service/core/routers/query.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/query_service/core/routers/query.py b/query_service/core/routers/query.py index 7fb4011..8765a48 100644 --- a/query_service/core/routers/query.py +++ b/query_service/core/routers/query.py @@ -53,6 +53,23 @@ async def get_named_graphs(): } return response_graph +@router.get("query/xref-to-bkbit") +async def get_bkbit_id(xref): + query_bkbit_id = f""" + PREFIX biolink: + SELECT DISTINCT ?bkbit_id + WHERE {{ + ?bkbit_id biolink:xref "{xref}". + }} + """ + response = fetch_data_gdb(query_bkbit_id) + response_bkbit = {} + for bkbit_info in response["message"]["results"]["bindings"]: + response_bkbit[bkbit_info["bkbit_id"]["value"]] = { + "bkbit_id": bkbit_info["bkbit_id"]["value"] + } + return response_bkbit + @router.get("/query/sparql/", include_in_schema=False) async def sparql_query( From 7ac5b1143221ebf1499449aa2991e9e57d12f303 Mon Sep 17 00:00:00 2001 From: Puja Trivedi Date: Tue, 22 Apr 2025 10:54:16 -0700 Subject: [PATCH 2/2] specified that biolink:xref is a typed literal(xsd:anyURI) not a plain string. --- query_service/core/routers/query.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/query_service/core/routers/query.py b/query_service/core/routers/query.py index 8765a48..b24092e 100644 --- a/query_service/core/routers/query.py +++ b/query_service/core/routers/query.py @@ -56,19 +56,23 @@ async def get_named_graphs(): @router.get("query/xref-to-bkbit") async def get_bkbit_id(xref): query_bkbit_id = f""" - PREFIX biolink: - SELECT DISTINCT ?bkbit_id - WHERE {{ - ?bkbit_id biolink:xref "{xref}". - }} + PREFIX biolink: + PREFIX xsd: + + SELECT DISTINCT ?bkbit_id + WHERE {{ + ?bkbit_id biolink:xref "{xref}"^^xsd:anyURI . + }} """ + response = fetch_data_gdb(query_bkbit_id) - response_bkbit = {} - for bkbit_info in response["message"]["results"]["bindings"]: - response_bkbit[bkbit_info["bkbit_id"]["value"]] = { - "bkbit_id": bkbit_info["bkbit_id"]["value"] - } - return response_bkbit + return { + "xref": xref, + "matched_ids": [ + binding["bkbit_id"]["value"] + for binding in response["message"]["results"]["bindings"] + ] + } @router.get("/query/sparql/", include_in_schema=False)