Замечу, что есть (как минимум) два способа обработки подклассов.
1. Выполните union
-подобную операцию, используя or
:
; Find all animals, i.e. all dogs and cats:
[:find ?animal
:where (or [?animal :dog/some-attrib]
[?animal :cat/some-attrib])]
2. Добавьте общий атрибут 'super'
[:find ?a
:where
[?a :animal/some-attrib]]
; i.e. add an :animal attribute to all cats and dogs,
; to allow treat them as a collection.
Является ли последний основным вариантом использования для не пространственных имен, то есть отклоняющихся от нормы ?
Хотите знать, являются ли они двумя основными вариантами представления иерархии на уровне «класса» или «таблицы».
(отмечая, что в datomi c есть только одно универсальное отношение, но мы можем с пользой сделать вид, что у нас есть отдельные типы сущностей, используя пространства имен атрибутов, где это удобно - это очень распространенная практика).