HTTP-URI.html 45.5 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 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta name="generator" content=
    "HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 13), see www.w3.org" />
    <title>
      What do HTTP URIs Identify? - Design Issues
    </title>
    <link rel="Stylesheet" href="di.css" type="text/css" />
    <meta http-equiv="Content-Type" content=
    "text/html; charset=us-ascii" />
  </head>
  <body bgcolor="#DDFFDD" text="#000000" lang="en" xml:lang="en">
    <address>
      Tim Berners-Lee<br />
      Date: 2002-07-27, last change: $Date: 2007/01/15 20:05:15
      $<br />
      Status: personal view only. Editing status: first draft. This
      was a result of my being in a minority with this opinion on
      the Technical Architecture Group, and yet finding it the only
      one I could accept. This is related to TAG issue
      HTTPRange-14.
    </address>
    <p>
      <a href="./">Up to Design Issues</a>
    </p>
    <p>
      <strong>Note: (2006). This architectural question has now
      been <a href=
      "http://lists.w3.org/Archives/Public/www-tag/2005Jun/0039.html">
      decided</a> by the W3C TAG, in a compromise which I think
      works quite well, and is described in a <a href=
      "HTTP-URI2">later short note</a> and a TAG finding.</strong>
    </p>
    <hr />
    <h1>
      What do HTTP URIs Identify?
    </h1>
    <h3>
      Background Note
    </h3>
    <p>
      This question has been addressed only vaguely in the
      specifications. However, the lack of very concise logical
      definition of such things had not been a problem, until the
      formal systems started to use them. There were no formal
      systems addressing this sort of issue (as far as I know,
      except for Dan Connolly's Larch work [@@]), until the
      <a href="/2001/sw">Semantic Web</a> introduced languages such
      as RDF which have well-defined logical properties and are
      used to describe (among other things) web operations.
    </p>
    <p>
      The efforts of the <a href="/2001/tag">Technical Architecture
      Group</a> to create an architecture document with common
      terms highlighted this problem. (It demonstrates the
      ambiguity of natural language that no significant problem had
      been noticed over the past decade, even though the original
      author or HTTP , and later co-author of HTTP 1.1 who also did
      his PhD thesis on an analysis of the web, and both of whom
      have worked with Web protocols ever since, had had
      conflicting ideas of what the various terms actually mean.)
    </p>
    <p>
      This document explains why the author find it difficult to
      work in the alternative proposed philosophies. If it
      misrepresents those others' arguments, then it fails, for
      which I apologize in advance and will endeavor to correct.
    </p>
    <h2>
      1. Web Concepts as here proposed
    </h2>
    <p>
      The WWW is a space of information objects. The URI was
      originally called a UDI, and originally all URIs identified
      information objects. Now, URI schemes exist which identify
      more or less anything (e.g. UUIDs) or electronic mailboxes
      (mailto:) but is we look purely at HTTP URIs, they define a
      web of information objects. Information objects -- perhaps in
      Cyc terms <a href="">ConceptualWorks</a> -- are normally
      things which
    </p>
    <ul>
      <li>Carry some sort of message, and
      </li>
      <li>Can be represented, to a greater or lesser authenticity,
      in bits
      </li>
    </ul>
    <p>
      I want to make it clear that such things are generic (See
      <a href="/DesignIssues/Generic">Generic Resources)</a> --
      while they are documents, they generally are abstractions
      which may have many different bit representations, as a
      function of, for example:
    </p>
    <ul>
      <li>Time -- the contents can vary with revision --
      </li>
      <li>Content-type in which the bits are encoded
      </li>
      <li>Natural language in which a human-readable document is
      written
      </li>
      <li>Machine language in which a machine-processable document
      is written
      </li>
      <li>and a few more
      </li>
    </ul>
    <p>
      but the philosophy is that an HTTP URI may identify something
      with a vagueness as to the dimensions above, but it still
      must be used to refer to a unique conceptual object whose
      various representations have a very large a mount in common.
      Formally, it is the publisher which defines the what an HTTP
      URI identifies, and so one should look to the publisher for a
      commitment as to the exact nature of the identity along these
      axes.
    </p>
    <p>
      I'm going to refer to this as a <strong>document</strong>,
      because it needs a term and that is the best I have to date,
      but the reader should be sure to realize that this does not
      mean a conventional office document, it can be for example
    </p>
    <ul>
      <li>A poem
      </li>
      <li>An order for ball bearings
      </li>
      <li>A painting
      </li>
      <li>A Movie
      </li>
      <li>A review of a movie
      </li>
      <li>A sound clip
      </li>
      <li>A record of the temperature of the furnace
      </li>
      <li>An array a million integers, all zero
      </li>
    </ul>
    <p>
      and so on, as limited only by our imagination.
    </p>
    <p>
      The Web works because, given an HTTP URI, one can in a large
      number of cases, get a representation of the document. For a
      human readable document, the person is presented with the
      information by virtue of some gadget which is given the bits
      of a representation. In the case of a hypertext document, a
      reference to another document is encoded such that, upon user
      request, the referenced document can in turn be automatically
      presented. In the case of a machine-readable document,
      identifiers of concepts, being HTTP URIs, will often allow
      definitive reference information about those concepts to be
      pulled in to guide further actions.
    </p>
    <p>
      The web, then, is made of documents as the internet is made
      of cables and routers. The documents can be about anything,
      so when we move to talk about the contents of documents we
      break away from talking about information space and the whole
      universe of human -- and machine -- discourse is open to us.
      Web pages can compare a renaissance choral works with jazz
      pop hits, and discuss whether pigs have wings.
      Machine-processable documents can encode information about
      shoes, and ships, and sealing-wax. Until recently, the
      Internet protocol standards out of which the Web is built had
      little to say about such things. They were concerned only
      with the human-readable side, so it was people, reading
      natural language (not internet specs) who formed and
      communicated the concepts at this level. Nowadays, however,
      semantic web languages allow information to be expressed not
      only about URIs, TCP ports and documents, but also about
      arbitrary concepts - the shoes, and ships and sealing wax,
      and whether pigs have wings. Simple semantic web application
      allow one to order shoes and travel on ships, and determine
      that, given the data, pigs do not have wings.
    </p>
    <p>
      For these purposes it is of course quite essential to
      distinguish between something described by a document and the
      document itself. Now that we -- for the first time -- have
      not only internet protocols which can talk about document but
      also those which talk about real world things, we must either
      distinguish or be hopelessly fuzzy.
    </p>
    <p>
      And is this bad, is it an inhibition to have to work our way
      though documents before we can talk about whatever we desire?
      I would argue not, because it is very important not to lose
      track of the reasons for our taking and processing any piece
      of information. The process of publishing and reading is a
      real social process between social entities, not mechanical
      agents. To be socially responsible, to be able to handle
      trust, and so on, we must be aware of these operations. The
      difference between a car and what some web page says about it
      is crucial - not only when you are buying a car.
    </p>
    <p>
      Some have opined that the abstraction of the document is
      nonsense, and all that exists, when a web page describes a
      car, is the car and various representations of it, the HTML,
      PNG and GIF bit streams. This is however very weak in my
      opinion. The various representations have much more in common
      than simply the car. And the relationship to the car can be
      many and varied: home page, picture, catalog entry, invoice,
      remote control panel, weblog, and so on. The document itself
      is an important part of society - to dismiss its existence is
      to prevent us being aware of human and aspects of information
      without which we are impoverished. By contrast, the
      difference between different representations of the document
      (GIF or PNG image for example) is very small, and the
      relationship between versions of a document which changes
      through time a very strong one.
    </p>
    <h2>
      2. Trying out the Alternatives
    </h2>
    <p>
      The folks who disagree with the model do so for a number of
      different arguments. This article, therefore will have to
      take them one by one but the ones which come to mind are as
      follows:
    </p>
    <ol>
      <li>
        <a href="#L728">Every web page (or many of therm) are in
        fact themselves representations of some abstract thing, and
        the URI really identifies that</a> thing, not a document at
        all.
      </li>
      <li>
        <a href="#L876">There are many levels of identification
        (representation as a set of bits, document, car which the
        web page is about) and the URI publisher, as owner of the
        URI, has the right to define it to mean whatever he or she
        likes;</a>
      </li>
      <li>
        <a href="#L883">Actually the URI has to, like in English,
        identify these different things ambiguously. Machines have
        to disambiguate using common sense and logic</a>
      </li>
      <li>
        <a href="#L890">Actually the URI has to, like in English,
        identify these different things ambiguously. Machines have
        to disambiguate using the fact that different properties
        will refer to different levels</a>.
      </li>
      <li>
        <a href="#L897">Actually the URI has to, like in English,
        identify these different things ambiguously. Machines have
        to disambiguate using extra information which will be
        provided in other ways along with the URI</a>
      </li>
      <li>
        <a href="#L909">Actually the URI has to, like in English,
        identify these different things ambiguously. Machines have
        to disambiguate them by context: A catalog card will talk
        about a document. A car catalog will talk about a car</a>.
      </li>
      <li>
        <a href="#L920">They may have been used to identify
        documents up till now, but for RDF and the Semantic Web, we
        should change that and start to use them as the Dublin Core
        and RDF Core groups have for abstract concepts</a>.
      </li>
    </ol>
    <h3 id="L728">
      2.1 Identify abstract things not documents
    </h3>
    <p>
      Let's take the alternatives in order. These alternatives all
      make sense. Each one, however, has problems I can't see any
      way around when we consider them as a basis as
    </p>
    <p>
      The first was,
    </p>
    <blockquote>
      <p>
        Every web page (or many of them) are in fact themselves
        representations of some abstract thing, and the URI really
        identifies that thing, not a document at all.
      </p>
    </blockquote>
    <p>
      Well, that wasn't the model I had when URIs were invented and
      HTTP was written. However, let's see how it flies. If we
      stick with the principle that a URI (or URIref) must
      unambiguously identify the same thing in any context, then we
      come to the conclusion that URIs can not identify the web
      page. If a web page is about a car, then the URI can't be
      used to refer to the web page.
    </p>
    <h4>
      2.1.1 <a name="s2.1.1" id="s2.1.1">Same URI can identify a
      web page and a car</a>
    </h4>
    <p>
      What, a web page can't be a car? At this point a pedantic
      line reasoning suggests that we should allow web pages and
      cars to conceptually overlap, so that something can be both.
      This is counterintuitive, as a web page is in common sense,
      not a concrete object whereas a car is. But sure, we could
      construct a mathematics in which we use the terms rather
      specially and something can be at the same time a web page
      and a car.
    </p>
    <p>
      Frankly, this doesn't serve the social purpose of the
      semantic web, to be able to deal with common sense concepts
      and objects. A web page about a car and a car are in most
      people's minds quite distinct (as I argue further below). A
      philosophy in which they are identical does not allow me to
      distinguish between them. not only conflicts with reality as
      I see it, but also leaves us no way to make statements
      individually about the two things.
    </p>
    <h4>
      <img alt=
      "A car has a different identifier -- and very different properties."
      src="diagrams/http-uri-1.png" />
    </h4>
    <h4>
      2.1.2 <a name="identifies" id="identifies">The URI identifies
      the car, not the web page</a>
    </h4>
    <p>
      So lets fall back on the idea that the URI identifies the
      <em>subject</em> of the web page, but not the web page
      itself. This makes sense. We can build the semantic web on
      top of that easily.
    </p>
    <p>
      The problem with this is that there are a large number of
      systems which already do use URIs to identify the document.
      This is the whole metadata world. Think of a few:
    </p>
    <ul>
      <li>The Dublin Core
      </li>
      <li>RSS
      </li>
      <li>The HTTP headers
      </li>
      <li>The Adobe XML system
      </li>
      <li>Access control systems
      </li>
    </ul>
    <p>
      (I'm sticking with the machine-processable languages as
      examples because human-processable ones like HTML have a
      level of ambiguity traditional in human natural language but
      quite out of place in the WWW infrastructure -- or the
      Semantic Web. You can argue that people say "I work for
      w3.org" or "http://www.amazon.com/shrdlu?asin=314159265359"
      is a great book, just as they happily say "<em>Moby Dick</em>
      weighs over three thousand tons", "<em>Moby Dick</em> was
      finished over a century ago" and "I left <em>Moby Dick</em>
      on the beach" without expecting to be misunderstood. So we
      won't use human language as a guide when defining
      unambiguously the question of what a URI identifies. If we
      want to do that on the Semantic Web, we will say "I work for
      <em>the organization whose home page is</em>
      http://www.ww3.org.)
    </p>
    <p>
      Some argue the the URI which I associate with someone's home
      page actually identifies that person. They argue that
      conventionally people use the identifier to identify the
      person. However, consider another page put together by
      friends who found a photograph of the same person. A lot of
      content filtering systems would collect that URI and put put
      into their list. Even though the photo had many
      representations which different devices could download using
      content negotiation and/or CC/PP (color or black and white
      and versions of different resolutions) the URI itself would
      be listed as containing nudity. The public are very aware of
      different works on the web, even though they have the same
      topic.
    </p>
    <h4>
      2.1.3 <a name="Indirect" id="Indirect">Indirect
      identification</a>
    </h4>
    <p>
      You can argue that a web page <em>indirectly</em> identifies
      something, of course, and I am quite happy with that. If you
      identify an organization as that which has home page
      http://www.w3.org, then you are not saying that
      http://www.w3.org/ itself is that organization. This scenario
      is very very common, just as we identify people and things by
      their "unambiguous properties": books by ISBN, people by
      email address, and so forth. So long as we don't think that
      the person <em>is</em> an email address, we are fine. Some
      people have thought that in saying "An HTTP URI can't
      identify an organization" I was ruling out this indirect
      identification, but not so: I am very much in favor of it.
      The whole SQL world, after all, only identified things
      indirectly by a key property. This causes no contradiction.
      Perhaps I should say "An HTTP URI can't directly identify an
      organization". But by "identify" I mean "directly identify",
      and "identity" is a fairly direct word and concept, so I will
      stick with it.
    </p>
    <p>
      Conclusion so far: the idea that a URI identifies the thing
      the document is about doesn't work because we can only use a
      URI to identify one thing and we have and already do use it
      to identify documents on the web.
    </p>
    <h4>
      2.1.4 <a name="argument" id="argument">The argument for HTTP
      URIs identifying a Conceptual Work</a>
    </h4>
    <p>
      So what's wrong with the URI being taken to identify whatever
      the owner says?
    </p>
    <p>
      Let's look at what we mean by <em>identifies</em>. When we
      say there is identity, that means that there is some form of
      sameness that we associate with the identifier. Now, for all
      the philosophical argument, we can never test the identity of
      an abstract thing. What we can test is a representation which
      has been returned by the server when given that URI. When we
      use aURI, and get back several possible representations of
      it, then what expectation do we have about those
      representations?
    </p>
    <p>
      Take the test case that I see the web page which has a
      picture of a car, and I see in the URI in the URI bar in the
      browser. I email you the URI, "you see, the car is a
      Toyota?". You click on the link. Your browser shows the same
      URI as mine in the "URL bar" but you see a table of the car's
      weight, length, height, color, and registration number. We
      are confused. The web didn't work because you didn't get the
      same information as me. I expected you to get the same
      information, basically. That is how the Web works. That is
      the expectation behind every hypertext link - that the
      follower of the link should get basically the same
      information as the person who made the link. I say,
      "basically" because I would not have cared whether you saw or
      JPEG or a GIF. It probably wouldn't have mattered if you had
      seen a lower resolution or even black-and-white copy of the
      picture. If you are visually impaired, you may have been able
      to manage with a well-written description of the picture. But
      the the essential information is the same, not just the
      subject of the page.
    </p>
    <p>
      So now we have put the four corners on the expectation we
      have of a URI -- that all representations have essentially
      the same <em>information content</em>. And what we mean by
      "essentially" allows in fact some wriggle room, and in the
      end it rests on a common understanding between publisher of
      the information and quoter of the URI. The sameness we are
      after is the sameness of information content. <em>That</em>
      is what is identified by the URI. That is why we say that the
      URI identifies that conceptual information content,
      irrespective of its particular representation: the
      <em>conceptual work</em>. Without that common understanding,
      the web does not work.
    </p>
    <p>
      Some people have said, "If we say that URIs identify people,
      nothing breaks". But all the time they, day to day, rely on
      sameness of the information things on the web, and use URIs
      with that implicit assumption. As we formalize how the web
      works, we have to make that assumption explicit.
    </p>
    <h3 id="L876">
      2.2 Author definition
    </h3>
    <p>
      So how can we break free of that line of reasoning? We can
      try throwing away the rule that a URI identifies only one
      thing.
    </p>
    <blockquote>
      <p>
        There are many levels of identification (representation as
        a set of bits, document, car which the web page is about)
        and the URI publisher, as owner of the URI, has the right
        to define it to mean whatever he or she likes.
      </p>
    </blockquote>
    <p>
      Well, this one is tempting from the point of view that the
      owner of an identifier should reign supreme when it comes to
      saying what it identifies. It is quite a logically consistent
      position to take. After all, isn't this the case with
      <code>uuid</code>'s? And for a new scheme, this would be
      interesting. How can we do it though, with HTTP? the problem
      is an engineering one: I can't in practice use a URI until I
      have some definitive information from the publisher as to
      what it identifies.
    </p>
    <p>
      2.2.1 Default
    </p>
    <p>
      Why can't a URI default to identifying a web page until you
      know otherwise? Because the web is open and you will never
      know when you might lean some other information which will
      make the default incorrect. (You can't use such "closed
      world" reasoning).
    </p>
    <p>
      2.2.2 Web operation
    </p>
    <p>
      Why can't a URI identify a web page until you have done some
      well-defined operation -- such as HTTP HEAD or GET -- and
      checked for information in that? Well, that would certainly
      work logically. Suppose we we define a return code or HTTP
      header which means "abstract object requested". It would mean
      that every web application which deals with web pages as web
      pages would actually be working under an ambiguity, and RDF
      processors could be programmed to look for that special
      information. We can't retrofit the millions of web servers
      out there, I assume.
    </p>
    <p>
      I feel that there is a great benefit to fixing this question
      at the spec level. Otherwise, what happens? I read a web
      page, I like it and I am going to annotate it as being a
      great one -- but first I have to find out whether the URI my
      browser is used, conceptually by the author of the page, to
      represent some abstract idea? Before I recommend the
      <em>Vietnam War</em> page, I have to be careful I am not
      recommending the Vietnam War.
    </p>
    <p>
      There has been no way to do this before RDF, but then
      similarly no real need for it. (What, is this just a problem
      with RDF? No, it will happen with any webized knowledge
      representation system.). We really need to have communication
      in which two people use the same URI to mean the same thing.
      If there
    </p>
    <p>
      We could fix HTTP so that it would return me some extra
      semantic headers explaining the whole thing. And in the case
      that the URI was deemed to be some abstract thing, I would
      not have the option of recommending the web page. Too bad: it
      has no URI.
    </p>
    <p>
      The authors of document
      &lt;http://www.w3.org/2000/10/rdf-tests/rdfcore/Manifest.rdf&gt;
      certainly thought that they could use
      "http://www.w3.org/2000/10/rdf-tests/TestSchema/NegativeParserTest"
      to identify an abstract thing which is a type of software
      test. Now they have a choice as to what to make the server
      return for them when I ask for it. It returns 404 "doesn't
      match anything we have available". It can't really, because
      HTTP doesn't allow one to return a class, only a document.
      And if it were to return a document, then I wouldn't be able
      to refer to that document without accidentally referring to
      the class of negative parser tests.
    </p>
    <p>
      So, we could change HTTP to make this work. We could make a
      new form of redirect, <em>343 Abstract Object, please see . .
      .</em>, which would tell the client that the thing requested
      was abstract, and would suggest a document to read about it.
      This avenue of argument is still outstanding. We could take
      it. It isn't the status quo, but we could make changes in
      HTTP if the community felt that this was they way to go.
    </p>
    <h3 id="L883">
      2.3 Logic disambiguates
    </h3>
    <p>
      Otherwise,we have to try another way of letting the URI mean
      sometimes one thing and sometimes another. Here is another.
    </p>
    <blockquote>
      <p>
        Actually the URI has to, like in English, identify these
        different things ambiguously. Machines have to disambiguate
        using common sense and logic
      </p>
    </blockquote>
    <p>
      This is possible in theory. It is a mess. It fails
      particularly spectacularly when a URI is used ambiguously to
      refer to a web page and the thing that web page is about,
      which happens to be another web page. <em>Anyone can write
      anything about anything</em> is a Web motto, but here it
      falls down. <em>Anyone can write anything about anything
      except those things which might get confused with the
      document they are writing</em>. It breaks the axiom that we
      mean the same thing by a URI - in all contexts. (And RDF has
      a model theory in which necessarily in any interpretation, a
      symbol always denotes one thing).
    </p>
    <h3 id="L890">
      2.4 Different Properties
    </h3>
    <blockquote>
      <p>
        Actually the URI has to, like in English, identify these
        different things ambiguously. Machines have to disambiguate
        using the fact that different properties will refer to
        different levels.
      </p>
    </blockquote>
    <p>
      One way of getting here is to start by considering that HTTP
      headers can be divided into those which refer to the
      representation (or the document) and those that refer to,
      say, a car or a donkey. We can look at all RDF properties and
      other attributes in other languages and divide them in in
      such a way. So, when I say "http://example.com/albert is a
      color photo", I am referring to the representation; when I
      say "http://example.com/albert used to work down the mill" I
      am referring to the person; when I say
      "http://example.com/albert was taken on a rainy day" I am
      revering to the original photograph, which is basically the
      representation of Albert.
    </p>
    <p>
      This one has the problem when a web page refers to a web
      page. It can still be pursued, by having different verbs for
      talking about ownership of the web page and ownership of the
      car. This is a classic example of the 2-level syndrome (see
      also <em>Dictionaries in the Library</em>). The basic fallacy
      is that you can make the system general by introducing a
      second level - a new set of attributes, properties, or
      whatever, which allow you to refer to the metadata of
      something separately from the thing itself. These systems
      either turn out to be just limited 2-level systems (like XML
      and DTDs) or have to be extended to be recursive in some way
      later on such that in fact the two levels become unnecessary.
    </p>
    <h3 id="L897">
      2.5 Extra info with URI
    </h3>
    <blockquote>
      <p>
        Actually the URI has to, like in English, identify these
        different things ambiguously. Machines have to disambiguate
        using extra information which will be provided in other
        ways along with the URI
      </p>
    </blockquote>
    <p>
      This twist now relies on sending extra information with a
      URI. Effectively, the URI scheme has now failed to identify
      anything by itself. Those most familiar URIs as used by HTML
      sometimes suggested adding new attributes to the anchor tags
      of HTML documents to disambiguate a reference. I guess it
      would work if HTML anchors were the only uses of URIs. By
      contrast, they are used in thousands of places and way, many
      of which I am unaware. The architecture, however, is not that
      way: the architecture of the WWW is that a URI is a global
      unambiguous identifier. Not a URI and something else.
    </p>
    <p>
      (The various designs such a WebDav's propfind which use HTTP
      methods apart from GET to retreive information suffer from
      this same problem. the information does not have a URI: it is
      not on the web.)
    </p>
    <h3 id="L909">
      2.6 Different meaning in different context
    </h3>
    <blockquote>
      <p>
        Actually the URI has to, like in English, identify these
        different things ambiguously. Machines have to disambiguate
        them by context: A catalog card will talk about a document.
        A car catalog will talk about a car.
      </p>
    </blockquote>
    <p>
      This works in the short term, when the two contexts are
      disjoint groups who do not need to communicate. It is in fact
      the current state: the groups of people who use HTTP URIs to
      talk about documents, and those who have just started to use
      them to talk about abstract concepts haven't collided yet.
      (Well, they have in my code. I need to be able to model the
      metadata about an HTTP URI as that about a document, and it
      being a class at the same time doesn't jive.)
    </p>
    <p>
      It doesn't work in the long term because it breaks the axiom
      that a URI must identify one thing,
    </p>
    <h3 id="L920">
      2.7 Change it for the Semantics Web
    </h3>
    <blockquote>
      <p>
        They may have been used to identify documents up till now,
        but for RDF and the Semantic Web, we should change that and
        start to use them as the Dublin Core and RDF Core groups
        have for abstract concepts.
      </p>
    </blockquote>
    <p>
      I think that we would have to design a new URI scheme before
      we change things that much. That is tempting of course. But
      then -- building a semantic web out of what we have is
      tempting too. It was tempting to rehash TCP a little when
      making HTTP. It wasn't practical, and we would have lost a
      lot more than we would have gained. There is a lot to be said
      for using common technology. We've got an infrastructure of
      documents. We want to build an infrastructure of knowledge.
      Let's build it using the documents. We might find that the
      commonality with the web of human-readable information is a
      boon.
    </p>
    <h3 id="L735">
      2.8 Abandon any identification of abstract things
    </h3>
    <p>
      An argument which surprised me is that yes, HTTP URIs
      identify documents, but in fact the frgament identifier must
      only be used to identify parts -- fragments -- of documents.
      This means that RDF cannot in fact use HTTP URI schemes at
      all. A completely different system would have to be put
      together -- either a new set of URIs, or RDF conventions in
      which the relationship to the part of a document in which
      something was described became explicit. In N3 this would
      like like
    </p>
    <p>
      [ is rdf:referent of &lt;#fmyCar&gt; ] [ is rdf:referent of
      &lt;#color&gt; ] [ is rdf:referent of &lt;#blue&gt; ]
    </p>
    <p>
      Of course, languages would quickly generate special syntax
      for this. Alternatively, the RDF system would built entirely
      on the understanding that we were referring always to that
      denoted by a given bit of document, not the bit of document
      itself. This would mean that there would be no way for the
      RDF system to refer to documents themselves directly.
    </p>
    <p>
      This is actually a consistent way of working. It would be a
      change only for those people who use RDF to talk about
      documents as documents. We could change.
    </p>
    <h2>
      <a name="L409" id="L409">3. Conclusion</a>
    </h2>
    <p>
      I didn't have this thought out a few years ago. It has only
      been in actually building a relatively formal system on top
      of the web infrastructure that I have had to clarify these
      concepts my own mind. I am forced to conclude that modeling
      the HTTP part of the web as a web of abstract documents if
      the only way to go which is practical and, by the
      philosophical underpinnings of the WWW, tenable.
    </p>
    <p>
      I apologize again if I have misunderstood or misrepresented
      other's arguments in this process of this explanation of my
      own position.
    </p>
    <p>
      Tim Berners-Lee
    </p>
    <p>
      2002-07-28Z
    </p>
    <hr />
    <h3>
      FAQ
    </h3>
    <p>
      <em>Q: But surely, if a document is identified by a namespace
      URI, then when we look up an RDF namespace will millions of
      words in it we will have too long a document to be
      practical!</em>
    </p>
    <p>
      A: It is arguable, for such as situation, whether the
      namespace itself is more cumbersome to manage than the
      document is to deliver. You can make an analogy with
      hypertext: Isn't the model of retrieving a document going to
      be inefficient when the documents are huge? Answers are
      twofold in each case,
    </p>
    <p>
      Firstly, yes it is likely to be less convenient, but that is
      no reason to skew which is a good engineering design for the
      vast proportion of namespaces (or hypertext documents) which
      are not huge.
    </p>
    <p>
      Secondly, the HTTP protocol actually does have methods of
      retrieving parts of a large document.
    </p>
    <p>
      <em>Q: It seems strange that an HTTP URI should be limited to
      referring to documents, but that all one has to add is this
      little hash mark and suddenly you say it can be used to
      identify anything.</em>
    </p>
    <p>
      A: The hash is not a minor appendage to the URI: It is the
      most significant piece of punctuation in the whole URIref.
      The hash adds a whole new level of abstraction and
      specification! It is true that in a hypertext page and that
      page scrolled to a given point seem very similar. The same
      applies to a graphic chart and an object within that chart,
      especially when it is displayed in the context of the
      original document. So I suppose it may be a shock when the
      technique is used with a semantic web language to refer to
      not the document, but something which the document discusses.
      That does allow it to break out of the whole concept of
      documents and into -- anything. But no one promised the
      Semantic Web would be boring. :-)
    </p>
    <p>
      <em>Q: I thought you said "anything should be able to have a
      URI"?</em>
    </p>
    <p>
      Yes, and it should. There is nothing in the URI spec to say
      what an individual scheme should or should not be created to
      identify. A new URI scheme could for example be ale to
      identify anything. But here we are talking about HTTP URIs.
      And remember that with semantic web languages, you can use a
      URIref (very different from a URI) to identify anything, for
      example with HTTP and RDF.
    </p>
    <p>
      <em>Q: But what about CGI scripts? Surely you don't mean the
      HTTP URI identifies the script?</em>
    </p>
    <p>
      A: Of course not. When we talk about the "document"
      identified by a URI it is very often an virtual document
      produced by, for example, a CGI script. The URI identifies
      the document on the web, with no regard to the process which
      causes representations of it to be served.
    </p>
    <p>
      <em>Q: Some HTTP URIs can be POSTed to. Can you still say
      they identify documents?</em>
    </p>
    <p>
      A: Well, some HTTP URIs can't be accessed at all, and some
      access is not allowed, and yes, some URIs are not only
      documents but also can be posted to. So they object is more
      complex than simply a document. But that it has this extra
      functionality doesn't make it any less a HTTP document
      formally. Something can have extra features and still remain
      in the same class of things.
    </p>
    <p>
      <em>Q: What do you mean by "identify", anyway, in Model
      Theory terms? (2003)</em>
    </p>
    <p>
      The closest term used in Model Theory to the way I am using
      <em>identify</em> is <em>denote</em>. Model theory analyses
      communication and understanding by imagining a set of
      <em>interpretations</em>, where an interpretation is a
      mapping from a symbol to that which it denotes. Model
      theorists and linguists tend to complain that one cannot talk
      about the meaning of a term, as you can never know what
      anyone means by anything, you can only see how they react. A
      given agent may have many possible interpretations, but new
      information the agent believes which mentions a symbol will
      rule out interpretations with which are inconsistent with the
      symbol. By the process of exchange of a lot of information,
      one arrives at a state in which one behaves as though other
      agents has the effectively the same set of interpretations.
      Under these conditions, one can think of the thing
      <em>identified</em> by the symbol in the community as being
      the set of things denoted by the symbol in the
      interpretations which agents in the community are left with.
      There has been much more discussion of this process (which is
      the essence of the writing of a standard and the purpose of
      documents like this) in email on www-tag with Pat Hayes and
      others in 2003.
    </p>
    <address>
      The rest are from Aaron Swartz
    </address>
    <p>
      <em>Q: Can you point to something in the spec that says HTTP
      URIs must identify a document?</em>
    </p>
    <p>
      There are many answers. I can point to things which could be
      interpreted to say that. The HTTP spec defines resources as
      <em>network data objects</em>. To me that "data" indicates
      the information nature of the thing. It precludes, in most
      people's minds, a car or the Andromeda Galaxy.
    </p>
    <p>
      I could explain that, as I originally wrote the HTTP spec,
      that was the author's intent.
    </p>
    <p>
      But I think the fairest thing is to say that the spec was
      written it was not sufficiently clear about this particular
      ambiguity, and for reasons mentioned above, this hasn't been
      a problem until now.
    </p>
    <p>
      <em>Q: Isn't it a little weird to start making pronouncements
      about the entire HTTP Web when neither the spec nor the other
      TAG members agree?</em>
    </p>
    <p>
      Pronouncements about the whole Web are really important where
      they are needed. In that case the TAG has a duty to make
      them. And so do I. It seems to me that this assumption is one
      we have been implicitly making and are now breaking, in a way
      which will make the semantic web either inconsistent or much
      less efficient. The TAG members do not agree on this: that is
      why they asked my to write this document. It is written as a
      TAG action item about tag issue HTTPRange-14. Things get a
      lot weirder than that. ;-)
    </p>
    <p>
      <em>Q: Why do we need to use URI-refs to identify abstract
      concepts in a protocol where we can get more information
      about them? .I thought URIs were doing just fine. If we have
      to resort to UUIDs to identify things, I'll get annoyed
      because I won't be able to put them in my browser.</em>
    </p>
    <p>
      Well, there you are... you want to be able to put something
      in your browser, then you must have a representation of it.
      So somewhere in the picture, representations aside, is a
      ConceptualWork. If the ConceptualWork is important, then it
      needs a URI, in my opinion. The alternatives are attractive
      when you start to look at them, but each has a different
      snag. I have tried to explain above.
    </p>
    <p>
      <em>Q: How can you say that the Semantic Web can use the hash
      mark to make a URI-ref identify anything when the URI RFC is
      very clear that hash marks only work when you dereference the
      document.</em>
    </p>
    <p>
      I wouldn't say that hash marks "only work when you deference
      a document" any more than your street address "only works
      when I visit you", or your date of birth "only worked when
      you were born". I can use your street address -- or your data
      of birth -- to help identify you. What the spec defines is a
      way of using this particular URI to get some information over
      the Internet. The whole web works by what someone recently
      referred to as a "confusion" between name and address. It
      isn't a confusion. It is a connection between two pieces of
      architecture without which the web would not be. Rethink. It
      is primarily a name. We have made a way of looking it up. So
      you don't have to look it up for the name to "work" as an
      identifier. Just as you don't go and look it up when someone
      quotes the RDF namespace -- it works because the same
      identifier identifies the same thing in any context. Looked
      up or not. The same thing is true for foo#bar. If the
      document foo is never served, one can still (if one owns it)
      talk about foo#bar with authority. It is of course good
      practice to serve documents.
    </p>
    <p>
      <em>Q: Are all Semantic Web agents going to start
      dereferencing every document they hear about?</em>
    </p>
    <p>
      No, any more than you have to dereference every hypertext
      link you see.
    </p>
    <p>
      <em>Q: Isn't the Semantic Web broken if we have to start
      disagreeing with major specifications like this?</em>
    </p>
    <p>
      This philosophy is quite consistent with the HTTP spec as it
      is.
    </p>
    <h3>
      Exercises
    </h3>
    <p>
      1) What does "<a href=
      "http://www.amazon.com/exec/obidos/ASIN/0679600108/qid=1027958807/sr=2-3/ref=sr_2_3/103-4363499-9407855">http://www.amazon.com/exec/obidos/ASIN/0679600108/qid=1027958807/sr=2-3/ref=sr_2_3/103-4363499-9407855</a>"
      identify?
    </p>
    <ol>
      <li>A whale
      </li>
      <li>"Moby Dick or the Whale" by Herman Melville
      </li>
      <li>A web page on Amazon offering a book for sale
      </li>
      <li>A URI string
      </li>
      <li>All the above
      </li>
    </ol>
    <p>
      When was the thing it identified last changed?
    </p>
    <p>
      Have you read the thing it identifies?
    </p>
    <p>
      2) What does "<a href=
      "http://www.vrc.iastate.edu/magritte.gif">http://www.vrc.iastate.edu/magritte.gif</a>"
      identify?
    </p>
    <ol>
      <li>A pipe
      </li>
      <li>I don't know, but whatever it is it isn't not a pipe.
      </li>
      <li>A contradiction
      </li>
      <li>
        <strong>A picture by Magritte</strong>
      </li>
      <li>
        <strong>A photograph of a picture by Magritte</strong>
      </li>
      <li>
        <strong>A representation as a series of 341632 bits in of a
        photo of a painting</strong>
      </li>
      <li>Validly 4, 5 and 6 but not 1
      </li>
    </ol>
    <p>
      <img alt="Hint: This is not a pipe" src=
      "http://www.vrc.iastate.edu/magritte.gif" />
    </p>
    <p>
      3) What does "<a href=
      "http://dm93.org/2002/03/dans-car-23423423">http://dm93.org/2002/03/dans-car-23423423"</a>
      identify?
    </p>
    <ol>
      <li>An inaccessible web page
      </li>
      <li>A black Toyota
      </li>
    </ol>
    <p>
      4) What does "<a href=
      "http://dm93.org/y2002/myCar-232">http://dm93.org/y2002/myCar-232</a>"
      identify?
    </p>
    <ol>
      <li>A black toyota
      </li>
      <li>A web page
      </li>
    </ol>
    <p>
      When was the thing identified last changed?
    </p>
    <p>
      What does the writing on Dan's car say?
    </p>
    <p>
      Answers: 1:3. 2:7 Note here the web tolerates vagueness along
      the axis of different representations of the same image, but
      not of semantic level between the image and the pipe. 3:1;
      4:2
    </p>
    <h3>
      References
    </h3>
    <p>
      @@@links
    </p>
    <ul>
      <li>The huge discussion of this issue on www-tag@w3.org
      </li>
      <li>
        <a href="http://www.textuality.com/tag/s1.1.html">Tim
        Bray's text</a>
      </li>
      <li>RFC 1634 and points west
      </li>
      <li>Roy Fielding's short history of URI specifications
      </li>
      <li>Weaving the Web
      </li>
      <li>
        <a href=
        "http://www.cyc.com/cycdoc/vocab/info-vocab.html">Cyc's
        page about Conceptual Works</a> cyc:ConceptualWork <a href=
        "http://ilrt.org/discovery/chatlogs/rdfig/2002-07-31.html#T15-56-58-1">
        proposed as what I mean by document by DanC</a>.
      </li>
    </ul>
    <hr />
    <p>
      <a href="Overview.html">Up to Design Issues</a>
    </p>
    <p>
      <a href="../People/Berners-Lee">Tim BL</a>
    </p>
  </body>
</html>