Hi Peter,
It is also possible to store the transitive closure of SNOMED (which can
be created by looping an SQL query until no new relations are inserted)
in a relational database and query it with SQL. The following extract is
a part of an SQL query that retrieves patients who had a colectomy or
any subconcept of colectomy:
`colectomy`.`snomedctconceptid` = '23968004' OR EXISTS (SELECT * FROM
`snomed`.`sct_transitiveclosure` AS tc WHERE `tc`.`SupertypeId` =
'23968004' AND `tc`.`SubtypeId` = `colectomy`.`snomedctconceptid`)
You can find details in the "SNOMED Clinical Terms Transforming
Expressions to Normal Forms" document.
Best,
Kathrin
..snip..
> You mentions something I wonder about. If you lock the ontology (for example
this is a release of SNOMED and you cant add new terms), and you run the reasoner
and store all the inferred triplets as RDF along with all the stated ones, then
could you really do just SPARQL at that point and not need a reasoner?
Yes, you can. In using SPARQL to query such data you can either rely on
'reasoning' at the point of evaluating the query (in which case the dataset
doesn't change) or 'directly' evaluating a query over the a priori deductions
from reasoning and the original stated facts. What you are describing is the
latter strategy and of course introduces issues with synchronizing these
additions with a) new data or b) updates to the ontology or rules. Each
approach has its strength and weaknesses, especially when considering use with
clinical data that may be serving multiple purposes.
-- Chime Ogbuji Sent with Sparrow (http://www.sparrowmailapp.com)
--
Kathrin Dentler
AI Department | Department of Medical Informatics
Faculty of Sciences | Academic Medical Center
Vrije Universiteit | Universiteit van Amsterdam
k.dent...@vu.nl | k.dent...@amc.uva.nl