Some time back I learnt of a feature of description logic – general concept inclusions (GCI). It took me a while to get my head around the idea, but I found this post the most effective, at least for me, in understanding what they were about. The first potential application I saw for these was in supporting the creation of a hierarchy with what I’ll call “vague” classes. This would allow a taxonomy to evolve, by evolving the “definition” – in this case the “left hand side” – of the groupers without interfering with the specific subtypes.
Consider an ontology of fruit. I might define some entities:
'Winter melon' EquivalentTo: 'Fruit' and comesFromPlant some 'Benincasa hispida'
'Honeydew' SubClassOf: 'Fruit' and comesFromPlant some 'Cucumis melo'
'Cantaloupe' SubClassOf: 'Fruit' and comesFromPlant some 'Cucumis melo'
'Cherry' SubClassOf: 'Fruit' and comesFromPlant some 'Prunus sp.'
'Peach' SubClassOf: 'Fruit' and comesFromPlant some 'Prunus persica'
Now, let’s say I want to organise these in some sort of groupings, say Melon and Stone Fruit.
Stone fruit is easy, I could say:
'Stone fruit' EquivalentTo: 'Fruit' and comesFromPlant some 'Prunus sp.'
*Note that Prunus persica is a linean subtype of the Genus Prunus (Prunus sp.)
But what about my Melon class? I could just go and state subclass relationships for the ones I want. But I’m happy with their definitions, why should I say more? I’m introducing a new concept – that’s the one I should be defining. The requirement is that I want it to subsume my existing melons.
The “melons” are spread across a couple of Genus so I can’t use the same approach as used for stone fruit. They’re all from the Cucurbitaceae family, but so are a bunch of other, non-melon, fruit. Enter GCIs.
'Fruit' and (hasBiologicalOrigin some 'Benincasa_hispida') SubClassOf 'Melon'
'Fruit' and (hasBiologicalOrigin some 'Cucumis_melo') SubClassOf 'Melon'
After I’ve defined these two GCIs, my three melons above will all classify as subtypes of Melon. I can add more GCIs later if I require more subtypes.
Perhaps I’m misusing GCIs here, but it seems a good way to define these vague things. Although I wonder if it’s almost a backdoor to introducing non-defining properties – which could be abused…
And here’s the OWL file.