Referencing Vertex/Edge Properties

Several operations (where, fields, render, etc.) reference properties of the vertices/edges during the traversal. GRIP uses a variation on JSONPath syntax as described in http://goessner.net/articles/ to reference fields during traversals.

The following query:

O.V(["ENSG00000012048"]).as_("gene").out("variant")

Starts at vertex ENSG00000012048 and marks as gene:

{
  "_id": "ENSG00000012048",
  "_label": "gene",
  "symbol": {
    "ensembl": "ENSG00000012048",
    "hgnc": 1100,
    "entrez": 672,
    "hugo": "BRCA1"
  },
  "transcipts": ["ENST00000471181.7", "ENST00000357654.8", "ENST00000493795.5"]
}

as “gene” and traverses the graph to:

{
  "_id": "NM_007294.3:c.4963_4981delTGGCCTGACCCCAGAAG",
  "_label": "variant",
  "type": "deletion",
  "publications": [
    {
      "pmid": 29480828,
      "doi": "10.1097/MD.0000000000009380"
    },
    {
      "pmid": 23666017,
      "doi": "10.1097/IGC.0b013e31829527bd"
    }
  ]
}

Below is a table of field and the values they would reference in subsequent traversal operations.

jsonpath result
_id “NM_007294.3:c.4963_4981delTGGCCTGACCCCAGAAG”
_label “variant”
type “deletion”
publications[0].pmid 29480828
publications[:].pmid [29480828, 23666017]
publications.pmid [29480828, 23666017]
$gene.symbol.hugo “BRCA1”
$gene.transcripts[0] “ENST00000471181.7”

Usage Example:

O.V(["ENSG00000012048"]).as_("gene").out("variant").render({"variant_id": "_id", "variant_type": "type", "gene_id": "$gene._id"})

returns

{
  "variant_id": "NM_007294.3:c.4963_4981delTGGCCTGACCCCAGAAG",
  "variant_type": "deletion",
  "gene_id": "ENSG00000012048"
}