At 01:23 PM 9/7/2006 -0700, Brian Moseley wrote:
On 9/7/06, Phillip J. Eby <[EMAIL PROTECTED]> wrote:

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.

i hear you, but i'd like to see a concrete example to help pull it
together for me, if you have some time. thanks.

Well, let's say we have a record type defined thus in Chandler:

@sharing.recordtype("http://schemas.osafoundation.org/pim/contentitem";)
def itemrecord(itsUUID, title, body, createdOn, description, lastModifiedBy):
    # details omitted

We might represent the type information as a set of EIM records like this:

("http://schemas.osafoundation.org/pim/contentitem";, "itsUUID", "UUID")
("http://schemas.osafoundation.org/pim/contentitem";, "title", "Text")
("http://schemas.osafoundation.org/pim/contentitem";, "body", "Text")
("http://schemas.osafoundation.org/pim/contentitem";, "createdOn", "Timestamp")
("http://schemas.osafoundation.org/pim/contentitem";, "description", "Text")
("http://schemas.osafoundation.org/pim/contentitem";, "lastModifiedBy", "UUID")

This provides enough data to be able to determine what record types exist, what columns they have, and what type they are. Of course, the type strings I gave above are made-up; they could be something that maps to e.g. XML schema types, if that's a suitable type system.

Notice too that this system can be self-expressing, e.g. via something like:

("http://schemas.osafoundation.org/EIM/typeInfo";, "typeURI", "URI")
("http://schemas.osafoundation.org/EIM/typeInfo";, "fieldName", "Text")
("http://schemas.osafoundation.org/EIM/typeInfo";, "fieldType", "TypeID")

But this meta-meta-information would be hardcoded rather than transmitted, since it has to be fundamentally agreed upon in order to be able to communicate at all. :)

With regard to the type system, it's possible for example that we might have a separate set of records for types, e.g.:

("Text", "...XSD for the text type...")
("UUID", "...XSD for the UUID type...")

etc.  (Again, if we want to use the XSD type system.)

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

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

Reply via email to