- From: Babich, Alan <ABabich@filenet.com>
- Date: Thu, 16 Jul 1998 14:45:49 -0700
- To: "'Jim Davis'" <jdavis@parc.xerox.com>, www-webdav-dasl@w3.org
Jim: I will get to your proposed compromise at the end of this e-mail. > DASL can provide, at most, the base datatype, which is like > the bicycle, but nothing else. (Even the XML Data drafts > don't go beyond, at most, some simple ranges limits. Still > more like a Geo Metro.) DASL can, if it wants to, provide the following in the query schema information FOR EACH PROPERTY, because the server has this information available: (1) property name. Required. This is good to provide. Then users don't have to guess the property names. (Guessing would be awful.) And, UI's can give instant, pinpoint accurate feedback right at the point of commission of the error when incorrect property names are entered for any reason, including typos and spelling errors. Also, a list of the legal properties could be shown to the user on demand. (2) data type. The 90% case is {numbers, strings, datetimes, Booleans}. DASL should let the datatypes for other datatypes be absent, with the understanding that the absence of a datatype means the property is not a number, string, datetime, or Boolean. (3) textual property description Optional. (4) case insensitive comparisons or not, case preserved or not. Required for strings if upcased or downcased, or if case insensitive comparisons are performed. If null, then not upcased or downcased, and comparisons are case sensitive. Disallowed for other datatypes. This reflects the common practices of more than a few systems. (5) value constraints Optional. Ranges, enumerated list of values etc. If unspecified, the value is not constrained in this way. I don't think this is in the 90% case, so I don't think DASL needs to go this far. (6) character set and collation sequence. Only allowable for strings. Collation sequence is defined to include case sensitivity or not. This information is known by the server and could be provided. However, I don't think we should go this far for DASL 1.0. I could continue with more information the server has available, but I've already gone past the point I think DASL should go for 1.0 . > Still more like a Geo Metro. For the following example, let's say DASL just provides (1) and (2) above. Then, DASL can probably support the following system adequately. If not, it can't. This system has made Billions of dollars, is an industry leader, and is still going strong. Queries can optionally be restricted to a folder, and optionally be restricted to any subset of the document classes. The query condition is always a conjunction of zero or more simple binary operator expressions, where the first operand is a property name, and the second operand is a literal constant of the appropriate type for the property. The only operators supported are >, <, >=, <=, =, !=, and the SQL LIKE operator. (NOT and OR are not used by this UI.) The properties must be of datatype number, string, or datetime. The system administrator can decide that a given specific string property is always upcased and that comparisons are case insensitive. When the user mistypes a property name, a clear error message pops up immediately. The user can retype it or use a pulldown of the property names. The operator can be typed or selected from a pulldown menu, whose contents depend upon the datatype of the property. If an non applicable operator is typed, a clear error message pops up immediately. The constant must be typed, and a clear error message is given as to what is wrong with the value if an improperly formed constant is typed. The system can find a document among tens of millions of other documents quickly. Unsophisticated clerks deal with it nicely, because it is so simple, yet it meets their needs. So, as to the characterization of this system as having a Geo Metro UI or a Cadillac UI, I don't think that characterization important. (Also, this system has more than one UI.) I think that what is important is supporting at least the functionality in this time proven system and similar systems. This requires (1) and (2) above: I assume that requiring (1) is self evident. Suppose we took away (2). Then the user could type an inappropriate operator or constant for the property. It would be sent to the server to the DASL layer, perhaps down through the API layer, and perhaps even into the SQL RDBMS. (It depends on where the checking is done.) The SQL RDBMS would give an error, the DMA layer would transform that into a 32 bit DMA error code, and, no matter where the error is caught, the DASL layer would return a three decimal digit error code that is overloaded (something vaguely indicating "improperly constructed query"). The user would have to wait to get the three digit error code, and then guess which part of his query was in error. This is a bad user experience. It also reduces productivity significantly because of the wait, and also because of extra network traffic and server CPU cycle consumption. >Smart UIs will use out of band information to get this metadata, >including, but not limited to, private agreements among implementors. >They can still transmit the query using DASL. I consider DASL 1.0 to be inadequate -- a failure -- if it can't support basic systems similar to the above example with only in band information. On future releases, the metadata DASL returns will have to be enhanced until the systems people think are important are adequately served. Let's let market demand tell us what those are. >> However, for the sake of interoperability, >>DASL must state that the datatype of the literal must be compatible >>with the datatype of the property and give all the details. > >I am not sure what details you are asking for. >Would this require DASL to >state the base datatypes for every RDBMS, OODB, and >DMS known to humanity? No, we won't have to support every datatype known to humanity, thank goodness. For details, we just say that numbers must not have extraneous garbage characters in them, datetimes must conform to date/time syntax (ISO 8601 or whatever), and Boolean constants must be "t" or "f". We can give a few more details, if we like, which would probably be a good idea. Maybe we could reference some standard(s) for the syntax of these literal values. That's all. OK. Now for the compromise. >1) The syntax of properties in the Query Schema Discovery will allow >for an optional datatype field (attribute or XML element, I don't >care much). The datatypes will be a subset of those defined in XML >Data sufficient for WebDAV properties. The only use of datatyping >in DASL will be in schema discovery, not in query terms. > >2) No datatyping in DASL 1.0, but we promise (as a WG) that DASL 2.0 >will incorporate XML Data in its full power and expressiveness >as soon as XML Data stabilizes (provided it does, and provided >there's not a better car available then.) > ... >Does either of these appeal to you? Yes, (1) appeals to me. (I've said essentially that in other e-mails.) Of course, when I read "optional datatype", I want it to mean optional in the sense of my number (2) above, i.e., that if the datatype is missing, that indicates that the datatype is NOT one of the basic datatypes DASL references (integer, real, string, Boolean, datetime). (That keeps us out of the business of being concerned with numerous non basic datatypes that aren't in the 90% case.) I see no downside to this approach. In other words, I view your number (1) as being close (or maybe even identical, depending upon the semantics of optionality) as requiring my number (1) and (2) above in the query schema. I consider that to be the absolute minimum. I would also like to see my number (3) and (4) above included in the query schema. However, I'm willing to discuss the possibility of not including (3) and/or (4) in DASL 1.0, even though I don't see a downside. As regards the syntax of the query schema, I think we should look at both alternatives -- using tags, and using attributes -- and pick the best approach. Alan Babich
Received on Thursday, 16 July 1998 17:48:44 UTC