<?xml version="1.0"?>
<?xml-stylesheet href="/transform" type="text/xsl"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:bs="http://purl.org/ontology/bibo/status/" xmlns:ci="https://vocab.methodandstructure.com/content-inventory#" xmlns:dct="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" lang="en" prefix="bibo: http://purl.org/ontology/bibo/ bs: http://purl.org/ontology/bibo/status/ ci: https://vocab.methodandstructure.com/content-inventory# dct: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# xhv: http://www.w3.org/1999/xhtml/vocab# xsd: http://www.w3.org/2001/XMLSchema#" vocab="http://www.w3.org/1999/xhtml/vocab#" xml:lang="en">
  <head>
    <title property="dct:title">Dynamic Faceted Taxonomy</title>
    <base href="https://doriantaylor.com/projects/dynamic-faceted-taxonomy"/>
    <link href="../document-stats#EOktZLgJ218EDxAhla4S_I" rev="ci:document"/>
    <link href="../elsewhere" rel="alternate bookmark" title="Elsewhere"/>
    <link href="../this-site" rel="alternate index" title="This Site"/>
    <link href="http://purl.org/ontology/bibo/status/draft" rel="bibo:status"/>
    <link href="http://purl.org/ontology/bibo/status/published" rel="bibo:status"/>
    <link href="" rel="ci:canonical" title="Dynamic Faceted Taxonomy"/>
    <link href="../lexicon/#EqIUfKvI93wG3TQRQDwoVJ" rel="dct:audience" title="Information Architect"/>
    <link href="../person/dorian-taylor#me" rel="dct:creator" title="Dorian Taylor"/>
    <link href="../person/dorian-taylor" rel="meta" title="Who I Am"/>
    <link about="../" href="../3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="../" href="../f07f5044-01bc-472d-9079-9b07771b731c" rel="alternate" type="application/atom+xml"/>
    <link about="../" href="../this-site" rel="alternate"/>
    <link about="../" href="../elsewhere" rel="alternate"/>
    <link about="../" href="../e341ca62-0387-4cea-b69a-cdabc7656871" rel="alternate" type="application/atom+xml"/>
    <link about="../verso/" href="../3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="../verso/" href="../this-site" rel="alternate"/>
    <link about="../verso/" href="../elsewhere" rel="alternate"/>
    <meta content="dynamic-faceted-taxonomy" datatype="xsd:token" property="ci:canonical-slug"/>
    <meta content="false" datatype="xsd:boolean" property="ci:indexed"/>
    <meta content="This was an old project to design a method of managing multiple addresses for a given Web resource. It has since been subsumed into a larger project." name="description" property="dct:abstract"/>
    <meta content="2008-09-20T00:34:19+00:00" datatype="xsd:dateTime" property="dct:created"/>
    <meta content="dynamic-faceted-taxonomy" property="dct:identifier"/>
    <meta content="2008-10-09T02:02:01+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2009-03-04T00:43:00+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2022-05-31T04:18:52+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta about="../person/dorian-taylor#me" content="Dorian Taylor" name="author" property="foaf:name"/>
    <meta content="summary" name="twitter:card"/>
    <meta content="@doriantaylor" name="twitter:site"/>
    <meta content="Dynamic Faceted Taxonomy" name="twitter:title"/>
    <meta content="This was an old project to design a method of managing multiple addresses for a given Web resource. It has since been subsumed into a larger project." name="twitter:description"/>
    <object>
      <nav>
        <ul>
          <li>
            <a href="../policy/dynamic-faceted-taxonomies-for-organizing-web-resources" rev="dct:references" typeof="bibo:Report">
              <span property="dct:title">Dynamic Faceted Taxonomies for Organizing Web Resources</span>
            </a>
          </li>
          <li>
            <a href="../document-stats#EOktZLgJ218EDxAhla4S_I" rev="ci:document" typeof="qb:Observation">
              <span>urn:uuid:3a4b592e-0276-4d7c-8103-c408656b84bf</span>
            </a>
          </li>
        </ul>
      </nav>
    </object>
  </head>
  <body about="" id="EOQuzoWDurL29vr9DEZDEJ" typeof="bibo:Article">
    <p>The specific goals of this document are thus:</p>
    <ul>
      <li>To define a consistent behaviour for a non-hierarchical arrangement of URIs within the scope of a <abbr title="World-Wide Web">Web</abbr> application;</li>
      <li>To aid with the naming of URIs and categorization of resources through appropriate <a href="../lexicon/constraint" title="Constraint" rel="dct:references">constraints</a> and <a href="../lexicon/affordance" title="Affordance" rel="dct:references">affordances</a>;</li>
      <li>To provide information architects with ad-hoc tools to explore and augment the structure of a <abbr title="World-Wide Web">Web</abbr> site; and </li>
      <li>To allow power users to navigate <abbr title="World-Wide Web">Web</abbr> site through direct <acronym title="Uniform Resource Identifier">URI</acronym> manipulation.</li>
    </ul>
    <p>principles include</p>
    <ul>
      <li>individual resources should be accessible in as many ways as conceivable</li>
      <li>every resource must be <em>identifiable</em> by the shortest URI path that unambiguously points to it</li>
      <li>the <em>most specific</em> URI that unambiguously identifies a given resource must be taken as <em>canonical</em></li>
      <li>The system should be superficially indistinguishable from a conventional hierarchy in the absence of the expanded syntax</li>
      <li>The system should gracefully handle namespace collisions, renames, and deletions</li>
    </ul>
    <p>a resource, e.g. a document, begins with at least one symbolic name, either explicitly assigned or by derivation of the title</p>
    <p>this is an unqualified name equivalent in <em>scope</em> to a filename or xml ncname</p>
    <p>when represented in the uri, the name is exactly what appears after the last slash in the path and before the first path parameter or query string</p>
    <p>if there exist two or more resources with the same symbolic name, they will collide, and must somehow be qualified to be uniquely addressed.</p>
    <p>to qualify resources, we place them into sets which are resources as well, and which have the same naming rules, i.e. if a set cannot be uniquely addressed, it is placed into a superset.</p>
    <p>these sets are addressed as the part between the first (in-scope) and last slash of the uri path</p>
    <p>the master set is that which contains every resource within the application, usually (but not always) the root of the path</p>
    <p>up to now this effectively describes a conventional hierarchical layout</p>
    <p>the key difference is that resources, that is to say either documents or sets, may belong to more than one set, or, providing there is no collision, the master set itself. this structure affords faceted navigation and multiple entry points to a given resource.</p>
    <p>this also affords us the ability to remap the path separator <samp>/</samp> to signify <em>set intersection</em>.</p>
    <p>the result of an intersection A &#x2229; B where B &#x2286; A is B, which is effectively a no-op and therefore the intersection can be used to safely qualify the symbolic name of whatever is on the right of the operation.</p>
    <p>other operators can be introduced as well, such as <samp>+</samp> for <em>union</em> and <samp>!</samp> for <em>complement</em>.</p>
    <p>the associativity and precedence of these operators has to be played around with, but intersection should always be lower in order to fit into the general semantics of uri navigation.</p>
    <ol>
      <li>retrieve the base symbolic name of the resource</li>
      <li>retrieve the set operation</li>
      <li>if the resource's name is unique should we short-circuit even if the set described in the path isn't valid? (probably not)</li>
    </ol>
    <h1>URI Navigation as a Path Through a Directed Graph</h1>
    <p>start anywhere in the graph</p>
    <h1>URI Navigation as a Set Operation</h1>
    <p>there is the set of resources and the set of <em>sets</em> of resources</p>
    <p>everything from the first to the last slash of the uri path is treated as a single set operation</p>
    <p>uri paths that end with a slash</p>
  </body>
</html>
