Paul,
I suppose, cdm:entityId is redundant
and we can use rdf:ID instead. As a result:
1.1. In this case IEntity.getEntityID() will retun
rdf:ID.
1.2. In case of blank entity (previously known
as a complex value) it should return null.
1.3. entityId attribute will be
eliminated.
I suppose we need to do the
following changes to IdAS interfaces to be compatible
with CDM:
2.1. BlankEntity class has been
eliminated from cdm.owl. So, I suppose we need to do the same for IdAS
interfaces and replace IBlankEntity with IEntity (eliminate IBlankEntity
interface).
Because there is no any difference between entity
and complex value, we can define the following:
2.2. If
Entity has been created by IContext.addEntity(entityType,
entityID) method, it should always have entityID (should not be a
blank entity). In other words, a unique value should
be generated by a context and used as entityId, if no
entityId passed.
2.3. If Entity has been created
by IAttribute.addValue(URI) method, it should be a blank
entity.
2.4. If Entity has been added
by IAttribute.addValue(IAttributeValue) it should be the same type as
passed entity. If passed entity is a blank entity, new blank entity should be
created as a copy of passed, otherwise a reference to the
existent (non blank) entity should be created.
2.5. When Entity is deleted, all
its subentities which are a blank entity should be deleted
too.
Also we need more flex IFilter API:
3.1. IFilter should be able to query both types of entities as blank
as usual.
3.2. IFilter should be able to query a separate value
(entity or simple value) of any nesting level, not only direct attributes
of Entity.
Also I have some notes about CDM:
4.1. CDM.owl contains entityRelation and contextRelation object
properties. Do we need to reflect them in IdAS interfaces?
Thanks, Sergey
Lyakhov
|