4

I need to import SNOMED CT ontology into a graph database, in this case Neo4J but it could be another choice eventually.

However, I could not find a clear depiction of SNOMED CT underlying relational data model, in order to achieve this. Or at least, simplified SQL views that expose entity relantionship in a way that can be mapped to a graph database.

I would greatly appreciate any guidance or previous experiencies with this matter.

Manuel Salvadores
  • 16,287
  • 5
  • 37
  • 56
peleitor
  • 459
  • 7
  • 24
  • I am also working something similar to this, https://stackoverflow.com/questions/56951658/how-to-find-relationship-from-snomeds-postgres-sql-database. – Parvez Khan Jul 09 '19 at 11:35

4 Answers4

6

Directly trying to serialise the relational data model is probably going to be quite difficult and will take you further away from your goal.

It is worth noting that SNOMED data is actually available in RDF format already. So you get a graph structure for "free".

For example this project provides the data in a RDF format and putting RDF data into a graph is quite simple regardless of your choice of Titan or Neo4j.

Side Note:

A colleague of mine has actually worked on importing SNOMED data into a Grakn Graph, a semantic graph system we both work on. If you interested you can check out his work here. Grakn is a semantic graph solution which runs on top of Titan.

Filipe Teixeira
  • 3,565
  • 1
  • 25
  • 45
1

If you are looking for a sample on how to model the Concepts, Descriptions and Relationships into a Graph database. I have a sample project in Github that can upload the Snomed data into a Neo4j database.

https://github.com/pradeepvemulakonda/Snomed

Before you go into the implementation detail, I would suggest trying out the following Snomed data browser at

http://ontoserver.csiro.au/shrimp/

Once you get a feel of the concepts and relationships you can go through the implementation. You can use the following gist to understand how you can query the uploaded concepts and relationships in Neo4j.

https://neo4j.com/graphgist/95f4f165-0172-4b3d-981b-edcbab2e0a4b#listing_category=health-care-and-science

1

SNOMED can be loaded into MySQL using the UMLS (unified medical language system) released by NIH. Once loaded the table MRREL contains all the relations between SNOMED nodes. If you want load it right away in Neo4j you can totally skip the MySQL step and work directly with the UMLS RRF files. The RRF documentation format is not great but the files are easy to parse tabular text.

Manuel Salvadores
  • 16,287
  • 5
  • 37
  • 56
0

There are in fact three tables, Concepts, Descriptions and Relationships

You'll find them described here: https://confluence.ihtsdotools.org/display/DOCTIG/3.1.+Components

Most important are the relations between Relationships and Concepts and Descriptions and Concepts.

Bert Verhees
  • 1,057
  • 3
  • 14
  • 25
  • There are many more than three tables, and many important relationships, the most important of which are determined by the use-case. – LeeCambl Nov 10 '22 at 09:35
  • It depends on your information-architecture and the answer was meant to make it basically understandable, I have a scheme which works with three tables, but I admit, it is a bit old, like the discussion here is also – Bert Verhees Nov 25 '22 at 20:11