- From: Svante Schubert <Svante.Schubert@Sun.COM>
- Date: Thu, 04 Dec 2008 19:36:35 +0100
- To: public-pkg-uri-scheme@w3.org
How do we access sub-contents from a package file (e.g. ZIP) in a
uniform way via an URI?
Three distinct user scenarios:
1)
Pointing from an user-agent to a sub-content of a package, desiring to
load only the sub-content to the client (minimizing traffic).
(e.g. to view only an image bundled within the package)
2)
Pointing from an user-agent to a sub-content of a package, desiring to
load the complete package, but to view the referenced sub-content
(e.g. to view a certain paragraph within the content XML file of an
OpenDocument package)
3)
Having a relative reference within the sub-content of a package, which
must be resolved using a base URI
(e.g. an RDF/XML file within an OpenDocument package uses relative URLs
to identify sub-contents of the package to be described via RDF. Those
have to be resolved when building an RDF graph)
4)
A relative reference within the sub-content of a package should
reference to a file outside the package
(e.g. the content.xml of an OpenDocument package references to an image
aside the ODF document)
Three distinct solutions:
a) Using a package scheme
No standardized scheme available, but existing proprietary package schemes:
[1] jar: scheme Firefox does understand JAR URLs and used to use them to
support the concept of signed JavaScript.
[2,3] pack: scheme - provisional IANA scheme used for OOXML
Examples:
pack://http:,,www.foo.com,dir,my.package/a/b/graphic.png
jar:http://www.foo.com/dir/my.package!/a/b/graphic.png
Characteristics of package URI:
- Contains arbitrary URI referencing to the package
- Usable as a valid base URI to resolve relative references within a
package (SCENARIO 3 - works, SCENARIO 4 - might work, have to be specified)
- Implementation constraint: As the package URI contains an encoded URI,
that URI have to be resolved first by the client to get the package from
the server by the encoded protocol.
Client have to resolve the package URL, receives the complete package,
returns the sub-content (SCENARIO 1 - fails / SCENARIO 2 - works)
b) Using packages transparent in an URI:
A package will be used similar as a directory in the URI path.
Packages and directories are adequate containers.
Example:
http://www.foo.com/dir/my.package/a/b/graphic.png
file:///dir/my.package/a/b/graphic.png
Characteristics of transparent package usage in URIs:
- Would be resolved on the server
- Not common implemented on servers
- Can only return the sub-content (SCENARIO 1 - works / SCENARIO 2 -
fails as no caching on client side possible)
- Usable as a valid base URI to resolve relative references within a
package (SCENARIO 3 - works)
- The package file name is equivalent to a directory name (SCENARIO 4 -
works)
c) Share fragment identifier syntax among all package formats
Characteristics of transparent package usage in URIs:
- Basic set of syntax to be extended by package media types (have to be
overtaken first)
- media types might extend the set to create their own abbreviations
(e.g. in ODF documents most xml:ids are in content.xml therefore the
following two URL are meant to be equal:
http://server/path/file.odt#/content.xml?id
http://server/path/file.odt#id
)
- The fragment identifier is separated from the rest of the URI prior to
a dereference [4] (SCENARIO 1 - fails / SCENARIO 2 - works)
- NOT usable as a valid base URI to resolve relative references within a
package (SCENARIO 3 - fails, SCENARIO 4 - fails)
Example:
http://www.foo.com/dir/my.odt#/a/b/test.html?id
For the OpenDocument package format we use now the solution b), with a
new proposal of using fragment identifiers c) [5].
With the constraint that for the resolution of relative URLs in RDF only
solution b) should be used, to avoid the creation of URI alias in RDF
graphs.
Regards,
Svante
[1] http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html
[2] http://www.IANA.org/assignments/uri-schemes/prov/pack
[3] http://tools.ietf.org/id/draft-shur-pack-uri-scheme-04.txt
[4] http://tools.ietf.org/html/rfc3986#section-3.5
[5]
http://wiki.oasis-open.org/office/Change_Proposal_for_ODF_1.2_using_URL_fragment_identifiers_for_ODF_media_types
Received on Thursday, 4 December 2008 18:37:19 UTC