“Vladimir” is the property of the object “People”,
and so on.
Such approach let us reduce the identifier
hierarchy to the object hierarchy and to avoid
artificiality of the identifier hierarchy. Identifiers
acquire substantial meaning and may be used for
referring by systems as well as by people. Efforts for
creation of such hierarchy are equal to efforts for
creation of the object structure, no more.
So, taking into account these additions
concerning identifier organization, we can ascertain
that the whole object space, being the object
hierarchy now, can be split on several sub-trees
having its root object associated with some service
used to store this root and nested objects. Sub-trees
can be extracted in arbitrary way with the single
restriction: every object should be associated with
one of services directly or through its ancestors.
Therefore, it is possible the situation when sub-trees
form another tree, where some branches give rise to
other sub-trees for other services. As a result, the
same service may be intermediate, having some
subordinate services, as well as terminal, storing
some objects directly. It gives significant flexibility
of distribution of objects among services, and so it
gives load-balancing flexibility and high scalability
of the object space as a whole.
Sub-trees may be joined and split on parts
without changes in object identification. As a result,
identifiers remain stable when moving objects. It is
sufficient to assign a new service to some higher
object to get access to it and all subordinate objects
through this service, without changes of identifiers.
By that we acquire higher flexibility of object
distribution among services.
Also it is important consequence that the object
hierarchy can be used to solve research tasks and not
only getting of specific objects by known identifiers.
Thus a user can browse the object tree investigating
what objects exist and what properties they have.
Moreover, the hierarchy can be overbuilt with a
query language like X-Path/X-Query. Efficient
execution of queries of such language is a separate
question, and it requires of course corrections in
light of global character of the object space.
3 OBJECT TYPIFICATION
The object space can have no typification
theoretically. But how to understand that two objects
describe the same entity, for instance, people, in this
case? Since every object has properties, we can try
to extract an entity from the fact of presence of some
typical properties, for example, for the entity
“Person”, the properties could be “Name” and
“Age”. But stars have names and ages too, which
does not mean that stars are people. Therefore
properties are not reliable for this.
There is only method to resolve the problem of
associating objects to entities: we should introduce
object typification. Every object in this case should
be related to some type which should
unambiguously determine the appropriate entity of
the real world. For instance, objects of the type
“Person” are not starts, but are people, and vice
versa. Object typification defines the way of
interpretation for all objects of some type. For
example, the task of analysis of social bounds has
sense for people, and the task of distance analysis
has sense for stars, but not vice versa.
So, to understand entities related to objects, we
should define a type for every object existing in our
space. But it is not enough. Correct interpretation of
an object means correct interpretation of its
properties, which requires that the same property
should be equally named for all objects of the same
type. Therefore, every type description should
contain the structure of typical object of the type.
Only in this case all objects of one type may be
processed in common way, reasoning from
commonness of their structure.
How should we store object types in the object
space to access them efficiently, not less efficient
than for objects themselves? The solution is simple:
we should represent object types as a special kind of
objects. Object types, being objects simultaneously,
relate to the special type corresponding to the entity
“Type”. Such recursive type definition let process
them as any other object.
What if an entity is a particular case of some
other entity, for instance, the entity “Sportsman” is a
particular case of the entity “Person”: what type
should be defined for the particular entity in this
case? The problem is that we can not relate one
object to two types simultaneously, but any object of
the type “Sportsman” should be related to the type
“Person”, what can we do? To resolve the
contradiction the concept of type inheritance should
be introduced.
Inheritance of some derived type from some base
type means that every object of the derived type is
also an object of the base type by definition, and so
it has all the properties of the base type. In our
example, we should introduce inheritance of the type
“Sportsman” from the type “Person”. When
inheriting, there is no necessity to repeat the
structure of the base type within its derived types:
ICSOFT 2008 - International Conference on Software and Data Technologies
276