Search code examples
simulationontologyprotegemedical

Expressing complex relationships in ontologies


I'm from a medical background and new to the concept of ontologies. I'm using Protégé to create an ontology for a resuscitation simulator. I have no problem expressing that "Blood pressure", "Oxygen saturations" and "Left ventricular ejection fraction" are disjointed subclasses of "Patient" and that "Intravenous fluid" is a subclass of "Medical interventions". However, I also want to express that intravenous fluids will increase blood pressure and decrease oxygen saturation as a function of left ventricular ejection fraction. I have no problem putting this function into code, but how do I best express it in an ontology so that non-medics can see this relationship? Or is this simply the point where an ontology ends and computer programming begins?

Thanks in advance for any help.


Solution

  • If you wish to express a mathematical function that a reasoner should be able to calculate as part of reasoning, I don't believe OWL has currently any support for this - I believe there are proposals for such an extension but I'm not sure of their status. See for example http://ceur-ws.org/Vol-921/openmath-01.pdf

    For query languages such as SPARQL, it is possible to define builtin functions that could produce those values as part of query answering; however this matches your "out of ontology and into programming" threshold.

    There's also SWRL - it has similar builtins support and can be used inside Protege, but it has different restrictions on which individuals can be involved and what assertions can be created.