Thread View: comp.text.sgml
3 messages
3 total messages
Started by Erik Naggum
Mon, 11 Jan 1993 01:49
Normalization -- a software problem?
Author: Erik Naggum
Date: Mon, 11 Jan 1993 01:49
Date: Mon, 11 Jan 1993 01:49
91 lines
5771 bytes
5771 bytes
During the discussion about data bases and data querying, it looks like it's been taken for granted that an SGML document must be "normalized" to be used by an application, such as one feeding a data base. I don't understand this. Maybe I need to have my view of SGML processing shaken, but I've always thought that you want to read and process an SGML document only with an SGML parser because whatever you use to process it will have to be an SGML parser if it is to do things right. To illustrate: in the very beginning of my contact with SGML, I tried writing my own "office document application" which was supposed to use SGML, but of course it only understood a very limited input language, syntactically SGML-like, but semantically far from SGML, and I've seen and heard about lots of software that makes basically the same mistake I did. I assume that the intention with a "normalized" SGML document is to make it easier for this kind of half-hearted efforts to work with SGML documents. If I'm right, then we have a problem. SGML has very powerful abstraction mechanisms that programmers want to access. SGML is also a notation to make those abstractions representable in character strings (or files). When you want to access the abstract level, the element structure, you can only get at it if you parse the character string, and most programmers are not likely to want to do this, as it implies a lot of tedium, and some very intricate details that are hard to get right without imposing application- specific conventions that only serve to make lifer harder for both users and programmers, not to mention the documents that have to live with them. The solution to the problem is to put a powerful SGML parser between the input file and the application. This sounds obvious, and it is. The next problem is that people don't do this, and that they have good reasons for not doing it: it's not lack of availability of SGML software, but lack of availability of libraries with a well-defined, clean interface that allows the program to open any number of parsing instances on any number of entities (files or character strings) in parallel, access and navigate through the element structure, and dealing with both the character string representation and the element structure at the same time. I'm talking about the utilities that are all over the place to help us work with text. Where's the "grep" for SGML documents? Where's the regular expression matching routines that are aware of the position of a match in the element structure? Where's the concrete syntax converters? Where's the software to provide us with abstraction from the character set mess out there? My question boils down to this: If we'd had all or some of these utilities, a good library-type parser that would allow us to read and write SGML documents, while the programs saw the element structure, etc, why would anyone need normalization to make life "easier" for application programs? And would they gripe about short references, data tags, minimization, etc? The way I see it, a conceptually clean layering between the character string representation and the element structure needs to be established. I see some very good arguments about SGML documents on the basis of the element structure, but they seem to have problems with separating it from the character string representation, and the attendant features of SGML. I'm not competent to discuss many of the suggestions I've seen, but I'm alarmed at the preoccupation with the character string representation, with comments and tag minimization, etc. Admittedly, I haven't seen a lot of SGML software, but those that I've seen and heard of have one thing in common: they want to run the show and do everything themselves. I, on the other hand, want components from which I can build applications where the SGML parser is a transparent part of the I/O subsystem, and the entity manager takes care of all my file system access needs. Maybe this exists, but I'm unhappy with the focus on the user's view, with SGML sensitive editors and more or less support for SGML at various levels. It seems to me from my point of view that we have a long way to go, and it's not a matter of technology, but of approach and design philosophy. Not that this is unique to the SGML community, of course; it's the rampant user-only orientation and the trend towards a primacy of visual results that I'd like to see reversed so people could get complicated information processing tasks done. Maybe I've seen too little of the market and of what people do with SGML, and I have reason to believe that what I've seen may not be completely representative, but for most of the "information technology" industry, it's a sorry sight. Don't get me wrong: I appreciate better visual results, but not at the expense of software technology making a 10-year leap backwards with respect to the things that we want to _do_ with the information. To sum it up: do people need normalization because they only have SGML parsers tied up in programs that won't let them use components of it? Best regards, </Erik> -- Erik Naggum ISO 8879 SGML +47 295 0313 Oslo, Norway ISO 10744 HyTime <erik@naggum.no> ISO 9899 C Memento, terrigena <SGML@ifi.uio.no> ISO 10646 UCS Memento, vita brevis
Re: FrameBuilder
Author: drmacro
Date: Mon, 11 Jan 1993 15:46
Date: Mon, 11 Jan 1993 15:46
78 lines
4386 bytes
4386 bytes
Erik brings up some interesting points and I think he's generally
correct. The abstract model I have in my mind for SGML systems
is one where applications are separated from the data storage
component (database) by a true SGML parser and entity manager
that provides a completely-conforming SGML parsing "view" of
the data and hides the details of how the data is stored. On
top of this layer is what we might call a "logical access
interface" that only presents the resolved element tree view,
augmented by knowledge of data entities, something like this:
Application Layer
: A : A
: : V :
: : Logical Access Interface
: : : A
V : V :
SGML Parser/Entity Manager
: A
V :
Data storage and access
In this model, applications can either interact directly with the SGML
parser and entity manager or interact with the logical access
interface. The first choice represents traditional "translator"
applications where the application itself performs all document data
handling (e.g., builds its own data structures for holding information
about the document as it's processed). The other option is a "query
interface", where the knowledge of the document structure and content
is held and managed by the logical access interface as a service for
the application. This effectively provides a more abstract view of
the document data for the application. This is the sort of view that
data retrieval systems normally want. How the creation of this view is
implemented in practice is not important and could be via parsing of
the document instance on demand if the parser is fast enough.
This is a very abstract model and the methods of implementing
it are many and varied. I'm not sure there's a meaningful
difference between a system where SGML documents are parsed
into a database (without loss of structural data or knowledge
of data entities), from which all subsequent access is done,
and a system where all data access is done against the raw
SGML data itself. As long as the SGMLness of the data is
preserved such that it can be restored at will, it conforms.
Note that this is different from using "SGML-like" structures
or parsing SGML into a form in which some SGML aspects are
lost, even if the structure is preserved.
For example, the definition of SFQL presented at SGML '92 had no
mechanism for preserving knowledge of NDATA entities within
element content. Therefore, it fails the test defined above
because there is loss of vital SGML information. By the same token,
if the validity of the data in an "SGML database" cannot be
determined in exactly the same was as if the data was parsed
normally, the database system fails.
I can see a tremendous utility in the library system Erik
outlined, where a set of SGML access services are provided
that make SGML applications independent of any given SGML
parser or entity manager. I suspect that the first generally-
available (which may mean free) or well-defined set of functions
will become a defacto standard. It would be interesting to
see such a library defined as part of OSF/1, for example, or
as part of IBM's SAA architecture for application interfaces.
The DSSSL standard may provide such a definition,
I don't know, or it may provide sufficient definition of
what such a definition would have to provide in terms of
information about SGML documents to enable creation of a
complete design in the abstract. I would want to see such
an interface defined outside the scope of any implementations,
even if it is provided as part of a vendor product.
Eliot Kimber Internet: drmacro@ralvm13.vnet.ibm.com
Dept E14/B500 IBMMAIL: USIB2DK9@IBMMAIL
Network Programs Information Development Phone: 1-919-543-7091
IBM Corporation
Research Triangle Park, NC 27709
Re: FrameBuilder
Author: Wayne L. Wohler
Date: Mon, 11 Jan 1993 23:38
Date: Mon, 11 Jan 1993 23:38
47 lines
3225 bytes
3225 bytes
I agree with what Eliot and Eric have said about the need for an abstraction of the SGML information using an interface definition through an applications interface of some kind. I tend to think of the SGML parser/entity "interface" as an export/import cycle into and out of the data storage. This data storage is accessed through Eliot's Logical Access Interface for applications that support it. The SGML "interface" is used by any other SGML application that cannot make use of the logical access interface. Why have a logical access interface? Why not use the SGML data as the data storage? Efficiency is one reason. Backward compatibility with current product code is also another reason. In my thinking, it also does away with concerns for markup minimization and entity structures, although it cannot lose ignored marked section information or comments (I believe Eliot and I have a minor disagreement on this). At one level I think that the semantics which may be accessed across this interface must be flexible, depending on the nature of the application and the "wit" of the developers; I can see some real value to a standard here that many different products may plug into. In any case, this abstraction need need not mean a loss of important semantics if the underlying data storage has the semantics necessary to carry the necessary SGML information. What is the necessary SGML information? There is one definition today, that is ESIS. It is defined as that information which the SGML standard indicates must be available to the application, no more, no less. Unfortunately, given this definition some information that even a basic SGML application may need could not be included ... like the name of SDATA external entities. The DSSSL group is planning to support this ESIS definition in its work. We have asked for a few additions to the ESIS set to support our requirements. In addition, DSSSL also supports what we are calling ESIS+ which contains all the information necessary to recreate the SGML datastream, including ignored marked sections, comments, tag specification strings, etc.. The model is that DSSSL systems and DSSSL applications on these systems may choose one or the other to work with (with appropriately defined behaviour for both cases). Are there other public definitions of the "necessary" SGML information? Every SGML product intrinsically supports some view of what is necessary or unnecessary based on the information the application has access to. Wayne L. Wohler Internet: wohler@vnet.ibm.com Dept G82/910M IBMMAIL: USIB29WX@IBMMAIL Publishing Solutions Development Phone: 1-303-924-0470 IBM Corporation Boulder, Colorado 80301-9191
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads