🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

3 total messages Started by Erik Naggum Mon, 11 Jan 1993 01:49
Normalization -- a software problem?
#613
Author: Erik Naggum
Date: Mon, 11 Jan 1993 01:49
91 lines
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
#620
Author: drmacro
Date: Mon, 11 Jan 1993 15:46
78 lines
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
#625
Author: Wayne L. Wohler
Date: Mon, 11 Jan 1993 23:38
47 lines
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