It's a good question; the library is more intended for people who know
ontologies and don't care, or have never heard about, clojure. So the
documentation is biased in that way.
In this setting, an ontology is essentially a set of facts, that you can
test with a computational reasoner; so, it's something like logic
programming. I don't implement the reasoner -- someone else has done
that (in fact there are several). These reasoners can scale up to
100'000s of terms.
My example Pizza ontology shows it in use.
https://github.com/phillord/tawny-pizza
So, you can make statements like
(defclass CheesyPizza
:equivalent
(owland Pizza
(owlsome hasTopping CheeseTopping)))
and
(defclass MozzarellaTopping
:subclass CheeseTopping)
and finally,
(defclass MargheritaPizza
:subclass
(someonly hasTopping CheeseTopping TomatoTopping))
and the reasoner will work out that MargheritaPizza is a CheesyPizza.
In itself, this is simple, but you can build up more complex classes
like so.
(defclass VegetarianPizza
:equivalent
(owland Pizza
(owlnot
(owlsome hasTopping MeatTopping))
(owlnot
(owlsome hasTopping FishTopping))))
(defclass NonVegetarianPizza
:equivalent
(owland Pizza (owlnot VegetarianPizza)))
Of course, really takes flight when you have large ontologies. FMA which
models human anatomy, has I think, about 100,000 terms. SNOMED (ways you
can get ill) has millions.
Now there are lots of tools for building these; the novelty with tawny
is that the "raw" syntax is relatively simple (most of tawny-pizza does
not look like a programming language), but it is entirely programmatic;
so, it is possible to automate, build patterns, and integrate with
external infrastructure all in one place. I think that this is going to
be very useful, but we shall see!
While I am interested in biomedical and scientific ontologies, there are
lots of other applications. Probably the most famous one at the moment
is Siri (the iphone thingy) which is ontological powered underneath.
There are quite a few articles, varying in scope on ontologies on
ontogenesis
http://ontogenesis.knowledgeblog.org.
It is a very valid point, though. I should write some documentation on
ontologies for programmers. I shall work on it!
Phil
> --
--
Phillip Lord, Phone:
+44 (0) 191 222 7827
Lecturer in Bioinformatics, Email:
philli...@newcastle.ac.uk
School of Computing Science,
http://homepages.cs.ncl.ac.uk/phillip.lord
Room 914 Claremont Tower, skype: russet_apples
Newcastle University, twitter: phillord
NE1 7RU