GraphGists

Using the Design for Queryability modeling approach by Ian Robinson

1. Application/End-User Goals

As a scientist, investor, patient, physician, friend

I want to know which company develops therapeutics for the treatment of cancer, what form of cancer, what is the target and in what stage of development is the therapeutic

So that we can understand treatment options, discuss such options with a physician in case I am the patient, or discuss options with friends and family, or make choices for investment to support the development of the therapeutic.

2. Questions To Ask of the Domain

Which companies are developing therapeutics for lung cancer and what is their name? Which therapeutics that are antibody-based are developed for non-small cell lung cancer and what is their development stage? Which companies develop therapeutics that target the molecule PDCD1?

3. Identify Entities

Which companies are developing therapeutics for lung cancer? Which therapeutics that are antibody-based are developed for non-small cell lung cancer and what is their development stage? Which companies develop therapeutics that target the molecule PDCD1?

  • Company

  • TherapeuticMolecule

  • Disease

  • Modality

  • DevelopmentStage

  • MolecularTarget

4. Identify Relationships Between Entities

Which companies are developing therapeutics for lung cancer? Which therapeutics that are antibody-based are developed for non-small cell lung cancer and what is their development stage? Which companies develop therapeutics that target the molecule PD-1? Which companies are developing therapeutics for lung adenocarcinoma?

  • TherapeuticMolecule developedByCompany Company

  • TherapeuticMolecule isIndicatedForDisease Disease

  • TherapeuticMolecule hasModality Modality

  • TherapeuticMolecule isInHighestDevelopmentStage DevelopmentStage

  • TherapeuticMolecule inhibits|activates MolecularTarget

  • Disease typeOfDisease Disease

  • Modality typeOfModality Modality

5. Convert to Cypher Paths

  • TherapeuticMolecule developedByCompany Company →

(:TherapeuticMolecule) - [:developedByCompany] -> (:Company)
  • TherapeuticMolecule isIndicatedForDisease Disease →

(:TherapeuticMolecule) - [:isIndicatedForDisease] -> (:Disease)
  • TherapeuticMolecule hasModality Modality →

(:TherapeuticMolecule) - [:hasModality] -> (:Modality)
  • TherapeuticMolecule isInHighestDevelopmentStage DevelopmentStage →

(:TherapeuticMolecule) - [:isInHighestDevelopmentStage] -> (:DevelopmentStage)
  • TherapeuticMolecule inhibitsTargets|activatesTargets MolecularTarget →

(:TherapeuticMolecule) - [:inhibitsTargets|activatesTargets] -> (:MolecularTarget)
  • Disease typeOfDisease Disease →

(:Disease) - [:typeOfDisease] -> (:Disease)
  • Modality typeOfModality Modality →

(:Modality) - [:typeOfModality] -> (:Modality)

Consolidate Paths

(:TherapeuticMolecule) - [:developedByCompany] -> (:Company)
(:TherapeuticMolecule) - [:isIndicatedForDisease] -> (:Disease)
(:TherapeuticMolecule) - [:hasModality] -> (:Modality)
(:TherapeuticMolecule) - [:isInHighestDevelopmentStage] -> (:DevelopmentStage)
(:TherapeuticMolecule) - [:inhibitsTargets|activatesTargets] -> (:MolecularTarget)
(:Disease) - [:typeOfDisease] -> (:Disease)
(:Modality) - [:typeOfModality] -> (:Modality)

(:TherapeuticMolecule) - [:developedByCompany] -> (:Company)
(:TherapeuticMolecule) - [:isIndicatedForDisease] -> (:Disease) - [:typeOfDisease] -> (:Disease)
(:TherapeuticMolecule) - [:hasModality] -> (:Modality) - [:typeOfModality] -> (:Modality)

Candidate Data Model

Company and Therapeutic Molecules

MATCH (c:Company)<-[:developedByCompany]-(t:TherapeuticMolecule)
WHERE c.Name = 'Biomarin Pharmaceuticals'
RETURN c.Name,t.Name

Therapeutic Molecules and Company Table

MATCH (t:TherapeuticMolecule)-[:developedByCompany]->(c:Company)
RETURN t.Name as therapeutic, collect(c.Name) as company
ORDER by therapeutic

Therapeutic Molecules and Company Table

MATCH (t:TherapeuticMolecule)-[:developedByCompany]->(c:Company)
RETURN t,c

Company, Therapeutic Molecules and Disease

MATCH (c:Company)<-[:developedByCompany]-(t:TherapeuticMolecule)-[:isIndicatedForDisease]->(d:Disease)
RETURN c.Name as Company,t.Name as Therapeutics,collect(d.Name) as Diseases

Company and Therapeutic Molecules indicated for Lung Cancer

MATCH (c:Company)<-[:developedByCompany]-(t:TherapeuticMolecule)-[:isIndicatedForDisease]->(d:Disease)-[:typeOfDisease*0..2]->(dc:Disease)
WHERE dc.Name = 'Lung Cancer'
RETURN c.Name as Company,t.Name as Therapeutics,collect(d.Name) as Diseases,dc.Name as DiseaseClass

Company and Therapeutic Molecules that target PDCD1

MATCH (c:Company)<-[:developedByCompany]-(t:TherapeuticMolecule)-[:isIndicatedForDisease]->(d:Disease),(t:TherapeuticMolecule)-[:inhibitsTargets]->(mt:MolecularTarget)
WHERE mt.Name = 'PDCD1'
RETURN collect(c.Name) as Company,t.Name as Therapeutics,collect(d.Name) as Diseases,mt.Name as MolecularTarget

Company and Therapeutic Molecules for Non-Small Cell Lung Cancer and their Development Stage

MATCH (c:Company)<-[:developedByCompany]-(t:TherapeuticMolecule)-[:isIndicatedForDisease]->(d:Disease),(t:TherapeuticMolecule)-[:inhibitsTargets]->(mt:MolecularTarget),(t:TherapeuticMolecule)-[:isInHighestDevelopmentStage]->(ds:DevelopmentStage)
WHERE d.Name = 'NSCLC-Non Small Cell Lung Cancer'
RETURN collect(c.Name) as Companies,collect(t.Name) as Therapeutics,d.Name as Disease,collect(mt.Name) as MolecularTargets,ds.Name as Stage