When trying to determine the compatibility of an object with a relation, it would help to move horizontally, rather than rely on inheritance. The SIMILARMAP operator allows us to access other objects that are in the same relation to another parameter of the relation. Let's say we have

"XXX owns YYY"


"??? is owned by XXX"

We may know a lot about XXX and the sorts of things they own, and we want to put that knowledge to use. When searching for similar objects, the reference through relations is automatic - that is, if we want to know what are the likely things that XXX owns, we will look at other relations where XXX owns something, and we will also search for ToOwn relations up the inheritance path. If XXX is a manufacturing company - manufacturing companies may own a factory, so we will find that. This alone is not enough.

We have "It was sold by XYZ Corp last week"

It would be useful to know the sorts of things that XYZ Corp sell, so let's look for anything that XYZ Corp has a right to sell - anything they own or produce. We know that XYZ Corp is a manufacturing company, so what do they sell? We need to go across from the connection established in the statement, to other relations.

2) A link to other relations

similarity toown.jpg (95347 bytes)

We know that, to sell something requires ownership, or agency, or manufacture or production. The diagram illustrates the connection between selling something and owning it. If we want to know what XYZ Corp is likely to be selling, we should look at what it, and its parents, own. Conversely, if we want to know what it owns, we could look at the sorts of things it sells.

See SYNONYMMAP for ways of creating and editing a SIMILARMAP.