At 12:05 PM 9/7/2006 -0700, Brian Moseley wrote:
wanted to follow up on this with you and bring bobby and ted into the loop.

we're going to have to assume that cosmo's code is never going to be
able to keep up with chandler's evolution, let alone the evolution of
third party parcels, so we're going to need some policy for handling
things that we don't understand.

to use the xml from
<http://wiki.osafoundation.org/bin/view/Projects/ExternalInformationModel>
for examples:

let's say cosmo doesn't understand the contact namespace. what do we
do with the <cta:record> that we find in that record stream? we
certainly don't want to lose the data. i think we could just store the
record as a generic type name and set of namespaced string attributes,
so that we could at least send back what chandler gave us, even if the
web ui doesn't do anything with the data.

also, do we need preserve type information? does cosmo need to know or
care that <con:createdOn> is a timestamp? probably, since eventually
the web ui will want to display it as such. but what about for third
party namespaces that we don't know anything about?

i'm tempted to rely on xml schemas to communicate type information.
cosmo could look at the content item schema to determine that
<con:createdOn> is a timestamp and store the value as such. this would
probably require us to package the schemas with cosmo and to require
schema updates on the client end to be backwards compatible - or again
for cosmo to have a reasonable way to cope with unexpected schema
changes.

do you see any problems with using xml schemas? we could alternatively
encode type information right into the xml, but i don't like the
verbosity and implied inefficiency.

If we have this kind of meta-information, I'd like to represent it in EIM form, rather than having another format. It means that we don't need to have multiple formats for the same information. An XML schema seems like overkill, given that we are talking about essentially relational data here; a simple 3-field record structure of the form (table, column, type) suffices to encode almost all the meta-information for a transmission, assuming that we have some reasonable vocabulary for "type". The other piece of information that might be relevant is uniqueness and inter-table constraints; with that information you could literally construct tables in your database to store the exact EIM data. (Which would also leave open the interesting possibility of having query APIs against it.)

Now, there's no reason you can't transform this kind of information into an XML schema, but unless it gives some additional benefit vs. just slapping together a few basic record types and an initial type vocabulary, I don't see a reason to add the XML schema part.

To put it another way, both Cosmo and Chandler are already going to have to have code to read, write, and understand EIM records, so why also add code to read/write/understand an XML schema too? :) So we might as well represent any schema information as some additional EIM records that just have a hard-coded schema.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev

Reply via email to