Internet DRAFT - draft-mallery-urn-pdi
draft-mallery-urn-pdi
Internet-Draft J. C. Mallery
draft-mallery-urn-pdi-00.txt M.I.T.
Expires in six months November 10, 1997
Persistent Document Identifiers
Filename: draft-mallery-urn-pdi-00.txt
Status of This Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-
Drafts as reference material or to cite them other than as ``work
in progress.''
To learn the current status of any Internet-Draft, please check
the ``1id-abstracts.txt'' listing contained in the Internet-
Drafts Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net
(Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East
Coast), or ftp.isi.edu (US West Coast).
Abstract
This document specifies the syntax and semantics of the Persistent
Document Identifier (PDI) namespace within the URN framework
defined by RFC 2141 [17]. PDIs provide a means to refer to digital
objects and fragments that does not depend their storage location
or the protocol used to access them. Since 1994, several
large-scale applications with these requirements have used PDIs
[12] [21].
PDIs are intended primarily as permanent identifiers for archival
reference to long-lived documents. PDIs have a fragment syntax to
allow permanent references to parts of documents (within specific
formats) as well as a citation syntax to allow references to
appearances of such fragments in composite documents.
PDIs are most useful for any document series that is distributed via
multiple protocols, is available from multiple sources, migrates to
new locations, needs fragment references, or participates in
distributed assertion semantics related to collaboration or access
control.
1. Namespace Syntax
1.2 Design Goals
Persistent Document Identifiers provide a means to refer to digital
objects and fragments that does not depend their storage location
or the protocol used to access them. PDIs offer the following
capabilities:
* Multisourcing: The same resource can be stored in different
locations yet retrieved by a virtue of a shared identifier.
* Multiple Protocols: Identifiers are not tied to specific
transport protocols.
* Persistence: PDIs persist across relocation of a digital
object to different storage sites. The longevity of a PDI is
not limited by lifetime of a directory, domain name, or even,
a transport protocol.
* Organizational Delegation: PDIs define a hierarchical
encoding of the issuing authority that allows delegation in a
manner analogous to names in the Domain Name System names but
more akin to X.400.
* Chronological Delegation: PDIs incorporate a time hierarchy
that allows delegation of identifiers with different time
ranges to different authorities or to different resolution
regimes.
* Fragment Syntax: PDIs offer an extensible syntax for
referring to part of a resource. This evolutionary approach
allows different schemes according to media type as well as
multiple schemes per media type. Longevity of reference is
sought by defining fragment schemes that are independent of
machine representation. Referential consistency is guaranteed
by monotonic commitment of versioned PDIs to immutable
resource representations.
* Citation Syntax: PDIs include a syntax for referring to
appearances of document fragments as quoted in other composite
documents. This makes fragment quotations first-class objects,
about which assertions can be made.
* User Friendly: PDIs carry a relatively simple syntax with
some mnemonics so that, if need be, people can type them to
access a resource.
A guiding design principle for PDIs is to minimize the document
semantics carried within the identifier. Most semantics is better
encoded by assertions about PDIs. Not only is overloading of the
identifier avoided, but assertions can also be modified without
recourse to changing the identifier.
1. Namespace Syntax
Consistent with the URN syntax specification in RFC 2141 [17], each
namespace must specify syntax related information that is specific to
that namespace. This section provides these specifications for the
PDI namespace. The PDI grammar below uses the ABNF [6]. A URN using
the Persistent Document Identifier namespace has the form:
<URN> = "urn:" pdi ; Encoding in URN syntax
1.1. Namespace Identifier (NID)
The Namespace Identifier for this namespace is "pdi", which is case
insensitive.
<PDI> = "pdi" ":" nss ; Persistent Document Identifier
1.2. Namespace Specific String (NSS)
The Namespace Specific String for this namespace is:
<NSS> = resource-identifier [(citation-specifier / fragment-specifier)]
1.2.1 Resource Identifier
<RESOURCE-IDENTIFIER> = "//" document-series "/" iso-date "/" specifier
<DOCUMENT-SERIES> = component *["." component] "." iso-country
<COMPONENT> = alpha-hyphen-digits
<ISO-COUNTRY> = 2*alpha ; See ISO Standard 3166 [10]
<ISO-DATE> = year "/" month "/" day
<YEAR> = 4*digit / wildcard
<MONTH> = 2*digit / wildcard
<DAY> = 2*digit / wildcard
<SPECIFIER> = unique-id ["." format ["." version]] ;versions require formats
<UNIQUE-ID> = daily-serial-number / encapulated-unique-id / digits /
wildcard
<DAILY-SERIAL-NUMBER> = digits
<ENCAPULATED-UNIQUE-ID> = unique-id-chars
<UNIQUE-ID-CHARS> = alpha / digit / other / "%" hex hex
<FORMAT> = media-type-token / wildcard
<MEDIA-TYPE-TOKEN> = "text" / "html" / extension-token
<EXTENSION-TOKEN> = alpha-hyphen
<VERSION> = digits / wildcard
<WILDCARD> = "*"
1.2.2 Citation Specifier
<CITATION-SPECIFIER> = "@" origin-position "=" pdi
<ORIGIN-POSITION> = position
1.2.3 Fragment Specifier
<FRAGMENT-SPECIFIER> = "#" [fragment-scheme "="] position [*("," position)]
<FRAGMENT-SCHEME> = "char" / "elt" / "name" / "rect" / "msec" / "sec" /
"crop" / "byte" / ext-fragment-scheme
<EXT-FRAGMENT-SCHEME> = alpha-hyphen
<POSITION> = char-position / element-position / element-name /
2-dim-coordinate / frame-number / time / byte-position /
ext-position
<EXT-POSITION> = position-specifier /
"(" position-specifier *["," position-specifier] ")"
<POSITION-SPECIFIER> = alphadigits
1.2.4 Supporting Definitions
<ALPHA> = %x41-5A / %x61-7A ; A-Z / a-z
<ALPHA-DIGITS> = alphas / digits
<ALPHA-HYPHEN-DIGITS> = alpha-hyphen / digits
<ALPHA-HYPHEN> = alpha / "-"
<ALPHA-HYPHENS> = *alpha-hyphen
<ALPHAS> = *ALPHA
<DIGIT> = %x30-39 ; 0-9
<DIGITS> = *DIGIT
<URN-CHARS> = trans / "%" hex hex ;RFC 2141
<TRANS> = alpha / digit / other / reserved
<HEX> = digit / "A" / "B" / "C" / "D" / "E" / "F" /
"a" / "b" / "c" / "d" / "e" / "f"
<OTHER> = "(" / ")" / "-" / ":" / ";" / "$" / "_" / "!" / "'"
<RESERVED> = "%" / "." / "," / "/" / "#" / "*" / "@" /
"=" / "?" / "+"
1.2.5 Reserved Characters
<RESERVED> are used as special characters in the PDI grammar. They
MUST be encoded according to the character escaping method
described in RFC 2141 [17].
2 Discussion
2.1 Minting PDIs
PDIs are issued by the authority named in <DOCUMENT-SERIES>.
<DOCUMENT-SERIES> is intended to look like a domain name for easy
parsing but there is no requirement to serve the name via the Domain
Name System (DNS) nor to assure that the name is not assigned for
other purposes by DNS.
The encoded date in <ISO-DATE> is the date when the identifier is
minted. This date is based on Greenwich meantime. The encoded date
bears no relationship to dates associated with the resource that the
PDI denotes, even if there may be proximity between the time when the
resource issues and the time when the PDI is minted.
The PDI namespace is monotonic; PDIs cannot be retracted. If a new
version of the same document issues, it MUST increment the version
number for the previously issued PDI. This requirement assures that
any machine representation (byte sequence) associated with formats
of a versioned PDI never changes.
Byte equivalence for all resource formats denoted by a specific PDI
version ensures that digital signatures associated with a PDI check
for any uncorrupted resource. More significantly, byte equivalence
enables reliable, efficient fragment references for many media types.
It eliminates the potentially difficult problem of rolling fragment
references forward as a target resource is modified.
2.2 Issuing Authority
The issuing authority controls the name in a document series. These
names are hierarchical so that administration can be delegated within
authority domains. Unlike domain names, the right most component of a
<DOCUMENT-SERIES> MUST be a two digit ISO 3166 country code [10],
indicating the country in which the issuing organization resides. In
most cases, a <DOCUMENT-SERIES> SHOULD add a term to the issuing
authority in order to differentiate the series from other document
sets that the authority might issue. By specializing the document
series below the issuing authority, identifiers reflect the chain of
delegation. Additionally, it becomes easier to obsolesce an entire
document series, if that becomes necessary.
For wide use of PDIs, an issuing authority will need to issue
toplevel authority names to organizations wishing to mint PDIs in
their own document series. Once a toplevel document series name has
been obtained, an organization may issue PDIs itself or delegate
subseries.
A subseries is delegated by adding a name component to the left of
<DOCUMENT-SERIES>. The accretion of components on a document series
MAY utilize existing organizational names or acronyms whenever
feasible in order to preserve mnemonics in the document series
name. Additionally, dropping components from the left SHOULD lead
to ever more general issuing authorities in terms of organizational
scope.
Delegation SHOULD follow de jure organizational structure. Issuing
authority SHOULD NEVER be delegated outside the organization unless
the external agent is acting directly on behalf of the document
series owner. When organizational boundaries are crossed, a new
document series toplevel SHOULD be acquired. Within an organization,
issuing authority SHOULD be delegated to the level where
responsibility for content resides. This facilitates contact with
document originators. More importantly, it reduces administrative
scope, and thus, encourages more uniform document management policies
for a particular document series.
2.3 Hierarchical Date
<ISO-DATE> of a PDI MUST be assigned when the identifier is minted.
The calendar date MUST correspond to Greenwich Mean time.
Inclusion of the ISO date conveys the time when the identifier was
minted. Beyond making it easier to guarantee identifier uniqueness,
hierarchicalization by date enables reference to ranges of
identifiers issued within specific time intervals.
Use of ISO dates also ensures that lexical sorts of identifiers
produce a chronological ordering of PDIs, making various listings
(e.g., directory lists) automatically appear in a meaningful
order.
Moreover, different administrative policies MAY be applied to any
particular time interval. For example, when responsibility for
resolving PDIs shifts to a different administrative authority,
intervals covered by the new policy are readily specifiable and
conveyed. For example, different intervals may be delegated to
different URN resolvers and these delegations recorded with
relevant URN discovery systems.
Operations may be applied to identifiers within an interval. For
example, a browser can provide a directory list of all the
documents in a year, a month, or on a day.
More generally, assertions can be made about identifiers within an
interval, such as where to find a resolver.
2.4 Daily Unique ID
An application may use a mnemonic name or a serial number as the
<UNIQUE-ID>. The only requirement is that <UNIQUE-ID> MUST be a
unique sequence of <UNIQUE-ID-CHARS> for <ISO-DATE> and
<DOCUMENT-SERIES>.
If the unique ID is a <DAILY-SERIAL-NUMBER>, serial numbers SHOULD
start from 1 and SHOULD be incremented by 1 as each new PDI is
minted. When the calendar day is incremented at midnight GMT, the
unique ID of the day SHOULD be reset to start at 1 on the new day.
This prevents daily unique IDs from growing very large as it
enforces date semantics on the identifier.
2.4.1 Encapsulation of Foreign Identifiers
The specification of this field has been left open so that foreign
document identifiers MAY be incorporated within a PDI as the daily
unique ID. For our purposes, a foreign identifier is any identifier
used by other naming or reference regimes. Examples of foreign
identifiers include, serial numbers, invoice numbers, URIs, URLs or
other application-specific identifiers.
When encapsulating a foreign identifier, <FORMAT> is required and
MUST use a <MEDIA-TYPE-TOKEN> that identifies the media type of the
resource and format of the encapsulated identifier. The media type
token is required in order to allow unambiguous interpretation by
applications aware of the identifier semantics. All other
applications, MUST treat the unique id as opaque.
2.5 Format
Format should use standard, controlled terms that indicate the
media type [3] of the resource to which the identifier refers or,
in the case of encapsulated identifiers, indicate the type of the
encapsulated identifier. <FORMAT> is case insensitive.
The standards for MIME content types [10] do not as yet provide a
single controlled term per media type that can be used as a file
extension or here as a PDI format. Below we provide a rule for
constructing the <MEDIA-TYPE-TOKEN>. These tokens are created from
the registered media types [10] by using the <MINOR-TYPE> if it is
unique, or otherwise, concatenating the <MAJOR-TYPE> and
<MINOR-TYPE>. These tokens are case insensitive and MUST encode any
reserved characters (<RESERVED>) for PDIs.
<CONTENT-TYPE> = major-type "/" minor-type
[* (";" parameter ["=" value])]
<MEDIA-TYPE-TOKEN> = minor-type / (major-type "+" minor-type)
<MAJOR-TYPE> = alpha-hyphen-digits
<MINOR-TYPE> = alpha-hyphen-digits
There are two media types for which <MEDIA-TYPE-TOKEN> is not
<MINOR-TYPE>:
Token Content Type
text text/plain
header message/header ;RFC 822 message headers
<FORMAT> is always required when:
* A PDI is minted and assigned to a specific resource.
* A foreign document ID is encapsulated in <UNIQUE-ID>.
* References to resource fragments are made.
* A client requests a resource in a specific format.
The format indicates how to interpret encapsulated identifiers and
MUST be supplied whenever foreign document identifiers are
encapsulated. For example, if an HTTP URL was encapsulated, the
PDI might look like:
pdi://oma.eop.gov.us/1994/10/20/http%3a%2f%2fwww%2ewhitehouse%2egov%2f.html.1
This PDI encapsulates the URL http://www.whitehouse.gov/ and denotes
its content on October 20, 1994, when the site was unveiled.
When a PDI contains fragment syntax, a format MUST be provided in
order to convey the media type of the resource to which the
fragment reference applies.
A server may store any subset of formats for a resource. It may
compute unstored formats on demand. A client can specify the desired
format by using a PDI with the appropriate format field.
If format is omitted, the identifier refers to the generic resource
denoted by the PDI. Assertions about the generic resource apply to
all the instantiations in the various media types indicated by the
universe of format in which the resource is available.
2.6 Version
The PDI <VERSION> is an optional component indicating a specific
version of a resource. <VERSION> is a positive integer greater than
0. When <VERSION> is omitted, it defaults to version 1.
Version numbers refer to the generic resource and not the specific
format, but a resource cannot have a version without having at
least one format. When a resource is changed in any format, version
numbers for all formats MUST be updated. In general, when a
resource changes significantly, applications SHOULD generate new
PDIs. When changes are small or incremental, applications SHOULD
increment the version. Any change in the byte count of a resource
for a specific <FORMAT> is a change and the version SHOULD be
incremented. Addition of a new <FORMAT> with the same semantics as
an existing <FORMAT> for the PDI is not a change and does not
require the version to be incremented.
Consequently, if an HTML document issues under
pdi://oma.eop.gov/1997/09/01.html.1
,and later, the HTML is converted to text, the PDI for the text
version is
pdi://oma.eop.gov/1997/09/01.text.1
However, if a spelling mistake is corrected later, whether or not
it changes the byte count in any format, the version number is
incremented.
pdi://oma.eop.gov/1997/09/01.text.2
An editing application MAY write internal versions of a document in
progress and only commit to the versioned PDI at a point when the
editing completed and the document is ready for release.
Version numbers MUST be included when:
* PDIs are minted and associated with specific resources.
* PDIs contain a fragment references.
* PDIs contain a fragment citation.
Inclusion of a <VERSION> in a fragment references ensures that the
fragment reference is resolved against a consistent machine
representation of the resource.
3 Fragment Syntax
3.1 Motivation
The PDI namespace provides an extensible syntax for referring to
parts of resources. Fragment syntax must be extensible because:
* There are too many existing media types.
* Some media types require highly technical fragment syntax,
(e.g., multidimensional points, multiresolution channels).
* New media types are coming into existence all the time.
The approach adopted here is to allow additional RFCs to extend
fragment syntax by adding fragment specifiers as they are needed.
The availability of a syntax for referring to resource fragments
raises the problem of referring to citations of fragments by
composite resources. The PDI namespace provides a fragment citation
syntax to address this issue.
3.2 Philosophy
3.2.1 Media Representations
A fragment syntax SHOULD differentiate the media representation from
the machine representation. If fragment schemes for a particular
media type use a media representation, they can be retargeted at new
or different machine representations. Otherwise, fragment schemes may
become unresolvable in the future when machine representations
change. Consequently, although a byte fragment specifier is provided
below, it SHOULD be used only for short-term purposes when
alternatives are unavailable.
3.2.2 Immediate Fragments
URNs require a fragment syntax because the alternative of interning
every fragment PDI in a URN namespace does not scale. It requires
the resolver to store potentially all possible permutations of the
fragment specifier for every resource. Immediate fragments require
the fragment syntax to be part of the identifier. With immediate
fragments, resolvers need only store those fragment PDIs for which
there are assertions beyond the binding to the resource subset.
Additionally, immediate fragments enhance privacy by not storing
all references to resource subsets. They also conserve storage and
reduce computation on resolvers.
3.2.3 Fragment Conjunctions
The fragment syntax does not support conjunctions of fragments
because this introduces a source of ambiguity when assertions are
made about PDIs. Conjunctive fragments SHOULD be handled by creating
a new PDI and asserting that it is the conjunction of some fragments.
In this way, the set is explicitly represented and ambiguous
references are excluded from the syntax.
3.2.4 Decoupling from Reference Mechanics
Fragment reference could be accomplished by providing a program
that given a resource return the specified part. This is not the
approach advocated here. The fragment scheme MUST be a minimal set
of parameters required for a program to extract the relevant part.
Additionally, these parameters SHOULD be specified in the order of
importance for extracting the referent. This increases the
probability of finding a referent if an identifier is accidently
truncated. In general, new fragment specifiers SHOULD minimize the
syntax the of invariants and parameters they require.
3.3 Fragment Scheme
The <FRAGMENT-SCHEME> indicates the position syntax used in
<POSITION>. A default position scheme should be defined for each
Content Type token used in PDIs. For example, text/plain uses
character positions as the default. The <FRAGMENT-SCHEME> MAY be
omitted when it is the default position scheme for the content type
indicated by <FORMAT>. In all other circumstances,
<FRAGMENT-SCHEME> MUST be supplied in order to ensure unambiguous
interpretation of position specifiers. Position schemes are case
insensitive.
3.4 Fragment Specifiers
The following position reference schemes have been defined:
3.4.1 Text Fragment Specifier
Text fragments are defined for the MIME Content Type text/*. Each
text fragment is an interval bounded by two character positions in
the resource. The fragment is the set of characters from <START>
upto but excluding <END>. The first character position starts with
0. Character positions are relative to the canonical,CRLF encoded
text for the resource. Therefore, all text/* resources MUST be
CRLF encoded to ensure correct fragment references. The PDI
<FORMAT> for text/plain is "text" and <CHAR-FRAGMENT-SPECIFIER> is
the default position specifier for the media type.
<CHAR-FRAGMENT-SPECIFIER> = "#" ["char" "="] start-char
"," end-char
<START-CHAR> = digits
<END-CHAR> = digits
Although wide-spread encodings for many alphabets use a single 8 bit
byte (e.g., ISO-8859 [15]), other encodings (e.g., unicode) employ
multi-byte encodings. Consequently, a server MUST be aware of the
character set used to encode a text resource. For 8 bit character
sets, char fragment resolution reduces to byte position. However,
multi-byte character sets require the server to perform appropriate
translation from the stored data representation.
The following PDI refers to the text starting at character 37 and
continuing upto but excluding character 51.
pdi://oma.eop.gov.us/1997/09/01/1.text.1#char=37,51
Since the default fragment specifier for text is
<CHAR-FRAGMENT-SCHEME>, the following PDI is equivalent:
pdi://oma.eop.gov.us/1997/09/01/1.text.1#37,51
When a text/plain content type uses a multi-byte character set,
<FORMAT> MUST be the character set token as defined by the IANA
Character Set Registry [18].
3.4.2 HTML Fragment Specifier
Fragments may be specified for the MIME Content Type text/html using
character fragment specifiers. The PDI <FORMAT> for text/html is
"html". The default position specifier for text/html is "char"
because it simplifies serving fragments.
Although character references are simple and effective for HTML
document fragments, it is often more convenient to use HTML
elements to delimit an interval within a document. Specific HTML
elements can be identified using the name parameter value or the
position of the tag in the document. In either case, the fragment
consists of all text and HTML tags from <START-ELEMENT> to and
including <END-ELEMENT>. References to HTML containers is
facilitated by use of a closed interval, but it can be awkward for
tags that are not explicitly closed, especially if they are
implicitly closed (e.g., <p>). Tag positions are counted from the
start of the resource, with the first being assigned 0. An
<ELEMENT-NAME> refers to the first element whose name parameter
value is equal to <ELEMENT-NAME>, which must be encoded according
to URN syntax [17], but decoded for case-sensitive equality testing.
<HTML-FRAGMENT-SPECIFIER> = "#" start-element "," end-element
<HTML-FRAGMENT-SCHEME> = char-fragment-scheme /
element-fragment-scheme /
named-fragment-scheme
<ELEMENT-FRAGMENT-SCHEME> = "elt"
<START-ELEMENT> = element-position / element-name
<END-ELEMENT> = element-position / element-name
<ELEMENT-POSITION> = digits
<NAMED-FRAGMENT-SCHEME> = "name"
<ELEMENT-NAME> = urn-chars
Char, elt, and name position references MUST use the same position
scheme for <START-ELEMENT> and <END-ELEMENT> an HTML fragment
reference.
HTML fragments may depend on surrounding context that is not part
of the fragment. HTML rendition without this containing context may
produce different effects or incorrect HTML. Responsibility for
assuring legal and felicitous HTML must reside with the user or
application creating the fragment reference because document
authors cannot be expected to anticipate all possible citations.
Therefore, the user or application creating the fragment citation
MUST NOT create illegal HTML fragments.
When fragments require context, the user or application MAY create
an intermediate document that uses fragment references to extract
both the relevant context and the target fragment. This
intermediate document SHOULD be legal HTML capable of standing
alone.
3.4.2 SGML & XML Fragment Specifier
The element and char fragment schemes can be applied to the more
general Standard Generalized Markup Language (SGML) [14] and
Extensible Markup Language XML [4] mark up languages, of which it
is a subset. The BNF below give the fragment specification for
SGML and any subsets, such as XML.
<SGML-FRAGMENT-SPECIFIER> = "#" sgml-start-element ","
sgml-end-element
<SGML-FRAGMENT-SCHEME> = element-fragment-scheme /
char-fragment-scheme
<SGML-START-ELEMENT> = element-position
<SGML-END-ELEMENT> = element-position
The default fragment specifier for SGML and SGML subsets is "char".
The following content tokens are defined:
text/sgml sgml
text/xml xml
The context caveats for HTML fragments should be extended pari pasu
to SGML and XML fragments.
3.4.5 Image Fragment Specifier
Image media types use a variety of encoding schemes and some
include multiple frames. Fragment reference for image/* uses a two
dimensional cartesian coordinate system with the origin (0, 0) being
in the upper left hand corner. The scale of the coordinate system is
the pixel level scale of the containing image. References to
subrectangles are made by specifying for the image fragment the
<START-COORDINATE> as the upper left most point and <END-COORDINATE>
as the lower right most point. These x and y coordinates are in
coordinate system of the containing image. When multiple frames are
present in an image, the reference frame is specified by providing
<FRAME>, which is 0 based and defaults to 0 when omitted.
<RECTANGLE-FRAGMENT-SPECIFIER> is the default fragment specifier for
the media types image/*.
<RECTANGLE-FRAGMENT-SPECIFIER> = # ["rect" "="] start-coordinate
"," end-coordinate ["," frame]
<FRAME> = digits
<START-COORDINATE> = 2-dim-coordinate
<END-COORDINATE> = 2-dim-coordinate
<2-DIM-COORDINATE> = "(" x-coordinate "," y-coordinate ")"
<X-COORDINATE> = digits
<Y-COORDINATE> = digits
The example below refers to an image fragment whose origin is x=5,
y=10 and extends to x=25, y=30. This yields the maximal rectangle
including the coordinates (5,10), (24,10), (24,29), (5,29). Note that
the zero-based coordinate system does not include the point denoted by
the <END-COORDINATE>.
pdi://images.satellite.nasa.gov.us/1997/09/30/1234.gif#(5,10),(25,30)
Since frame is unspecified, it defaults to zero and this PDI is equivalent to
pdi://images.satellite.nasa.gov.us/1997/09/30/1234.gif#(5,10),(25,30),0
The next PDI refers to the third frame in an animated GIF. As it
simplifies array references, the zero-based index shifts references
to the left by 1.
pdi://images.satellite.nasa.gov.us/1997/09/30/1234.gif#(5,10),(25,30),2
3.4.4 Audio Fragment Specifier
Audio media types use various encoding schemes (including variable
quality) that make byte ranges problematic for fragment references.
Start and end times provide a coordinate scheme that can be resolved
for any audio media type. A fragment reference includes data from and
including <START-TIME> upto and excluding <END-TIME>. The position
scheme for the temporal reference gives the time units. Two time
position schemes are defined. "msec" is millesconds and "sec" is
seconds. Temporal position schemes MUST NOT be intermixed. The
default time position scheme for audio/* is "sec".
<TIME-FRAGMENT-SPECIFIER> is the default fragment specifier for
audio/*.
<TIME-FRAGMENT-SPECIFIER> = # time-position-scheme "="
start-time "," end-time
<TIME-POSITION-SCHEME> = "msec" / "sec" /
ext-time-position-scheme
<START-TIME> = time
<END-TIME> = time
<TIME> = digits
<EXT-TIME-POSITION-SCHEME> = alpha-hyphen-digits
The example below denotes the audio clip extending from second 23
upto but not including second 57.
pdi://audio.npr.org.us/1997/09/30/1234.au#sec=23,57
3.4.5 Video Fragment Specifier
Video media types combine difficulties similar to those presented by
audio and image media types. A simple syntax for video should allow
fragment references to video by start and end times. Because some
applications may wish to crop the image, an optional x-y coordinate
framework is also supported.
The video fragment specifier uses a required time component and an
optional pair of coordinates to denote cropping. A video fragment
reference includes data from and including <START-TIME> upto and
excluding <END-TIME> in time units given by <TIME-POSITION-SCHEME>.
When cropping is desired, a fragment may include the optional
<START-COORDINATE> and <END-COORDINATE>.
<VIDEO-FRAGMENT-SPECIFIER> = # "crop" "=" time-position-scheme
"," start-time "," end-time
["," start-coordinate "," end-coordinate]
The following example refers to seconds 23 upto 51 of the video clip
1234.mpeg.
pdi://video.cnn.co.us/1997/09/30/1234.mpeg.1#sec,23,51
The next PDI uses the crop fragment scheme and is equivalent to the
preceding one because no cropping is specified.
pdi://video.cnn.co.us/1997/09/30/1234.mpeg.1#crop=sec,23,51
However, the crop scheme is easily able to specify a cropping, such
as the one below.
pdi://video.cnn.co.us/1997/09/30/1234.mpeg.1#crop=sec,23,51,(10,10),(20,20)
Here, only the rectangle from origin (10,10) to (20,20), the right
lowest point, is included in the fragment.
The video fragment scheme presupposes a pixel-based imaging model.
For other models, such as line-oriented analog video, specialized
fragment schemes may be appropriate when cropping is desired. Note
that the time fragment scheme works for analog models. For this
reason, the time position scheme <TIME-FRAGMENT-SPECIFIER> is the
default fragment specifier for video/*.
3.4.6 Octet Fragment Specifier
In general, long-lived fragment specifiers seek to avoid schemes
that depend on the underlying data representation because of low
generality and high probably of future failure when the data
representation is obsolesced by future developments. The byte
fragment scheme is provided as short-term solution that SHOULD be
superseded by defining a new fragment specifier. In any event, byte
fragments provide a fallback scheme for use until a new extension
can be introduced.
The content token for <BYTE-FRAGMENT-SPECIFIER> is "byte". The
fragment includes <START-BYTE> and all intervening bytes upto
<END-BYTE> which is excluded from the fragment reference.
<BYTE-FRAGMENT-SPECIFIER> = "#" "byte" "=" start-byte "," end-byte
<START-BYTE> = digits
<END-BYTE> = digits
The fragment PDI below refers to the byte sequence starting with byte
23 and continuing upto but excluding byte 57.
pdi://documentation.adobe.co.us/1997/09/30/1234.pdf#byte=23,57
These byte indices are compatible with byte ranges used in HTTP 1.1
[9].
3.5 Fragment Citation
3.5.1 Motivation
Once fragments can be specified, documents can move from a
cut-and-paste model to an inline reference model, where the
fragment is served from an origin site. Composite documents are
those that combine fragments using inline references. One reason
for preferring inline fragment references to cut-and-paste is that
the etiology of the fragment is preserved. Thus, meta-data such as
digital signatures can be carried forward and a document consumer
can easily follow references back to sources to examine original
contexts.
An example might be citing some sentences from Presidential policy
speech in a decision memorandum. Authenticity can be checked
because the original document and its digital signature are
available. But, what if the citation was out of context? Someone
else could use the citation syntax to refer to the citation of a
fragment by the composite document and assert that the fragment
citation was out of context as it built an argument against the
logic of the decision memorandum.
3.5.2 Discussion
Reference of a fragment as cited in a composite document is
accomplished by using a position specifier to give the
<ORIGIN-POSITION> in the composite document. The cited fragment
begins at the origin position and continues for the full extent of
the fragment. Thus, <ORIGIN-POSITION> provides the alignment in the
citing document while the dimensions or extent is carried by the
fragment reference. By keeping knowledge of the dimensions of the
fragment out of the coordinate framework of the composite document,
any position scheme can use the same generic citation syntax.
The origin position is defined as the point closest to the start of
the document. In a media type structured as a single sequence of
characters, the origin position is character 0. In a three
dimensional cartesian coordinate systems, the origin position is
0,0,0. When each content type token is made available for fragment
citation, the origin position MUST be defined.
The following identifier
pdi://oma.eop.gov.us/1997/11/03/4.text.1@103=pdi://oma.eop.gov.us/1997/09/01/1.text.1#37,51
refers to the citation of the fragment
pdi://oma.eop.gov.us/1997/09/01/1.text.1#37,51
by the document,
pdi://oma.eop.gov.us/1997/11/03/4.text.1
The citing document PDI uses the fragment text from character 37 to
51 starting from character 103. If the fragment PDI had no fragment
specifier, the entire document would appear starting at position 103.
3.6 Operations on PDIs
The three classes of operations on PDIs have slightly different
characteristics.
3.6.1 Minting
When PDIs are minted, they MUST carry a format and a version number
and they MUST NOT contain any wildcards. This ensures that the
identifiers associated with digital resources are fully specified
and convey both the media type and the version number. The presence
of a version number makes it possible to check for a higher version
of the resource. Together, the format and version number enable
fragment citation.
3.6.2 Binding
Once minted, a PDI can be bound to directly to a resource or
indirectly via a Uniform Resource Indicator (URI) [2], which may
often be a URL. Binding to a resource commits the PDI to a specific
sequence of bytes. Therefore, a URI that is indirectly bound to a
PDI MUST NOT change. If the URI changes, the indirect binding MUST
be broken, and the original machine representation associated
directly with the PDI.
3.6.3 Resolution
PDIs may be resolved to URLs, or other locators using recent URN
resolution standards, such as THTTP described by RFC 2169 [10] and
these resolvers may be discovered using the DNS extensions for
Naming Authority PoinTeR (NAPTR) described by RFC 2168 [8]. As
these experimental resolution standards evolve, or new ones are
introduced, PDI resolution can track any new standards precisely
because a URN namespace is independent of the method used to resolve
them.
When requesting a PDI from a URN resolver, the omission of a
version number is a request for the resolver to return to the
highest version available for the PDI. When defaulting a PDI to the
highest version, the resolver MUST indicate to the client the fully
qualified PDI associated with the media object. For THTTP, when a
server returns an entity, the server MUST include a content
location header [9] containing the fully-qualified PDI. This
allows the client to associate the entity body with the versioned
PDI that specifically identifies it.
When submitting a PDI to a URN resolver, wildcards may be used
to obtain information for sets of PDIs. However, the set of returned
PDIs MAY be complete only with regard to the specific knowledge about
a document series available to a resolver at the time.
3.6.4 Lexical Equivalence
PDIs can be lexically compared for equivalence after they are
converted to canonical form using the following procedure:
1.Unescape all escaped characters that are within <URN-CHARS> but which
are not <RESERVED-CHARACTERS>.
2. Downcase the two <HEX> characters following the escape character "%".
3. Downcase all PDI components except <UNIQUE-ID> and <POSITION>.
4. If it is an encapsulated identifier, canonicalize
<UNIQUE-ID> according the rules for the foreign identifier.
5. If <POSITION> is case-insensitive, as indicated by <FRAGMENT-SCHEME>,
downcase position.
Wildcards carry a semantic interpretation that is not relevant for
lexical equivalence. Two PDIs are lexically equal if and only if any
wildcards appear in exactly the same positions in both.
3.6.5 Assertions
With the advent of URN standards, networked assertion infrastructures
can now associate assertions (meta-data) with the unique identifier
of a resource rather than replicating that information with every
instance of a resource and creating a variety of synchronization
problems. On this view, each URN namespace may also become an
assertion domain with specific semantics.
A document series thus becomes an address space in which each PDI
serves as a pointer. Assertions about PDIs are assertions about the
digital objects or fragments to which they refer. The ability to make
and retrieve assertions about PDIs provides a means to associate
meta-data with digital objects. For example, collaboration systems
may use a typed link semantics to structure resources in meaningful
ways. Alternatively, security systems may assert digital signatures
or other trust information about PDIs. For example, a digital
signature may be attached to some mobile code to check its integrity
regardless of its proximate source. Access control systems might even
assert differential access to various components of a single digital
object.
Several groups are developing standards for associating meta-data
with resources [11] [16]. These approaches are currently evolving and
as yet lack a suitable persistent identifier model. URNs [17] [19]
[20] and specifically PDIs offer a suitable persistent identifier for
use with assertion schemes. The ability to refer to tokens and
relations as first-class objects will dramatically simplify equality
testing and significantly enhance the power and flexibility of the
emerging standards for wide-area assertion infrastructures.
3.7 Registering New Fragment Specification Schemes
[TBD: This section will provide rules for registering new fragment
specification schemes with IANA.]
3.8 Interpreting PDIs as Uniform Resource Locators
Current URN resolver discovery [8] and URN resolution [7] standards
are experimental and lack wide deployment. As these standards
evolve and become more wide spread, an interim resolution strategy
using existing servers and clients for HTTP may prove useful. This
section defines use of PDIs as URLs [1] with standard HTTP servers.
PDIs MAY be interpreted as Uniform Resource Locators (URL) and MAY
be used in contexts where URLs are appropriate, such as with HTTP
servers. When interpreting PDIs as URLs, PDIs do not carry URN
prefix.
<URL> = pdi ; Encoding in URL syntax
In all other ways, the syntax and semantics of PDIs remains exactly
the same as under the URN namespace interpretation. However,
resolver discovery and resolution under the URL interpretation are
somewhat different.
3.8.1 Resolver Discovery
While an appropriate resolver for a PDI document series SHOULD be
found using current standards [8], an HTTP resolver MAY also be
discovered heuristically by interpreting the document series as a
domain name and looking up an IP address associated with the name.
If a PDI-aware HTTP server is operating at the IP address and it
successfully answers HTTP requests on the document series, then
assume that a resolver for the document series has been located.
A client MAY also use new resolver discovery standards as they
emerge or out of band methods to locate a resolver for a document
series.
Since the heuristic discovery method provides no indication
concerning the completeness or authority of the resolver, server
operators SHOULD ensure that any server providing PDI resolution
has complete knowledge of the document series, whether served
locally or proxied from remote servers. Thus, if a server can
resolve one PDI in a document series, the server operator
guarantees the assumption that the server has sufficient knowledge
to resolve any PDI in the series. An HTTP 1.1 or higher client MAY
check whether an HTTP server resolves a PDI document series by
issuing a HTTP request using the OPTIONS method on the PDI.
3.8.2 Resolution Methods
Since the HTTP standard [9] provides for use of any URI [2] in HTTP
requests, no immediate extensions to the HTTP standard are required
for PDI resolution. Requests for PDIs are just like requests for
URLs, except that there are no relative PDIs; the scheme and
document series MUST always be provided. Fully-specified PDIs
allow the server to distinguish PDIs from ordinary URLs using the
HTTP scheme. Servers SHOULD invoke augmented parsing for PDIs, for
example, as necessary for fragment resolution.
<HTTP-REQUEST-LINE> = <method> " " <pdi> " " <http-version>
<crlf>
HTTP provides a series of methods on URIs. Below we define the
operations for each method in HTTP 1.1 with respect to PDIs.
GET Resolves the PDI and returns the resource.
HEAD Returns the meta-data of the PDI as headers.
OPTIONS Returns the HTTP operations supported for the PDI.
TRACE returns information on the path to the origin server
through proxies.
Non-idempotent HTTP methods interact with PDI semantics and require
special handling.
PUT associates a resource with a PDI. If the PDI already
exists, the server MUST increment the PDI version number and
store the resource under this new version. If the PDI does not
exist, the server SHOULD return 404 "Not Found". If the client
wishes to assign a new PDI, the PUT request MUST indicate the
document series by providing a partial PDI:
<DOCUMENT-SERIES-IDENTIFIER> = "pdi://" document-series "/"
When a server receives a <document-series-identifier> as the
URI in a PUT method, it MUST assign a unique PDI within the
document series using the current <ISO-DATE>, a daily
<UNIQUE-ID>, an appropriate <FORMAT>, and a <VERSION> equal to
1.
DELETE is not defined for PDIs as they are long-lived,
persistent identifiers. An HTTP server MUST return 405 "Method
Not Allowed".
When an HTTP method is applied to an unknown PDI, the server MUST
return 404 "Not Found."
For all HTTP methods, whenever the server is unable to apply the
method to an existing resource or to assign a new PDI, it MUST
return 405 "Method Not Allowed."
3.8.3 Proxying HTTP Resolution
When a server is proxying PDI operations to an upstream HTTP
server, it MUST pass through all requests and responses. The
server contributes its knowledge of an origin server that can
resolve the PDI. A server unable or not wishing to proxy PDI
operations but aware of a server capable of handling the operations
SHOULD redirect the client to the PDI-capable server.
3.8.4 Proxying THTTP Resolution
When the upstream server implements URN resolution, the proxy
SHOULD perform protocol translation. For THTTP [7], the server
SHOULD perform the following request translations.
Request Proxy Request
GET <PDI> GET "/uri-res/N2R?urn:" <PDI>
HEAD <PDI> GET "/uri-res/N2C?urn:" <PDI>
Responses from the THTTP resolver SHOULD be passed through. For
HTTP methods other than GET and HEAD, the server MUST return a 405
"Method Not Allowed"
4. History
Persistent Document Identifiers (PDI) were developed in early 1994 in
order to provide persistent, location-independent identifiers for
electronic publications. PDIs were deployed in Fall, 1994 when the
second White House Electronic Publications System [21] was brought
online. Every document published by the system since January 20,
1993 now carries a PDI. An identifier that was independent of
protocol and transport proved extremely useful in managing this
document set and resolving delivery failures. The publications server
currently issues PDIs and resolves them using THTTP URN resolution
[7].
The White House publications are an excellent example of documents
that are monotonic (not subject to revision), widely mirrored, and
subject to eventual relocation. Documents are never revised after
they issue. Instead, they may be superseded by a corrected versions,
but corrections are limited to transcription errors. Many sites
around the world archive and redistribute the documents. These
include major online services, libraries, advocacy groups, government
entities. As of March 1996, it was estimated that about one million
people around the world read at least some part of a document during
the course of a week. At the end of an administration, the White
House ceases to serve a former President's documents and they must be
relocated to the National Archives, and normally, to his Presidential
library. In sum, the White House documents are mirrored in many
locations from which they may be obtained and the primary document
repository must move after a period of time.
Persistent Document Identifiers were also used in an advanced
experiment in large-scale, asynchronous collaboration during the Vice
President's Open Meeting on Government Reinvention in December 1994.
[12] In the Open Meeting, PDIs not only identified resources but they
also associated a collaboration semantics with resources. A variety
of meta-data and annotations were attached to resources via PDIs.
More generally, PDIs were used to build the persistent semantic
network around resources that allowed arbitrary assertions using
first-class links, each with their own PDIs. Both the document
database and the semantic network were mirrored at another site using
PDIs to align all structures.
5. Acknowledgments
This specification was improved by comments from Andrew J.
Blumberg, Mitchell N. Charity, Ron Daniel jr., Henrik Frystyk
Nielsen, Jerry Saltzar, Karen R. Sollins, Christopher R. Vincent.
This specification was revised and extended from an earlier draft
dated December, 1994.
This specification describes research done at the Artificial
Intelligence Laboratory of the Massachusetts Institute of
Technology. Support for the M.I.T. Artificial Intelligence
Laboratory's artificial intelligence research is provided in part
by the Defense Advanced Research Projects Agency of the Department
of Defense under contract numbers MDA972-93-1-003N7 and
F30602-97-2-0239.
6. References
[1] T. Berners-Lee, L. Masinter, M. McCahill, ``Uniform Resource
Locators (URL)'', RFC 1738, December, 1994.
http://ds.internic.net/rfc/rfc1738.txt
[2] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource
Identifiers (URI): Generic Syntax and Semantics", Internet Draft
(work in progress), November 5, 1997.
[3] N. Borenstein, N. Freed, "MIME (Multipurpose Internet Mail
Extensions) Part One: Mechanisms for Specifying and Describing the
Format of Internet Message Bodies", RFC 1521, September 1993.
http://ds.internic.net/rfc/rfc1521.txt
[4] T. Bray, J. Paoli, C. M. Sperberg-McQueen, ``Extensible Markup
Language (XML),'' World Wide Web Consortium, August, 1997,
http://www.w3.org/TR/WD-xml
[5] T. Bray, S. DeRose, ``Extensible Markup Language (XML): Part
2. Linking,'' World Wide Web Consortium, July, 1997.
http://www.w3.org/TR/WD-xml-link
[6] D. Crocker, P. Overell, "Augmented BNF for Syntax
Specifications: ABNF," Internet Draft (work in progress), January
1997.
[7] R. Daniel, "A Trivial Convention for using HTTP in URN
Resolution," RFC 2169, June, 1997.
http://ds.internic.net/rfc/rfc2169.txt
[8] R. Daniel, M. Mealling, "Resolution of Uniform Resource
Identifiers using the Domain Name System," RFC 2168, June, 1997.
http://ds.internic.net/rfc/rfc2168.txt
[9] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee,
"Hypertext Transfer Protocol -- HTTP/1.1," RFC 2068, January, 1997.
http://ds.internic.net/rfc/rfc2068.txt
[10] N. Freed, J. Klensin, J. Postel, "Multipurpose Internet Mail
Extensions (MIME) Part Four: Registration Procedures", RFC 2048,
November, 1996. http://ds.internic.net/rfc/rfc2048.txt
Registered media types can be found at:
ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types
[11] R. V. Guha, T. Bray, "Meta Content Framework Using XML," W3C
Technical Note NOTE-MCF-XML, June, 1997.
[12] R. Hurwitz, J. C. Mallery, ``The Open Meeting: A Web-Based
System for Conferencing and Collaboration,'' Proceedings of The
Fourth International Conference on The World-Wide Web, December 12,
1995. Also in Web Journal, Winter, 1996, 1(1): 17-36.
[13] ISO 3166:1988 (E/F) - Codes for the representation of names of
countries - The International Organization for Standardization, 3rd
edition, 1988-08-15. ISO 3166 country codes can be found at:
ftp://ftp.isi.edu/in-notes/iana/assignments/country-codes
[14] ISO 8879 Information Processing -- Text and Office Systems --
Standard Generalized Markup Language (SGML), ISO 8879:1986. For
the list of SGML entities, consult
ftp://ftp.ifi.uio.no/pub/SGML/ENTITIES/.
[15] ISO-8859. International Standard -- Information Processing --
8-bit Single Byte Coded Graphic Character Sets --
Part 1: Latin alphabet No. 1, ISO 8859-1:1987.
Part 2: Latin alphabet No. 2, ISO 8859-2, 1987.
Part 3: Latin alphabet No. 3, ISO 8859-3, 1988.
Part 4: Latin alphabet No. 4, ISO 8859-4, 1988.
Part 5: Latin/Cyrillic alphabet, ISO 8859-5, 1988.
Part 6: Latin/Arabic alphabet, ISO 8859-6, 1987.
Part 7: Latin/Greek alphabet, ISO 8859-7, 1987.
Part 8: Latin/Hebrew alphabet, ISO 8859-8, 1988.
Part 9: Latin alphabet No. 5, ISO 8859-9, 1990.
[16] O. Lassila, R. R. Swick, "Resource Description Framework
(RDF): Model and Syntax," World Wide Web Consortium, Technical Note
RDF-Syntax (work in progress), August, 1997.
[17] R. Moats, "URN Syntax," RFC 2141, May 5, 1997.
http://ds.internic.net/rfc/rfc2141.txt
[18] J. Reynolds & J. Postel, ``Assigned Numbers,'' STD 2, RFC 1700,
October, 1994.
[19] K. Sollins, "Architectural Principles of Uniform Resource Name
Resolution," Internet Draft (work in progress), July, 1997.
[20] K. Sollins, L. Masinter, "Functional Requirements for Uniform
Resource Names," RFC 1737, December, 1994.
http://ds.internic.net/rfc/rfc1737.txt
[21] White House Electronic Publications System,
http://www.pub.whitehouse.gov
6. Author's Address
John C. Mallery
Artificial Intelligence Laboratory
Massachusetts Institute of Technology
545 Technology Square, NE43-797
Cambridge, MA 02139 USA
Email: JCMa@ai.mit.edu
Phone: 617-253-5966