CryptoGnome models each
repository as a collection of versioned
objects. Each of these objects may be either
content-type
d BLOBs or collections of other
versioned objects. These only behaviors supported by these
objects support the semantics of versioned storage and retireval
of the BLOB text.
The HTTP POST
method essentially creates an RPC
transport within HTTP.
In RFC 1945, the
following statement is made:
The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI ... Applications must not cache responses to a POST request because the application has no way of knowing that the server would return an equivalent response on some future request.
There is really no difference between an HTTP URL and a CryptoGnome URL, but there are conventions about the semantics of the URL'S components. RFC 1808 informally defines the following components of URL syntax:
URL Component | Structure | |
---|---|---|
url |
<scheme> :// <net-loc> / <path> ;
<params> ? <query> # <fragment>
|
|
<scheme> : |
scheme name, as per Section 2.1 of RFC 1738 | |
// <net-loc> |
network location and login information, as per Section 3.1 of RFC 1738 | |
/ <path> |
URL path, as per Section 3.1 of RFC 1738 | |
; <params> |
object parameters (e.g., ";type=a" as in Section 3.2.2 of RFC 1738 | |
? <query> |
query information, as per Section 3.3 of RFC 1738 | |
# <fragment> |
fragment identifier |
For CryptoGnome URLs, the <scheme>
is either
http
or (in Ordo anyway)
vo
, the difference being that vo
URLs
have a well-defined default value for the
<net-loc>
component, which the
http
<scheme>
does
not. Specifically, the default <net-loc>
for
the vo
<scheme>
is
localhost:8002
. This means that there is a precise
mapping of vo
URLs to http
URLs, as
well as ensuring that every valid http
URL is a
valid CryptoGnome URL, while de-emphasizing the network location
of versioned objects under the vo
<scheme>
.
CryptoGnome also makes (optional) use of the ;
<params>
construction which is not a part of standard
http
URLs. The <params>
value
indicates which specific version of the repository object is the
receiver of the <query>
method invocation.