From a973517589c20b19887cd11a91ed250415444bf5 Mon Sep 17 00:00:00 2001 From: vdancik Date: Thu, 12 Mar 2026 12:36:05 -0400 Subject: [PATCH 01/10] update examples to conform to TRAPI 2.0 --- .../causes_predicate_vs_qualifier.json | 74 ++++++++------- .../complex_gocam_qualifiers.json | 89 +++++++++--------- .../localization_or_transport.json | 93 +++++++++--------- .../metaedge_with_qualifiers.json | 8 ++ .../DataExamples/object_qualifiers.json | 74 ++++++++------- .../DataExamples/simple.json | 94 ++++++++++++------- .../DataExamples/single_node_example.json | 19 ++-- .../subject_and_object_qualifiers.json | 84 ++++++++--------- 8 files changed, 292 insertions(+), 243 deletions(-) diff --git a/ImplementationGuidance/DataExamples/causes_predicate_vs_qualifier.json b/ImplementationGuidance/DataExamples/causes_predicate_vs_qualifier.json index 64976a19..50b52275 100644 --- a/ImplementationGuidance/DataExamples/causes_predicate_vs_qualifier.json +++ b/ImplementationGuidance/DataExamples/causes_predicate_vs_qualifier.json @@ -22,24 +22,15 @@ "predicates": [ "biolink:affects" ], - "qualifier_constraints": [ - { - "qualifier_set": [ - { - "qualifier_type_id": "biolink:object_aspect_qualifier", - "qualifier_value": "activity" - }, - { - "qualifier_type_id": "biolink:object_modifier_qualifier", - "qualifier_value": "increased" - }, - { - "qualifier_type_id": "biolink:qualified_predicate", - "qualifier_value": "biolink:causes" - } - ] - } - ] + "constraints": { + "qualifiers": [ + { + "biolink:object_aspect_qualifier": "activity", + "biolink:object_modifier_qualifier": "increased", + "biolink:qualified_predicate": "biolink:causes" + } + ] + } } } }, @@ -80,30 +71,43 @@ "qualifier_type_id": "biolink:causal_mechanism_qualifier", "qualifier_value": "binding" } - ] + ], + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent" } }, "results": [ { "node_bindings": { - "n0": [ - { - "id": "PUBCHEM.COMPOUND:6623" - } - ], - "n1": [ - { - "id": "HGNC:3467" - } - ] + "n0": { + "ids": [ + "PUBCHEM.COMPOUND:6623" + ] + }, + "n1": { + "ids": [ + "HGNC:3467" + ] + } }, - "edge_bindings": { - "e01": [ - { - "id": "x17770" + "analyses": [ + { + "resource_id": "infores:arax", + "edge_bindings": { + "e01": { + "ids": [ + "x17770" + ] + } } - ] - } + } + ] } ] } diff --git a/ImplementationGuidance/DataExamples/complex_gocam_qualifiers.json b/ImplementationGuidance/DataExamples/complex_gocam_qualifiers.json index 3b918179..bf1a9b94 100644 --- a/ImplementationGuidance/DataExamples/complex_gocam_qualifiers.json +++ b/ImplementationGuidance/DataExamples/complex_gocam_qualifiers.json @@ -25,36 +25,18 @@ "predicates": [ "biolink:regulates" ], - "qualifier_constraints": [ - { - "qualifier_set": [ - { - "qualifier_type_id": "biolink:subject_aspect_qualifier", - "qualifier_value": "GO:0043539" - }, - { - "qualifier_type_id": "biolink:subject_context_qualifier", - "qualifier_value": "GO:0005886" - }, - { - "qualifier_type_id": "biolink:object_aspect_qualifier", - "qualifier_value": "GO:0004708" - }, - { - "qualifier_type_id": "biolink:object_context_qualifier", - "qualifier_value": "GO:0005737" - }, - { - "qualifier_type_id": "biolink:object_direction_qualifier", - "qualifier_value": "increased" - }, - { - "qualifier_type_id": "biolink:pathway_context_qualifier", - "qualifier_value": "GO:0038134" - } - ] - } - ] + "constraints": { + "qualifiers": [ + { + "biolink:subject_aspect_qualifier": "GO:0043539", + "biolink:subject_context_qualifier": "GO:0005886", + "biolink:object_aspect_qualifier": "GO:0004708", + "biolink:object_context_qualifier": "GO:0005737", + "biolink:object_direction_qualifier": "increased", + "biolink:pathway_context_qualifier": "GO:0038134" + } + ] + } } } }, @@ -103,31 +85,44 @@ "qualifier_type_id": "biolink:pathway_context_qualifier", "qualifier_value": "GO:0038134" } - ] + ], + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent" } } }, "results": [ { "node_bindings": { - "n0": [ - { - "id": "FB:FBgn0003205" - } - ], - "n1": [ - { - "id": "FB:FBgn0003079" - } - ] + "n0": { + "ids": [ + "FB:FBgn0003205" + ] + }, + "n1": { + "ids": [ + "FB:FBgn0003079" + ] + } }, - "edge_bindings": { - "e01": [ - { - "id": "x17770" + "analyses": [ + { + "resource_id": "infores:arax", + "edge_bindings": { + "e01": { + "ids": [ + "x17770" + ] + } } - ] - } + } + ] } ] } diff --git a/ImplementationGuidance/DataExamples/localization_or_transport.json b/ImplementationGuidance/DataExamples/localization_or_transport.json index 75c73668..853a7b7b 100644 --- a/ImplementationGuidance/DataExamples/localization_or_transport.json +++ b/ImplementationGuidance/DataExamples/localization_or_transport.json @@ -22,24 +22,16 @@ "predicates": [ "biolink:affects" ], - "qualifier_constraints": [ - { - "qualifier_set": [ - { - "qualifier_type_id": "biolink:object_aspect_qualifier", - "qualifier_value": "localization" - } - ] - }, - { - "qualifier_set": [ - { - "qualifier_type_id": "biolink:object_aspect_qualifier", - "qualifier_value": "transport" - } - ] - } - ] + "constraints": { + "qualifiers": [ + { + "biolink:object_aspect_qualifier": "localization" + }, + { + "biolink:object_aspect_qualifier": "transport" + } + ] + } } } }, @@ -74,7 +66,15 @@ "qualifier_type_id": "biolink:object_aspect_qualifier", "qualifier_value": "localization" } - ] + ], + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent" }, "x17771": { "predicate": "biolink:affects", @@ -85,37 +85,46 @@ "qualifier_type_id": "biolink:object_aspect_qualifier", "qualifier_value": "transport" } - ] + ], + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent" } } }, "results": [ { "node_bindings": { - "n0": [ - { - "id": "PUBCHEM.COMPOUND:6623" - }, - { - "id": "PUBCHEM.COMPOUND:6625" - } - ], - "n1": [ - { - "id": "HGNC:3467" - } - ] + "n0": { + "ids": [ + "PUBCHEM.COMPOUND:6623", + "PUBCHEM.COMPOUND:6625" + ] + }, + "n1": { + "ids": [ + "HGNC:3467" + ] + } }, - "edge_bindings": { - "e01": [ - { - "id": "x17770" - }, - { - "id": "x17771" + "analyses": [ + { + "resource_id": "infores:arax", + "edge_bindings": { + "e01": { + "ids": [ + "x17770", + "x17771" + ] + } } - ] - } + } + ] } ] } diff --git a/ImplementationGuidance/DataExamples/metaedge_with_qualifiers.json b/ImplementationGuidance/DataExamples/metaedge_with_qualifiers.json index 4a04339c..18175942 100644 --- a/ImplementationGuidance/DataExamples/metaedge_with_qualifiers.json +++ b/ImplementationGuidance/DataExamples/metaedge_with_qualifiers.json @@ -33,6 +33,14 @@ "lookup" ], "association": "biolink:ChemicalToGeneAssociation", + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent", "qualifiers": [ { "qualifier_type_id": "biolink:subject_aspect_qualifier", diff --git a/ImplementationGuidance/DataExamples/object_qualifiers.json b/ImplementationGuidance/DataExamples/object_qualifiers.json index fa12f3d6..e4eb8c28 100644 --- a/ImplementationGuidance/DataExamples/object_qualifiers.json +++ b/ImplementationGuidance/DataExamples/object_qualifiers.json @@ -22,24 +22,15 @@ "predicates": [ "biolink:affects" ], - "qualifier_constraints": [ - { - "qualifier_set": [ - { - "qualifier_type_id": "biolink:object_aspect_qualifier", - "qualifier_value": "degradation" - }, - { - "qualifier_type_id": "biolink:object_direction_qualifier", - "qualifier_value": "decreased" - }, - { - "qualifier_type_id": "biolink:qualified_predicate", - "qualifier_value": "biolink:causes" - } - ] - } - ] + "constraints": { + "qualifiers": [ + { + "biolink:object_aspect_qualifier": "degradation", + "biolink:object_direction_qualifier": "decreased", + "biolink:qualified_predicate": "biolink:causes" + } + ] + } } } }, @@ -76,31 +67,44 @@ "qualifier_type_id": "biolink:qualified_predicate", "qualifier_value": "biolink:causes" } - ] + ], + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent" } } }, "results": [ { "node_bindings": { - "n0": [ - { - "id": "PUBCHEM.COMPOUND:6623" - } - ], - "n1": [ - { - "id": "HGNC:3467" - } - ] + "n0": { + "ids": [ + "PUBCHEM.COMPOUND:6623" + ] + }, + "n1": { + "ids": [ + "HGNC:3467" + ] + } }, - "edge_bindings": { - "e01": [ - { - "id": "x17770" + "analyses": [ + { + "resource_id": "infores:arax", + "edge_bindings": { + "e01": { + "ids": [ + "x17770" + ] + } } - ] - } + } + ] } ] } diff --git a/ImplementationGuidance/DataExamples/simple.json b/ImplementationGuidance/DataExamples/simple.json index 26ff2e46..b8be6197 100644 --- a/ImplementationGuidance/DataExamples/simple.json +++ b/ImplementationGuidance/DataExamples/simple.json @@ -35,57 +35,83 @@ "x17770": { "predicate": "biolink:related_to", "subject": "MONDO:0005737", - "object": "HGNC:17770" + "object": "HGNC:17770", + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent" }, "x13236": { "predicate": "biolink:related_to", "subject": "MONDO:0005737", - "object": "HGNC:13236" + "object": "HGNC:13236", + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent" } } }, "results": [ { "node_bindings": { - "n0": [ - { - "id": "MONDO:0005737" - } - ], - "n1": [ - { - "id": "HGNC:17770" - } - ] + "n0": { + "ids": [ + "MONDO:0005737" + ] + }, + "n1": { + "ids": [ + "HGNC:17770" + ] + } }, - "edge_bindings": { - "e01": [ - { - "id": "x17770" + "analyses": [ + { + "resource_id": "infores:arax", + "edge_bindings": { + "e01": { + "ids": [ + "x17770" + ] + } } - ] - } + } + ] }, { "node_bindings": { - "n0": [ - { - "id": "MONDO:0005737" - } - ], - "n1": [ - { - "id": "HGNC:13236" - } - ] + "n0": { + "ids": [ + "MONDO:0005737" + ] + }, + "n1": { + "ids": [ + "HGNC:13236" + ] + } }, - "edge_bindings": { - "e01": [ - { - "id": "x13236" + "analyses": [ + { + "resource_id": "infores:arax", + "edge_bindings": { + "e01": { + "ids": [ + "x13236" + ] + } } - ] - } + } + ] } ] } diff --git a/ImplementationGuidance/DataExamples/single_node_example.json b/ImplementationGuidance/DataExamples/single_node_example.json index c77c7b67..0110bfc7 100644 --- a/ImplementationGuidance/DataExamples/single_node_example.json +++ b/ImplementationGuidance/DataExamples/single_node_example.json @@ -198,13 +198,18 @@ "results": [ { "node_bindings": { - "n0": [ - { - "id": "MONDO:0004979", - "attributes": [] - } - ] - } + "n0": { + "ids": [ + "MONDO:0004979" + ] + } + }, + "analyses": [ + { + "resource_id": "infores:arax", + "edge_bindings": {} + } + ] } ] } diff --git a/ImplementationGuidance/DataExamples/subject_and_object_qualifiers.json b/ImplementationGuidance/DataExamples/subject_and_object_qualifiers.json index a29429a8..27847b45 100644 --- a/ImplementationGuidance/DataExamples/subject_and_object_qualifiers.json +++ b/ImplementationGuidance/DataExamples/subject_and_object_qualifiers.json @@ -22,32 +22,17 @@ "predicates": [ "biolink:affects" ], - "qualifier_constraints": [ - { - "qualifier_set": [ - { - "qualifier_type_id": "biolink:subject_aspect_qualifier", - "qualifier_value": "abundance" - }, - { - "qualifier_type_id": "biolink:subject_direction_qualifier", - "qualifier_value": "decreased" - }, - { - "qualifier_type_id": "biolink:object_aspect_qualifier", - "qualifier_value": "expression" - }, - { - "qualifier_type_id": "biolink:object_direction_qualifier", - "qualifier_value": "increased" - }, - { - "qualifier_type_id": "biolink:qualified_predicate", - "qualifier_value": "biolink:causes" - } - ] - } - ] + "constraints": { + "qualifiers": [ + { + "biolink:subject_aspect_qualifier": "abundance", + "biolink:subject_direction_qualifier": "decreased", + "biolink:object_aspect_qualifier": "expression", + "biolink:object_direction_qualifier": "increased", + "biolink:qualified_predicate": "biolink:causes" + } + ] + } } } }, @@ -92,31 +77,44 @@ "qualifier_type_id": "biolink:object_direction_qualifier", "qualifier_value": "increased" } - ] + ], + "sources": [ + { + "resource_id": "infores:chembl", + "resource_role": "primary_knowledge_source" + } + ], + "knowledge_level": "knowledge_assertion", + "agent_type": "manual_agent" } } }, "results": [ { "node_bindings": { - "n0": [ - { - "id": "PUBCHEM.COMPOUND:6137" - } - ], - "n1": [ - { - "id": "HGNC:286" - } - ] + "n0": { + "ids": [ + "PUBCHEM.COMPOUND:6137" + ] + }, + "n1": { + "ids": [ + "HGNC:286" + ] + } }, - "edge_bindings": { - "e01": [ - { - "id": "x17770" + "analyses": [ + { + "resource_id": "infores:arax", + "edge_bindings": { + "e01": { + "ids": [ + "x17770" + ] + } } - ] - } + } + ] } ] } From cfd99ee1c53a463e471e53c2d797985e6c8545d8 Mon Sep 17 00:00:00 2001 From: uhbrar Date: Thu, 12 Mar 2026 14:44:03 -0400 Subject: [PATCH 02/10] update pathfinder specification --- .../pathfinder_query_specification.md | 144 +++++++++--------- 1 file changed, 70 insertions(+), 74 deletions(-) diff --git a/ImplementationGuidance/Specifications/pathfinder_query_specification.md b/ImplementationGuidance/Specifications/pathfinder_query_specification.md index db951d59..c067269a 100644 --- a/ImplementationGuidance/Specifications/pathfinder_query_specification.md +++ b/ImplementationGuidance/Specifications/pathfinder_query_specification.md @@ -225,47 +225,45 @@ This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a Quer "results": [ { "node_bindings": { - "n0": [ - { - "id": "MONDO:0005011", - "attributes": [] - } - ], - "n1": [ - { - "id": "MONDO:0005180", - "attributes": [] - } - ] + "n0": { + "ids": [ + "MONDO:0005011" + ] + }, + "n1": { + "ids": [ + "MONDO:0005180" + ] + } }, "analyses": [ { "path_bindings": { - "p0": [ - { - "id": "a0" - } - ], + "p0": { + "ids": [ + "a0" + ] + } }, "score": .85 }, { "path_bindings": { - "p0": [ - { - "id": "a1" - } - ], + "p0": { + "ids": [ + "a1" + ] + } }, "score": .7 }, { "path_bindings": { - "p0": [ - { - "id": "a2" - } - ], + "p0": { + "ids": [ + "a2" + ] + } }, "score": .9 } @@ -281,37 +279,35 @@ would look like this. "results": [ { "node_bindings": { - "n0": [ - { - "id": "MONDO:0005011", - "attributes": [] - } - ], - "n1": [ - { - "id": "MONDO:0005180", - "attributes": [] - } - ] + "n0": { + "ids": [ + "MONDO:0005011" + ] + }, + "n1": { + "ids": [ + "MONDO:0005180" + ] + } }, "analyses": [ { "path_bindings": { - "p0": [ - { - "id": "a0" - } - ], + "p0": { + "ids": [ + "a0" + ] + } }, "score": .85 }, { "path_bindings": { - "p0": [ - { - "id": "a1" - } - ], + "p0": { + "ids": [ + "a1" + ] + } }, "score": .7 } @@ -441,31 +437,31 @@ and Results all included. The constrained version is shown after that. "analyses": [ { "path_bindings": { - "p0": [ - { - "id": "a0" - } - ], + "p0": { + "ids": [ + "a0" + ] + } }, "score": .85 }, { "path_bindings": { - "p0": [ - { - "id": "a1" - } - ], + "p0": { + "ids": [ + "a1" + ] + } }, "score": .7 }, { "path_bindings": { - "p0": [ - { - "id": "a2" - } - ], + "p0": { + "ids": [ + "a2" + ] + } }, "score": .9 } @@ -584,21 +580,21 @@ and Results all included. The constrained version is shown after that. "analyses": [ { "path_bindings": { - "p0": [ - { - "id": "a0" - } - ], + "p0": { + "ids": [ + "a0" + ] + } }, "score": .85 }, { "path_bindings": { - "p0": [ - { - "id": "a1" - } - ], + "p0": { + "ids": [ + "a1" + ] + } }, "score": .7 } From 537d28ce03607b051fdc62deeccb93da67da332b Mon Sep 17 00:00:00 2001 From: vdancik Date: Thu, 12 Mar 2026 15:15:31 -0400 Subject: [PATCH 03/10] remove empty analyses --- .../DataExamples/single_node_example.json | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/ImplementationGuidance/DataExamples/single_node_example.json b/ImplementationGuidance/DataExamples/single_node_example.json index 0110bfc7..72fd888e 100644 --- a/ImplementationGuidance/DataExamples/single_node_example.json +++ b/ImplementationGuidance/DataExamples/single_node_example.json @@ -203,13 +203,7 @@ "MONDO:0004979" ] } - }, - "analyses": [ - { - "resource_id": "infores:arax", - "edge_bindings": {} - } - ] + } } ] } From 7c9157fe321c613322bee005a4509f4c6e495092 Mon Sep 17 00:00:00 2001 From: vdancik Date: Thu, 12 Mar 2026 15:31:51 -0400 Subject: [PATCH 04/10] add set interpretation --- .../DataExamples/localization_or_transport.json | 3 ++- .../DataExamples/metaedge_with_qualifiers.json | 8 -------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/ImplementationGuidance/DataExamples/localization_or_transport.json b/ImplementationGuidance/DataExamples/localization_or_transport.json index 853a7b7b..f35780ff 100644 --- a/ImplementationGuidance/DataExamples/localization_or_transport.json +++ b/ImplementationGuidance/DataExamples/localization_or_transport.json @@ -4,7 +4,8 @@ "n0": { "categories": [ "biolink:ChemicalEntity" - ] + ], + "set_interpretation": "COLLATE" }, "n1": { "categories": [ diff --git a/ImplementationGuidance/DataExamples/metaedge_with_qualifiers.json b/ImplementationGuidance/DataExamples/metaedge_with_qualifiers.json index 18175942..4a04339c 100644 --- a/ImplementationGuidance/DataExamples/metaedge_with_qualifiers.json +++ b/ImplementationGuidance/DataExamples/metaedge_with_qualifiers.json @@ -33,14 +33,6 @@ "lookup" ], "association": "biolink:ChemicalToGeneAssociation", - "sources": [ - { - "resource_id": "infores:chembl", - "resource_role": "primary_knowledge_source" - } - ], - "knowledge_level": "knowledge_assertion", - "agent_type": "manual_agent", "qualifiers": [ { "qualifier_type_id": "biolink:subject_aspect_qualifier", From 812e1ba2f9b63fa5823c2ee23a0a15cb14f2ecd6 Mon Sep 17 00:00:00 2001 From: vdancik Date: Thu, 12 Mar 2026 16:19:33 -0400 Subject: [PATCH 05/10] remove empty constrains and cleanup attributes --- .../DataExamples/single_node_example.json | 99 +------------------ 1 file changed, 4 insertions(+), 95 deletions(-) diff --git a/ImplementationGuidance/DataExamples/single_node_example.json b/ImplementationGuidance/DataExamples/single_node_example.json index 72fd888e..99090155 100644 --- a/ImplementationGuidance/DataExamples/single_node_example.json +++ b/ImplementationGuidance/DataExamples/single_node_example.json @@ -6,7 +6,6 @@ "categories": [ "biolink:Disease" ], - "constraints": [], "ids": [ "MONDO:0004979" ] @@ -26,13 +25,13 @@ "name": "asthma", "attributes": [ { - "attribute_type_id": "biolink:log_odds_ratio_95_ci", + "attribute_type_id": "biolink:log_odds_ratio", "value": 100.0, "value_type_id": "EDAM:data_0006", - "original_attribute_name": "information_content" + "original_attribute_name": "log_odds_ratio" }, { - "attribute_type_id": "biolink:Attribute", + "attribute_type_id": "biolink:information_content", "value": 77.1, "original_attribute_name": "information_content" }, @@ -42,11 +41,6 @@ "value_type_id": "metatype:String", "attribute_source": "infores:rtx-kg2" }, - { - "attribute_type_id": "biolink:Attribute", - "value": true, - "original_attribute_name": "MONDO_SUPERCLASS_disease" - }, { "attribute_type_id": "dct:description", "value": "A bronchial disease that is characterized by chronic inflammation and narrowing of the airways, which is caused by a combination of environmental and genetic factors resulting in recurring periods of wheezing (a whistling sound while breathing), chest tightness, shortness of breath, mucus production and coughing. The symptoms appear due to a variety of triggers such as allergens, irritants, respiratory infections, weather changes, exercise, stress, reflux disease, medications, foods and emotional anxiety.", @@ -54,17 +48,7 @@ "original_attribute_name": "description" }, { - "attribute_type_id": "biolink:Attribute", - "value": 77.4, - "original_attribute_name": "information_content" - }, - { - "attribute_type_id": "biolink:Attribute", - "value": true, - "original_attribute_name": "MONDO_SUPERCLASS_lower_respiratory_tract_disorder" - }, - { - "attribute_type_id": "biolink:Attribute", + "attribute_type_id": "biolink:xref", "value": [ "MEDDRA:10003553", "MEDDRA:10037993", @@ -97,49 +81,6 @@ ], "original_attribute_name": "equivalent_identifiers" }, - { - "attribute_type_id": "biolink:description", - "value": "A bronchial disease that is characterized by chronic inflammation and narrowing of the airways, which is caused by a combination of environmental and genetic factors resulting in recurring periods of wheezing (a whistling sound while breathing), chest tightness, shortness of breath, mucus production and coughing. The symptoms appear due to a variety of triggers such as allergens, irritants, respiratory infections, weather changes, exercise, stress, reflux disease, medications, foods and emotional anxiety.", - "value_type_id": "dct:description", - "original_attribute_name": "description" - }, - { - "attribute_type_id": "biolink:Attribute", - "value": [ - "MONDO:0004979", - "DOID:2841", - "UMLS:C0004096", - "UMLS:C0085129", - "UMLS:C0340062", - "UMLS:C3714497", - "MESH:D001249", - "MESH:D016535", - "MEDDRA:10003553", - "MEDDRA:10003555", - "MEDDRA:10003560", - "MEDDRA:10003561", - "MEDDRA:10003565", - "MEDDRA:10006450", - "MEDDRA:10037993", - "MEDDRA:10056285", - "MEDDRA:10066091", - "MEDDRA:10066863", - "MEDDRA:10082852", - "NCIT:C28397", - "SNOMEDCT:195967001", - "SNOMEDCT:991000119106", - "ICD10:J45", - "ICD9:493", - "KEGG.DISEASE:05310", - "HP:0002099" - ], - "original_attribute_name": "equivalent_identifiers" - }, - { - "attribute_type_id": "biolink:Attribute", - "value": true, - "original_attribute_name": "MONDO_SUPERCLASS_human_disease" - }, { "attribute_type_id": "biolink:synonym", "value": [ @@ -158,38 +99,6 @@ "value": "http://purl.obolibrary.org/obo/MONDO_0004979", "value_type_id": "metatype:Uri", "attribute_source": "infores:rtx-kg2" - }, - { - "attribute_type_id": "biolink:log_odds_ratio_95_ci", - "value": [ - "MONDO:0004979", - "DOID:2841", - "UMLS:C0004099", - "MESH:D001249", - "MESH:D001250", - "MEDDRA:10003557", - "MEDDRA:10015649", - "MEDDRA:10079895", - "NCIT:C28397", - "SNOMEDCT:31387002", - "medgen:2109", - "ICD10:J45", - "ICD9:493", - "KEGG.DISEASE:05310", - "HP:0012652" - ], - "value_type_id": "EDAM:data_0006", - "original_attribute_name": "equivalent_identifiers" - }, - { - "attribute_type_id": "biolink:Attribute", - "value": true, - "original_attribute_name": "MONDO_SUPERCLASS_respiratory_system_disorder" - }, - { - "attribute_type_id": "biolink:Attribute", - "value": 78.2, - "original_attribute_name": "information_content" } ] } From a3aa7f23a13f5011dec2fb58e0a9c5c7a1985310 Mon Sep 17 00:00:00 2001 From: vdancik Date: Thu, 12 Mar 2026 16:30:09 -0400 Subject: [PATCH 06/10] update node bindings --- .../pathfinder_query_specification.md | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/ImplementationGuidance/Specifications/pathfinder_query_specification.md b/ImplementationGuidance/Specifications/pathfinder_query_specification.md index c067269a..7ccd2151 100644 --- a/ImplementationGuidance/Specifications/pathfinder_query_specification.md +++ b/ImplementationGuidance/Specifications/pathfinder_query_specification.md @@ -421,18 +421,16 @@ and Results all included. The constrained version is shown after that. "results": [ { "node_bindings": { - "n0": [ - { - "id": "MONDO:0005011", - "attributes": [] - } - ], - "n1": [ - { - "id": "MONDO:0005180", - "attributes": [] - } - ] + "n0": { + "ids": [ + "MONDO:0005011" + ] + }, + "n1": { + "ids": [ + "MONDO:0005180" + ] + } }, "analyses": [ { @@ -564,18 +562,16 @@ and Results all included. The constrained version is shown after that. "results": [ { "node_bindings": { - "n0": [ - { - "id": "MONDO:0005011", - "attributes": [] - } - ], - "n1": [ - { - "id": "MONDO:0005180", - "attributes": [] - } - ] + "n0": { + "ids": [ + "MONDO:0005011" + ] + }, + "n1": { + "ids": [ + "MONDO:0005180" + ] + } }, "analyses": [ { From 81ec297126ea0819d58ef3414d99e0dc225300bb Mon Sep 17 00:00:00 2001 From: Colleen Xu Date: Thu, 12 Mar 2026 22:49:28 -0700 Subject: [PATCH 07/10] pathfinder spec: make complete messages valid json --- .../pathfinder_query_specification.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ImplementationGuidance/Specifications/pathfinder_query_specification.md b/ImplementationGuidance/Specifications/pathfinder_query_specification.md index 7ccd2151..d029702f 100644 --- a/ImplementationGuidance/Specifications/pathfinder_query_specification.md +++ b/ImplementationGuidance/Specifications/pathfinder_query_specification.md @@ -325,9 +325,9 @@ and Results all included. The constrained version is shown after that. ### Unconstrained -``` +```json { - "message" { + "message": { "query_graph": { "nodes": { "n0": { @@ -364,12 +364,12 @@ and Results all included. The constrained version is shown after that. "categories": ["biolink:Cell"] } }, - "edges" { + "edges": { "e0": { "subject": "MONDO:0005011", "object": "NCBIGene:120892", "predicate": "biolink:condition_associated_with_gene" - } + }, "e1": { "subject": "NCBIGene:120892", "object": "MONDO:0005180", @@ -416,7 +416,7 @@ and Results all included. The constrained version is shown after that. "edges": [ "e5" ] - }, + } }, "results": [ { @@ -441,7 +441,7 @@ and Results all included. The constrained version is shown after that. ] } }, - "score": .85 + "score": 0.85 }, { "path_bindings": { @@ -451,7 +451,7 @@ and Results all included. The constrained version is shown after that. ] } }, - "score": .7 + "score": 0.7 }, { "path_bindings": { @@ -461,7 +461,7 @@ and Results all included. The constrained version is shown after that. ] } }, - "score": .9 + "score": 0.9 } ] } @@ -472,9 +472,9 @@ and Results all included. The constrained version is shown after that. ### Constrained -``` +```json { - "message" { + "message": { "query_graph": { "nodes": { "n0": { @@ -515,12 +515,12 @@ and Results all included. The constrained version is shown after that. "categories": ["biolink:Cell"] } }, - "edges" { + "edges": { "e0": { "subject": "MONDO:0005011", "object": "NCBIGene:120892", "predicate": "biolink:condition_associated_with_gene" - } + }, "e1": { "subject": "NCBIGene:120892", "object": "MONDO:0005180", @@ -582,7 +582,7 @@ and Results all included. The constrained version is shown after that. ] } }, - "score": .85 + "score": 0.85 }, { "path_bindings": { @@ -592,11 +592,11 @@ and Results all included. The constrained version is shown after that. ] } }, - "score": .7 + "score": 0.7 } ] } ] } } -``` \ No newline at end of file +``` From e55b4d20a88a240304146ff4908d701589396cb3 Mon Sep 17 00:00:00 2001 From: Colleen Xu Date: Thu, 12 Mar 2026 22:51:21 -0700 Subject: [PATCH 08/10] pathfinder spec: add resource_id to complete examples then the complete examples are valid except for the missing required 2.0 Edge fields (sources, KL/AT), which are purposefully missing for rreadability --- .../Specifications/pathfinder_query_specification.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ImplementationGuidance/Specifications/pathfinder_query_specification.md b/ImplementationGuidance/Specifications/pathfinder_query_specification.md index d029702f..46d73262 100644 --- a/ImplementationGuidance/Specifications/pathfinder_query_specification.md +++ b/ImplementationGuidance/Specifications/pathfinder_query_specification.md @@ -434,6 +434,7 @@ and Results all included. The constrained version is shown after that. }, "analyses": [ { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ @@ -444,6 +445,7 @@ and Results all included. The constrained version is shown after that. "score": 0.85 }, { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ @@ -454,6 +456,7 @@ and Results all included. The constrained version is shown after that. "score": 0.7 }, { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ @@ -575,6 +578,7 @@ and Results all included. The constrained version is shown after that. }, "analyses": [ { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ @@ -585,6 +589,7 @@ and Results all included. The constrained version is shown after that. "score": 0.85 }, { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ From e3f7bd5e4ba2e960aaaeb9bcab430bdd3e19ab5d Mon Sep 17 00:00:00 2001 From: Colleen Xu Date: Thu, 12 Mar 2026 22:55:10 -0700 Subject: [PATCH 09/10] pathfinder spec: make example scores valid floats from json POV --- .../Specifications/pathfinder_query_specification.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ImplementationGuidance/Specifications/pathfinder_query_specification.md b/ImplementationGuidance/Specifications/pathfinder_query_specification.md index 46d73262..f491fc16 100644 --- a/ImplementationGuidance/Specifications/pathfinder_query_specification.md +++ b/ImplementationGuidance/Specifications/pathfinder_query_specification.md @@ -245,7 +245,7 @@ This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a Quer ] } }, - "score": .85 + "score": 0.85 }, { "path_bindings": { @@ -255,7 +255,7 @@ This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a Quer ] } }, - "score": .7 + "score": 0.7 }, { "path_bindings": { @@ -265,7 +265,7 @@ This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a Quer ] } }, - "score": .9 + "score": 0.9 } ] } @@ -299,7 +299,7 @@ would look like this. ] } }, - "score": .85 + "score": 0.85 }, { "path_bindings": { @@ -309,7 +309,7 @@ would look like this. ] } }, - "score": .7 + "score": 0.7 } ] } From ee37bdc47cf5193daa14468a72f0f1169a485cfc Mon Sep 17 00:00:00 2001 From: Colleen Xu Date: Thu, 12 Mar 2026 23:14:00 -0700 Subject: [PATCH 10/10] pathfinder spec: fix some json syntax, add resource_id across doc --- .../pathfinder_query_specification.md | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/ImplementationGuidance/Specifications/pathfinder_query_specification.md b/ImplementationGuidance/Specifications/pathfinder_query_specification.md index f491fc16..9b00bcf9 100644 --- a/ImplementationGuidance/Specifications/pathfinder_query_specification.md +++ b/ImplementationGuidance/Specifications/pathfinder_query_specification.md @@ -26,7 +26,7 @@ The QueryGraph still has a field for Nodes, as a traditional QueryGraph would, b has a field for Paths. This example shows a query that requests Paths connecting Crohn's Disease with Parkinson's. All paths returned must connect these two nodes. -``` +```json "query_graph": { "nodes": { "n0": { @@ -55,7 +55,7 @@ which requires that all returned paths contain at least one node matching the sp In the example below, the intermediate category constraint listed requires that paths have at least one `Gene` node between them. -``` +```json "query_graph": { "nodes": { "n0": { @@ -93,7 +93,7 @@ and Edges both follow the same rules as all other queries, although for the sake contain all the required information typically found in a valid knowledge graph node and edge, such as knowledge level or source. -``` +```json "knowledge_graph": { "nodes": { "MONDO:0005011": { @@ -109,12 +109,12 @@ level or source. "categories": ["biolink:Cell"] } }, - "edges" { + "edges": { "e0": { "subject": "MONDO:0005011", "object": "NCBIGene:120892", "predicate": "biolink:condition_associated_with_gene" - } + }, "e1": { "subject": "NCBIGene:120892", "object": "MONDO:0005180", @@ -153,7 +153,7 @@ between two nodes are allowed. Using the Knowledge Graph above, we can construct the AuxiliaryGraphs shown in the example below: -``` +```json "auxiliary_graphs": { "a0": { "edges": [ @@ -173,7 +173,7 @@ Using the Knowledge Graph above, we can construct the AuxiliaryGraphs shown in t "edges": [ "e5" ] - }, + } } ``` @@ -189,7 +189,7 @@ constraints would yield a slightly different set of paths. As show below in the AuxiliaryGraphs, `a2` is removed because it does not contain any `Gene` nodes. Therefore, it is not a valid Path for the constrained version of the query. -``` +```json "auxiliary_graphs": { "a0": { "edges": [ @@ -221,7 +221,7 @@ Each analysis no longer contains EdgeBindings, with no QueryGraph edges to bind PathBindings to bind to QPath. Each Path Binding binds an Auxiliary Graph by `id` to a QPath. This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a QueryGraph Edge. -``` +```json "results": [ { "node_bindings": { @@ -238,6 +238,7 @@ This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a Quer }, "analyses": [ { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ @@ -248,6 +249,7 @@ This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a Quer "score": 0.85 }, { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ @@ -258,6 +260,7 @@ This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a Quer "score": 0.7 }, { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ @@ -275,7 +278,7 @@ This is similar to how EdgeBindings bind a KnowledgeGraph Edge, by id, to a Quer This is only valid for the unconstrained version of the query. The `intermediate_categories` constraint version would look like this. -``` +```json "results": [ { "node_bindings": { @@ -292,6 +295,7 @@ would look like this. }, "analyses": [ { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [ @@ -302,6 +306,7 @@ would look like this. "score": 0.85 }, { + "resource_id": "infores:shepherd-aragorn", "path_bindings": { "p0": { "ids": [