NOTE-webarch-extlang-19980210 28 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
system "http://www.w3.org/TR/WD-html40-970917/sgml/HTML4-loose.dtd"
>
<HTML>
<HEAD>
  <!-- $Id: NOTE-webarch-extlang-19980210.html,v 1.7 1998/02/10 21:38:32 connolly Exp $ -->
  <TITLE>Web Architecture: Extensible languages</TITLE>
</HEAD>
<BODY BGCOLOR="white" TEXT="black">
<DIV class="header">
  <H3>
    <A href="../../"><IMG border="none" align="left" alt="W3C" src="../../Icons/WWW/w3c_home"></A>
  </H3>
  <H1 align="center">
    Web Architecture: Extensible Languages
  </H1>
  <H3 align="center">
    W3C Note 10 Feb 1998
  </H3>
  <DL>
    <DT>
      This Version:
    <DD>
      <A HREF="http://www.w3.org/TR/1998/NOTE-webarch-extlang-19980210">http://www.w3.org/TR/1998/NOTE-webarch-extlang-19980210</A>
    <DT>
      Latest Version:
    <DD>
      <A HREF="http://www.w3.org/TR/NOTE-webarch-extlang">http://www.w3.org/TR/NOTE-webarch-extlang</A>
    <DT>
      Authors:
    <DD>
      <A href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</A>
      <TT><A href="mailto:timbl@w3.org">&lt;timbl@w3.org&gt;</A></TT> W3C <BR>
      <A href="http://www.w3.org/People/Connolly/">Dan Connolly</A>
      <TT><A href="mailto:connolly@w3.org">&lt;connolly@w3.org&gt;</A></TT> W3C
  </DL>
  <H2>
    Status of This Document
  </H2>
  <P>
  <I>This document is a NOTE made available by the W3 Consortium for discussion
  only. This indicates no endorsement of its content, nor that the Consortium
  has, is, or will be allocating any resources to the issues addressed by the
  NOTE.</I>
  <P>
  This work is related to the Architecture domain of the W3C, and particularly
  to the <A HREF="../../XML/">XML</A> activity, but is related to
  <A HREF="../../MarkUp/">HTML</A>, <A HREF="../../Protocols/HTTP/">HTTP</A>
  and <A HREF="../../Metadata/">Metadata</A> activities.
  <P>
  Comments should be sent to the authors and
  <A HREF="mailto:www-talk@w3.org">www-talk@w3.org</A>.
  <P>
  This document is meant to be a fairly explanatory synthesis of the requirements
  for namespace extension in languages on the web, and in particular for the
  general language planned to be the common basis of many future applications,
  XML. &nbsp;It was originally written as part of the
  "<A HREF="../../DesignIssues/">Design Issues</A>" series of notes. Whilst
  technically the personal opinion of the authors, it their best attempt as
  technical coordinators at&nbsp;outlining common architectural principles
  for W3C development.
  <P>
  At the time of writing [1998/02], various drafts in the XML and RDF community
  address these requirements in various ways. &nbsp;The document may evolve
  if further clarity is seen to be needed, or further requirements added. Some
  open issue are noted.
  <H2>
    Abstract
  </H2>
  <P>
  Experience with the task of coordinating developments by independent groups
  has allows us to define properties of languages which will allow the unfettered
  growth of the Web technology in a chaotic but still well defined way. These
  take the form of constraints on the language features for making reference
  to multiple different vocabularies, and on languges for "schema" documents
  which define those vocabularies. 
    <HR>
  <H2>
    Contents
  </H2>
  <OL>
    <LI>
      <A HREF="#Introduction">Introduction</A>
    <LI>
      <A HREF="#Requirements">Requirements</A>
      <OL>
	<LI>
	  <A HREF="#Glossary">Glossary</A>
	<LI>
	  <A HREF="#Mixing">Mixing vocabularies</A>
	<LI>
	  <A HREF="#Scenario">Scenario</A>
	<LI>
	  <A HREF="#Local">Local scope</A>
	<LI>
	  <A HREF="#Ambiguity">Lack of ambiguity</A>
	<LI>
	  <A HREF="#Evolving">Evolving new scheme languages</A>
	<LI>
	  <A HREF="#Correctness">Correctness of documents with multiple vocabularies</A>
	<LI>
	  <A HREF="#Granularity">Granularity</A>
	<LI>
	  <A HREF="#Incorporation">Incorporation into the language</A>
      </OL>
    <LI>
      <A HREF="#Related">References</A>
  </OL>
</DIV>
<!-- end header division -->
<P>
  <HR>
<H2>
  <A NAME="Introduction">Introduction</A>
</H2>
<P>
When the World Wide Web Consortium was first put together, high on the list
of goals of the Consortium was making the web "evolvable". &nbsp;At that
time, it was a philosophical goal and it wasn't clear what it would mean
technically. Since then, W3C has had plenty of experience in the deployment
of new technology, &nbsp;particularly in an environment of thousands of
independent groups developing in closely related or identical fields.
<P>
The HTTP and HTML specifications have both grown rapidly in this environment.
The existence of an open and freely usable standard allows anyone in the
world to experiment with extensions. Deployment of experimental features
was enabled by one simple rule, inherited with care from the Internet email
community:
<H4>
  Rule used to date:
</H4>
<P>
<TABLE BORDER CELLPADDING="4">
  <TR>
    <TD><P ALIGN=Left>
      <I>Old rule:</I> If you find a language element you don't understand, ignore
      it.</TD>
  </TR>
</TABLE>
<P>
(The exact definition of "Ignore" varies - HTTP headers are actually ignored
and HTML elements are replaced with their contents (ie unknown tags are ignored)
- but the principle has been the same.)
<P>
This rule has covered web development from 1989 to the present. The result
has been a very high speed of growth. However, a &nbsp;state of ambiguity
and lack of interoperability always exists from the introduction of an
experimental feature until the later agreement on a common standard . This
weakened the reliability and credibility of the Web. Furthermore, there has
always been a threat that lack of consensus on new features would lead to
a permanent fragmentation of the evolutionary paths.
<P>
The problem was that neither the specification of new elements nor the effect
of ignoring them was ever clearly defined. Contrast this to the situation
in most distributed object systems. &nbsp;In these cases, objects and support
classes generally have well defined interfaces. Whilst ensuring interoperability,
the rigidity of this system, in which new interfaces had to be explicitly
agreed between parties, has been one of the factors inhibiting such systems
from spreading in web-like or virus-like manner. As discussed in
<A HREF="#Ascent">[Ascent]</A>:
<BLOCKQUOTE>
  And yet the ability to combine resources that were developed independently
  is an essential survival property of technology in a distributed information
  system.
</BLOCKQUOTE>
<P>
Can we have the best of both worlds, and have clearly defined interfaces,
but also allow systems from different communities to communicate when having
only a partial understanding of each other's specifications? &nbsp;This need
has surfaced from many areas from HTTP extensions (see the
<A HREF="../../Protocols/Activity.html#PEPspec">PEP requirements</A>) to
Metadata (see design notes on
<A HREF="../../DesignIssues/Metadata.html">Metadata architecture</A>).
<H2>
  <A NAME="Requirements">Requirements</A>
</H2>
<P>
The need is for two systems to be able to communicate when they have a common
vocabulary but not complete understanding of all the features they each use.
&nbsp;As these requirements are derived from experience across many different
systems, we will have to chose which words to use in this document.
<H4>
  <A NAME="Glossary">Glossary</A>
</H4>
<P>
For the purposes of this document, words are used as follows:
<P>
<DL>
  <DT>
    <B>element</B>
  <DD>
    A range text within of a document, identified by a local identifier.
  <DT>
    <B>vocabulary</B>
  <DD>
    a set of local identifiers in a document, (which identify parts of the document),
    and whose meaning (at some level) is defined by generic resource. The namespace
    resource conceptually represents the vocabulary in general, which may be
    represented by one or more schemata.
  <DT>
    <B>schema</B>
  <DD>
    A specific document which defines a vocabulary (at some level)
  <DT>
  <DD>
</DL>
<P>
Although this is a general document, it is hoped that these terms are not
used inconsistently with their use in XML (element) and RDF (schema).
<P>
There is some rough correspondence in the soup of terms as follows.<BR>
<CENTER>
  <TABLE BORDER CELLPADDING="2" ALIGN="Center">
    <TR>
      <TH>This document</TH>
      <TH>SGML</TH>
      <TH>HTTP</TH>
      <TH>Programming languages</TH>
      <TH>RDF</TH>
    </TR>
    <TR>
      <TD>Element</TD>
      <TD>Element</TD>
      <TD>Header</TD>
      <TD>Function/Procedure/Method call</TD>
      <TD>Element</TD>
    </TR>
    <TR>
      <TD>Binding</TD>
      <TD>-</TD>
      <TD>(PEP header)</TD>
      <TD>"Import", external declaration</TD>
      <TD></TD>
    </TR>
    <TR>
      <TD>-</TD>
      <TD>Entity declaration</TD>
      <TD>-</TD>
      <TD>#Include</TD>
      <TD></TD>
    </TR>
    <TR>
      <TD>Declaration</TD>
      <TD>Element declaration</TD>
      <TD>(http spec)</TD>
      <TD>Function declaration</TD>
      <TD></TD>
    </TR>
    <TR>
      <TD>Schema</TD>
      <TD>DTD</TD>
      <TD>(none!)</TD>
      <TD>Module interface definition</TD>
      <TD>Schema</TD>
    </TR>
    <TR>
      <TD></TD>
      <TD>Content model</TD>
      <TD></TD>
      <TD>Parameter type</TD>
      <TD></TD>
    </TR>
    <TR>
      <TD></TD>
      <TD>Attributes</TD>
      <TD></TD>
      <TD>Parameter type</TD>
      <TD></TD>
    </TR>
  </TABLE>
</CENTER>
<P>
<H3>
  <A NAME="Mixing">Mixing vocabularies</A>
</H3>
<P>
When a message is sent across the Internet as part of a Web communications
protocol, it is tempting as above to compare the message with a remote procedure
call, and to adopt the characteristics of a procedure/method call from
distributed OO systems. &nbsp;A procedure call identifies the target object,
one of a finite number of methods from the exported interface, and a set
of typed parameters.
<P>
However, this analogy is not powerful enough. &nbsp;A message should &nbsp;be
considered an expression and, if one takes an analogy with programming languages,
the analogy should be with an expression or program rather than with a function
call. [Or, if considered a function call, strictly, the parameters have to
be extended to allow other nested function calls]. &nbsp;In this case, there
may be many functions identified, in many interfaces. &nbsp;In other words,
don't think of an HTTP message or an HTML document as an RPC call, but rather
as the transmission of a expression in some language.
<P>
In the case of an XML document, this corresponds to a document which contains
elements whose declarations occur in many different specifications (SGML:
many different DTDs). This is the requirement brought out under "Metadata
architecture", of <A HREF="../../DesignIssues/Metadata.html#Mixing">mixing
vocabularies</A>:
<P>
<TABLE BORDER CELLPADDING="4">
  <TR>
    <TD>It must be possible at one point in a document for more than one vocabulary
      to be in scope.</TD>
  </TR>
</TABLE>
<H4>
</H4>
<H4>
</H4>
<H3>
  <A NAME="Scenario">Scenario</A>
</H3>
<P>
Imagine that I send you an invoice for an aeroplane part I am shipping to
you. &nbsp;The invoice is mostly in common business language, and the vocabulary
such as item, cost, quantity, authorizing signature, total cost and due date
are well known to both of us. &nbsp;However, the item is specified in an
expression which details exactly which engine lower inspection hatch door
mount bracket lock nut is involved. &nbsp;Neither you nor I actually have
to understand this vocabulary and references to part numbers and the like.
Only the person or machine loading the part onto the truck, and the person
or machine installing the part in the aircraft need to know it. &nbsp;It
is true that we need to agree about the cost and the significance of the
signing authority, as that is part of the protocol between us.
<P>
This sort of thing happens all the time in real life. Documents mix vocabularies
defined in different places. We are always making decisions about which of
the myriad of things we don't understand are important to us. &nbsp;We are
constantly handling information with partial understanding. &nbsp;Imagine
if an old version of a word processor could read a file written by a new
version with partial understanding, rather than panicing that it had met
a being from the future. &nbsp;It also happens all the time on the web, as
people bury private elements such as index tags and editing information inside
HTML files.
<P>
The requirement is for the new vocabularies to be well defined, like the
basic vocabulary.
<P>
By analogy with a programming language, a Web document or protocol message
should be able to include expressions combining &nbsp;calls to functions
from many modules. This is so fundamental to programming languages that it
has gone without saying, but it has not been possible in SGML.
<H4>
  Same scope
</H4>
<P>
What does "within the same scope" mean? It means that just nesting one sort
of document inside another is not good enough. &nbsp;It means that I must
be able to write an expression or compound element which combines elements
from two vocabularies. &nbsp;(In fact, strictly, wherever there is an expression
tree which combines identifiers from more than one vocabulary, one can in
theory break it down to a set of nested subtrees each of which only uses
one vocabulary and could be considered a "subdocument", but in practice this
is impractically cumbersome.) For example, if I can extend HTML to include
Math, in this way one is able to use HTML bold tags still within a Math
expression.
<P>
<H3>
  <A NAME="Local">Local scope</A>
</H3>
<P>
There is a practical requirement that it must be possible to introduce a
new vocabulary in part of a document in a way that requires changes only
locally within the document. &nbsp;This means that for example it must be
possible to introduce a new vocabulary within a local block. Here is an example
in an arbitrary syntax, where "NS:using" is the <B><I>binding</I></B> of
local identifiers starting with "<CODE>f</CODE>" to a schema
<CODE>http://blah/currency</CODE>
<PRE>   &lt;a:details&gt;
    &lt;NS:using href="http://blah/currency" as="f"&gt;
	&lt;a:price&gt;
		&lt;f:chf&gt;4.00&lt;/f:chf&gt;
	&lt;/a:price&gt;
    &lt;/NS:using&gt;
   &lt;/a:details&gt;
</PRE>
<P>
The binding between the local identifier and the schema is textually local.
There is no need to a binding in the document's head. In general this makes
document management much easier. It makes checking a document easier, as
you can in some cases verify an embedded piece without having to check the
whole document.
<H4>
  Why?
</H4>
<P>
A specific need for local scoping comes from the fact that many documents
are generated (for example by CGI scripts) &nbsp;by calling programs to output
parts in context, and the program which generates the parts has no access
to the rest of the document.
<P>
In theory it would always be possible to take such a document with nested
bindings of namespaces, and find all those bindings, and generate new local
prefixes for each so that they are unique, and then move all the bindings
to the top of the document. Therefore, a document using local scope can be
converted into one which only uses global scoping. However, this requires
buffering of all the document, and so cannot be done in pipelined systems,
and pipelined systems are often a necessity in the Web in order to achieve
acceptable response times.
<P>
Another case involves very long documents using many namespaces. Typically
web applications have to be able to cope with documents of arbitrary length.
Imagine a document which, every paragraph, refers to a new name space. (A
proof by example would be a document documenting many namespaces.. but image
also a list of suppliers each of which has its own catalog schema.). As
processing of the document continues, if the bindings of namespaces are local,
then each is made and discarded. The working set needed for processing the
document is finite. In the case in which the bindings are global in scope,
then the working set size increases linearly with the length of the document,
and the product of resource utilization and processing time then rises as
the square of the document size.
<P>
A third example of a need for local scoping is that for many uses of XML
(take SMIL for example) concatenation of two documents to make one document
should be a simple process. Indeed, a worthy design goal would be to require
that the concatenation of any two XML documents be an XML document. If local
scoping is not available, the concatenation function requires the rewriting
of one document from beginning to end changing local identifiers where they
clash.
<P>
In general, one can call on all the design experience of the computer science
community which, over the years, has seen the need for block structured languages
with local scoping. There have been many factors influencing this, but one
unmentioned to date has been the maintainability of programs/documents. When
the binding of a name and its use can be close together, for human-maintained
documents, mistakes are much less likely.
<P>
<TABLE BORDER CELLPADDING="2">
  <TR>
    <TD>It must be possible to introduce a new vocabulary in part of a document
      in a way that requires changes only locally within the document.</TD>
  </TR>
</TABLE>
<H3>
  <A NAME="Ambiguity">Lack of ambiguity</A>
</H3>
<P>
Some programming languages allow one to introduce identifiers from new name
spaces in such a way that it is not possible to know which namespace a local
identifier belongs to without accessing both the module interface specifications
and checking which one has with the highest priority, or &nbsp;most recently
in the document, redefined a given local identifier.
<P>
This may have some uses in a programming language such as
Java<A HREF="#Java">[Java]</A>, but it has a serious flaw in that when one
module changes (without the knowledge of the designers of the other module),
it can unwittingly redefine a local identifier used by the second module,
completely changing the meaning of a previously written document. Clearly,
in the Web world in which modules evolve but documents must have clearly
defined meanings, this is unacceptable. &nbsp;Contrast with Modula-3, where
all names are either lexically scoped or fully qualified
<A HREF="#SPwM3">[SPwM3]</A>.
<P>
<TABLE BORDER CELLPADDING="2">
  <TR>
    <TD>The syntax must unambiguously associate an identifier in a document with
      the related schema without requiring inspection of that or another schema.</TD>
  </TR>
</TABLE>
<P>
This is the reason for the use of a prefix &nbsp;in the XML namespace proposal
to tie the use of an identifier directly to the specification of the name
space. Notice that in the example above, the fact that the binding element
actually creates a new level of nesting removing all ambiguity.
<H3>
</H3>
<H3>
  <A NAME="Evolving">Evolving new schema languages</A>
</H3>
<P>
In SGML the "DTD" defines, for an SGML element, what possible other elements
may be nested inside it. &nbsp;For example, on an invoice, it may specify
that the signing authority must be either Tom or Joe. It may specify that
an item can be any part number or any accessory number or any book number.
Checking the SGML validity of a document is a process which can be done
automatically from the DTD. This is &nbsp;a check at a certain low level
in that it does not verify semantic correctness, only structural correctness.
&nbsp;But the structural constraints alone are useful in many ways. For example,
a &nbsp;user interface for constructing a document can be generated automatically
from the structural constraints.
<P>
We plan to introduce more powerful languages for describing not only the
structure of a document, but the semantics to an extent that not only can
checking be automated to a higher level, but also so can the processing of
a document and reasoning about its contents be automated. Therefore it is
essential that when a document is written to refer to a namespace, the name
space definition should be a generic resource whose instances may include
schemas in various languages at various levels of sophistication. &nbsp;This
is an essential growth point for the web.
<P>
<TABLE BORDER CELLPADDING="2">
  <TR>
    <TD>The resource defining a namespace may be generic and allow definitions
      of the namespace in varying present or future languages.</TD>
  </TR>
</TABLE>
<H3>
  <A NAME="Correctness">Correctness of documents with multiple vocabularies</A>
</H3>
<P>
How does one check the validity/correctness of a document with multiple
namespaces? Clearly one must be able to find definitions of the namespaces
at the appropriate level, and combine them. Looking at the example above
of the invoice, we notice a difference.
<P>
In the case of the "content model" for an authorizing person, the designer
of the invoice intended that in fact the schema should be extensible so that
any new object could be included as an item. &nbsp;For example, one could
use a part number system from any new supplier, just by incorporating the
namespace. However, when it came to the "content model" for an authorizing
person, only Tom or Joe should be able to sign. No namespace extension should
be allowed to redefine the permissible content model
<P>
<TABLE BORDER CELLPADDING="2">
  <TR>
    <TD>There must be a way of indicating when a given content model may be extended
      by new schemas.</TD>
  </TR>
</TABLE>
<P>
<TABLE BORDER CELLPADDING="2">
  <TR>
    <TD>There must be a way, in a new schema, of &nbsp;specifying that a given
      new content model is designed an extension to the existing content model
      of an existing schema.</TD>
  </TR>
</TABLE>
<P>
These are constraints on the schema language. &nbsp;(They are
<A HREF="http://www.w3.org/TR/1998/NOTE-XML-data-0105/Overview.html#OpenClosed">addressed</A>
by the XML-DATA discussion NOTE.)
<H3>
  <A NAME="Granularity">Granularity</A>
</H3>
<P>
With what granularity should one be able to define new vocabularies in XML?
&nbsp;The analogy with programming languages suggest that we can understand
how to add new elements (functions) but that adding new attributes to existing
elements (parameters to existing functions) is difficult to define when one
gets above the structural level.
<P>
Although scheme languages do not yet exist to define semantic relations and
typing, clearly there will be need for extension of concepts to type. Perhaps
the need for content model extension will in fact represent the same need.
<H3>
  <A NAME="Incorporation">Incorporation into the language</A>
</H3>
<P>
The namespace functionality &nbsp;is a very fundamental part of the language.
A language processor which does not understand it can check what in XML is
called "well-formedness", ie basic syntactic correctness, of a document,
but can do no more.
<P>
A fundamental processing need outlined above is "partial understanding".
I envisage three ways in which partial understanding can be accomplished,
when a document in an "original" schema's vocabulary includes some of a "new"
schema's vocabulary:
<P>
<OL>
  <LI>
    It may be possible to mathematically deduce what information can be ignored
    from properties of the original schema;
  <LI>
    At a simple level this could be built into the language itself so that it
    can be expressed in the document itself; &nbsp;(analogy with PEP extensions
    to HTTP).
  <LI>
    The "new" schema may allow one to deduce what can be ignored. It may even
    give mappings which allow expressions in the new schema's vocabulary to be
    replaced with simpler expressions in better known vocabularies.
</OL>
<P>
Notice that the first two ways do not require one to be able to access or
understand the "new" schema in order to decide whether to ignore it. &nbsp;This
is a powerful and important feature. &nbsp;Taking against the invoice example
above, it is essential to be able to process the invoice at some level without
even looking up on the Web any definition of the part numbers. It is sufficient
for the invoice itself declare that the item specifications don't matter
as far as the validity of the invoice as an invoice.
<P>
<TABLE BORDER CELLPADDING="2">
  <TR>
    <TD>It should be possible to create an original document schema such that
      one can determine, without access to the extension schema,&nbsp;which uses
      of extensions to that document can be ignored.</TD>
  </TR>
</TABLE>
<P>
The difference between the first two ways &nbsp;above is whether some
functionality is regarded as basic to the language or part of a very commonly
understood namespace of elements for document construction. This design decision
is not currently clear.
<H3>
  Revision and evolution of namespaces
</H3>
<P>
This document does not define the requirements of schema languages, nor of
languages with which to assert the equivalence of assertions made using different
vocabularies. However it is worth noting that the architecture expects
machine-readable documents to describe the relationship between different
schemas, including between a schema and later evolved versions of the schema.
The namespace functionality itself is not required to address that issue
directly.
<H2>
  <A NAME="Related">References</A>
</H2>
<DL>
  <DT>
    <A NAME="Ascent">[Ascent]</A>
  <DD>
    <A HREF="http://www.cs.caltech.edu/~adam/papers/xml/ascent-of-xml.html"><CITE>The
    Evolution of Web Documents: The Ascent of XML</CITE></A>
  <DD>
    Dan Connolly, Rohit Khare, and Adam Rifkin, W3J special Issue on XML, Vol
    2, Number 4, Fall 1997, Pages 119-128
  <DT>
    <A NAME="Java">[Java]</A>
  <DD>
    <A HREF="http://java.sun.com/docs/books/jls/html/index.html">The Java Language
    Specification</A>, James Gosling, Bill Joy, Guy Steele, Edition 1.0, (Converted
    from the printed book, August 1996, first printing) esp. Section 6.5
    <A HREF="http://java.sun.com/docs/books/jls/html/6.doc.html#20569"><CITE>Determining
    the Meaning of a Name</CITE></A>
  <DT>
    <A NAME="SPwM3">[SPwM3]</A>
  <DD>
    Systems Programming with Modula-3, November 1989. esp. Section 2.5
    <A href="http://www.research.digital.com/SRC/m3defn/html/units.html"> Modules
    and interfaces</A>
  <DT>
    <A NAME="SMIL">[SMIL]</A>
  <DD>
    <A HREF="WD-smil-0202">Synchronized Multimedia Integration Language</A> W3C
    Working Draft 2-February-98 Philipp Hoschka
  <DD>
</DL>
<H3>
  Bibliography
</H3>
<DL>
  <DT>
    <A HREF="http://opera.inrialpes.fr/OPERA/BibOpera.html#[Akpotsui97]"><CITE>Type
    Modelling for Document Transformation in Structured Editing
    Systems</CITE></A>
  <DD>
    E. Akpotsui, V. Quint and C. Roisin. Mathematical and Computer Modelling,
    Volume 25, Number 4, Pages 1-19, 1997.
  <DT>
    <CITE>Theory of Semiotics</CITE>
  <DD>
    <A HREF="http://www.dsc.unibo.it/istituto/people/eco/eco.htm">Umberto Eco</A>
    Indiana Univ Press February 1979 ISBN: 0253202175
  <DT>
    <A HREF="http://www.hf.ntnu.no/anv/WWWpages/Hyper/Hypermedia.html"><CITE>The
    electronic hypermedia encyclop&aelig;dia: transcending the constraints of
    the "authoritative work"?</CITE></A>
  <DD>
    Patrick J. COPPOCK<BR>
    The University of Trondheim <BR>
    College of Arts and Science <BR>
    Dept. of Applied Linguistics <BR>
    N-7055 Dragvoll Norway <BR>
    e-mail: patcop@alfa.avh.unit.no <BR>
    e-mail: coppack@bo.nettuno.it
  <DT>
    <CITE>Authoritative Sources in a Hyperlinked Environment</CITE>
  <DD>
    IBM Research Report RJ 10076 (91892) May 29, 1997<BR>
    Jon M. Kleinbert &lt;kleinber@cs.cornell.edu&gt;
  <DT>
    <A HREF="http://www.microsoft.com/oledev/olecom/title.htm">The Component
    Object Model Specification</A>
  <DD>
    Draft Version 0.9, October 24, 1995 Microsoft Corporation and Digital Equipment
    Corporation. (esp
    <A HREF="http://www.microsoft.com/oledev/olecom/Ch01.htm#Objects">Objects
    and Interfaces</A>)
  <DT>
    <A HREF="../WD-doctypes">HTML Dialects: Internet Media and SGML Document
    Types</A>
  <DD>
    W3C Working Draft 06-Mar-96 Daniel W. Connolly
  <DT>
    <A HREF="file://ftp.cs.utexas.edu/pub/qsim/papers/Crawford-PhD-91.ps.Z">Access-Limited
    Logic: A Language for Knowledge Representation.</A>
  <DD>
    James Crawford. 1990. Doctoral dissertation, Department of Computer Sciences,
    University of Texas at Austin, Austin, Texas. UT Artificial Intelligence
    TR AI90-141, October 1990.
    (<A HREF="http://www.cs.utexas.edu/users/qr/algernon.html">Algernon and
    Access-Limited Logic</A>)
  <DD>
</DL>
<P>
</BODY></HTML>