#name: Core Ontology
#description: Things everyone should know


# we need these things just to get started. They all prety much need each other
# to be defined, so they are in no particular order
#
any	is-a	any
none	disjoint	any
relation	is-a	any
is-a	is-a	relation
has-a	is-a	relation
disjoint	is-a	relation
relation	has-a	size
size	is-a	positive-integer
identity	is-a	equivalence

# We need to be able to talk about the core object model so that we can plumb
# magic in without making it totaly obvious
#
triple	is-a	any
triple	has-a	source
triple	has-a	object
triple	has-a	relation
(triple,has-a,any)	size	3

remote-term	is-a	any
remoteTerm	is-a	has-a
(remote-term,remoteTerm,any)	size	1

triple-term	is-a	any
aTriple	is-a	has-a
(triple-term,aTriple,triple)	size	1

# and for optimizers or just plain searching, we need to know a little about
# what types of relationships could exist. Again, we've decdlared these things,
# but they probably need implementing in a hard-coded way somewhere
#
reflexive	is-a	relation
symmetric	is-a	relation
transitive	is-a	relation
injective	is-a	relation

equivalence	is-a	reflexive
equivalence	is-a	symmetric
equivalence	is-a	transitive
(equivalence,is-a,any)	size	3

partial-order	is-a	reflexive
partial-order	is-a	anti-symmetric
partial-order	is-a	transitive
(partial-order,is-a,any)	size	3

is-a	is-a	partial-order
part-of	inverse	has-a
