Menu
|
This page presents a proposal alternate to Data Model Proposal in which a directory-like model is used as a basis, thus allowing the model to be surfaced using an established, well-known programming interface (such as JNDI). The goal of this proposal is to allow analysis of the relative benefits and drawbacks of re-using this particular known model (and subsequently API). This proposal aligns itself with the goals given in Data Model Goals M4. Contexts and DigitalSubjectsThere are a number of obvious ways, using a directory model, to represent the notion of there being a set of Contexts, each containing a set of DigitalSubjects.
In any of these ways, the relationship between a Context and its set of DigitalSubjects is the same. This allows normal, existing parent/child operations to be used. Context RelationshipsWhere an association between contexts is to be made, two obvious solutions come to mind:
Typed Digital SubjectsThe objectClass attribute could be used to denote the type of digital subject (this is the typical 'directory' way of doing it), or some other attribute may be used. The problem with “objectClass” is that it's syntax (type) limits the allowed format to be a very limited, simple alpha string. Thus it's likely that some new attribute would be used. Attributes of DigitalSubjectsThe most obvious solution here is to simply use directory attributes. These have an identifier, and a set of values. Attribute Types<todo: need feedback on what goal #6 on Data Model Goals M4 means in terms of “type”> Attribute ValuesThe type of an attribute value is controlled by that attribute's schema definition, and specifically by the syntax definition associated with that attribute. It may be desirable to define a set of higgins syntaxes (likely, one uber higgins syntax which could be derived into any other needed syntax). A higgins syntax would allow for (probably named) metadata to be attached to values of that syntax. One specific metadata element would be reserved for the attribute value's source (resolvable to an DigitalSubject in another more "meta" context). Attribute values in a directory may be defined to be compound or singular. DigitalSubject RelationshipsThere are two obvious ways of solving this requirement. These are identical to the two solutions given for Context Relationships. In these solutions the attribute used could be named “relatedSubject”. DigitalSubject Relationship TypesDepending on the solution picked for DigitalSubject Relationships, The type is either metadata on the relatedSubject attribute, or in the case of solution 2, could be an attribute itself (named something like “relationshipType”), or the objectClass attribute (see Typed Digital Subjects discussion above) DigitalSubject Relationship PropertiesAgain, this depends on the solution picked for DigitalSubject Relationships. The properties are either metadata on attributes, or attributes on objects. If defined as attributes on objects, the directory data model allows for what are called “operational attributes”. These are effectively attributes hidden unless specifically asked for. AddressingFor Contexts and DigitalSubjects, this is discussed above in Contexts and DigitalSubjects. The same scheme would apply to relationships if those were modeled as objects rather than attributes. For Attribute names, it gets slightly sticky. Traditional X.500 directories limit the character set used to name attributes. Here is where we would likely break away slightly from strict adherence to an X.500 model and allow any string (or more likely, any URI). What would this mean in terms of using traditional directory APIs? In the case of JNDI, nothing – Attribute identifiers are a String. Extremely strict applications (which currently consume JNDI) may need to be relaxed. It's quite unlikely that these types of applications exist. Fully Qualified DataSee discussions above on Contexts and DigitalSubjects and Addressing. DigitalSubject JoiningThe number of virtual directory products in existence (i.e. Penrose) are evidence that this may be done. Multilevel Context Provider SupportThis isn't strictly a data model topic, but it's on the Data Model Goals page so we'll address it. As long as the DigitalSubject Joining requirement is met, this goal should be met. However, if the goal is to present a model whereby one Context may hold subordinate Contexts, and this hierarchy is presented to the consumer (I don't think this is what the goal is getting at), then this goal may be met simply by representing subordinate Contexts as objects subordinate to the higher Context (differentiation of sub-Contexts and DigitalSubjects would be done using the objectClass or some other attribute). Last Modified 4/5/06 1:40 AM | Hide Tools |