OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xri message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: [xri] [Glossary] Definition of "Resource" and "Attribute" (long)


[Ed. Note: One of the action items coming out of last week's F2F was the
completion of the XRI TC Glossary. Marc Le Maitre and I were assigned as
glossary editors. This is the first of several glossary-related threads -
we'll mark these threads with "[Glossary]" in the subject line for filtering
purposes.]

One open issue we did not have time to resolve at the F2F was the definition
of the term "attribute". After several hours thinking about this since the
F2F (some of us technical glossary wonks are truly twisted in this respect
;-), and after reviewing the URI spec (RFC 2396), I realized the source of
this problem was the definition we had agreed on for the term "resource".
This message: a) explains in some depth why I believe we need to clarify
this definition and b) proposes a new definition for "attribute" consistent
with this definition of "resource".

REVISITING OUR DEFINITION OF RESOURCE

At the F2F, we agreed to adopt the definition of "resource" supplied by the
URI spec. To wit:

         "A resource can be anything that has identity.  Familiar examples
include an electronic document, an image, a service (e.g., "today's weather
report for Los Angeles"), and a collection of other resources.  Not all
resources are network "retrievable"; e.g., human beings, corporations, and
bound books in a library can also be considered resources.
	The resource is the conceptual mapping to an entity or set of
entities, not necessarily the entity which corresponds to that mapping at
any particular instance in time.  Thus, a resource can remain constant even
when its content---the entities to which it currently corresponds---changes
over time, provided that the conceptual mapping is not changed in the
process."

So at the f2f agreed that a resource was simply "anything that has
identity". By this definition, data itself could be considered a resource
because you must be able to identify it or you can't use it.

By this definition, then, resources are infinitely recursive - a resource
can contain a resource can contain a resource right down to the smallest
identifiable unit of data - a single bit.

If you define a resource this broadly, then what we typically refer to as an
"attribute" - data whose purpose it is to describe another resource (a
person's hair color, a rock's weight, a book's page count) - must itself be
considered a resource.

If that's the case, we need another term that defines "that kind of resource
which is not an attribute". In other words, a term for the thing an
attribute describes - the person, the rock, or the book.

The classic computer science definition of this entity would be an "object".
(Immediately I shudder to think of having to include a definition of
"object" in our glossary.) But this introduces the question, "What is the
precise difference between an object and an attribute?" For example, an
object that stands alone in one context (say, a TelephoneNumber object that
contains the attributes CountryCode, AreaCode, Number, Extension) could be
an attribute in the context of another object (say, a Telephone). In fact,
object-oriented methodologies typically classify attributes into two types:
simple (attributes which do not contain other attributes) and complex
(attributes which themselves contain attributes). The latter is often
referred to as a data object. So are all attributes objects? All objects
attributes?

This grates against common sense because there is a class of data that is
clearly the "endpoint" or "primitive" describing other objects - data values
such as a person's hair color, a rock's weight, a book's page count. This
class of data is widely referred to as an "attribute". At the same time
there is another class of data (or data containers) that are the "entity
described by one or more attributes" - people, rocks, books. These are
widely referred to as "objects". And while an object can be a complex
attribute, it cannot be a simple attribute.

This all boils down to 3 levels (if this is starting to sound like
metaphysics, it's real close): 

#1) Objects that exist independently of any other object, in a global
context (call them independent objects).

#2) Objects that describe other objects, in a specific context (call them
complex attributes), and

#3) Pure attributes which only describe an object in a single context (call
them simple attributes).

Now the question is: are all three resources? With our original definition
of a resource as "anything that has identity", the answer might be yes. But
the more intuitive answer seems to be that "resource" only includes #1 -
objects that exist independently of any other object.

Why? My first argument would be that #2 and #3 don't actually fit the
defintion of "anything that has identity" because an attribute - either
complex or simple - exists *only in the context of the object it describes*.
Therefore it doesn't have it's own "identity". It exists only as part of the
identity of the object it describes.

Take, for example, a rock that weighs 3 pounds. This rock has identity, if
nothing other than the fact that it is the rock that weighs 3 pounds (out of
a pile of two rocks that weigh 3 and 5 pounds, respectively). But can you
say that "3 pounds" all by itself has identity? The NUMBERS and WORDS have
identity, but the actual value "3 pounds" is not ABOUT anything unless it is
put in the context of the rock it describes.

If you follow this to the logical extreme, it overturns our original
assumption that all data has identity. Rather only one class of data - that
which comprises an independent object - has identity. The other class of
data that only describes an object (an attribute, either complex or simple)
- does not have identity, because you literally can't "identify" it outside
of the context of the object it describes.

The only wrinkle in this definition is the middle case - level #2 - where an
object like a phone number exists as a complex attribute in the context of a
specific resource like a telephone but may also exist independently in a
global context and therefore be also considered a resource. In this case the
same object may, in one context, be an attribute, and in another context, a
resource. But that's okay, because our definition of resource would still
only cover the case where it was an object that exists independently of any
other object, and our definition of attribute would cover the case in which
it was relative to another resource.

Speaking of the term "relative", this analysis matches that of the URI spec
itself. Following is the definition of "fragment" in the spec:

"4.1. Fragment Identifier

	"When a URI reference is used to perform a retrieval action on the
identified resource, the optional fragment identifier, separated from the
URI by a crosshatch ("#") character, consists of additional reference
information to be interpreted by the user agent after the retrieval action
has been successfully completed.  As such, it is not part of a URI, but is
often used in conjunction with a URI.
	"The semantics of a fragment identifier is a property of the data
resulting from a retrieval action, regardless of the type of URI used in the
reference..."

By this it is clear that Berners-Lee et al meant that a "resource"
optionally contained additional data that was *not part of the URI*, i.e.,
was not the resource itself, but could be identified only in the context of
that resource. This makes sense because a fragment identifier, such as
"#Chapter-3", cannot be resolved outside of the context of the current
resource. To be literal, "#Chapter-3" is an identifier, but only a relative
identifier for an attribute that does not "have identity" by itself.

PROPOSED NEW DEFINITIONS OF RESOURCE AND ATTRIBUTE

As a result of this highly pedantic analysis (did I mention that precisely 7
angels can dance on the head of a pin?), following is the recommended
refinement of our definition of "resource" and the corresponding defnition
of "attribute":

RESOURCE: As defined in RFC 2396 (URIs): "anything that has identity". To be
specific, a resource is anything that can be identified independently of
another resource, i.e., in a global context, vs. only in the context of a
specific resource. For example, a car is a resource because it has identity
that exists independent of any other resource. However the color of a car is
not a resource because it cannot exist independently of the car itself.
Similarly, a document is a resource but "paragraph 3" of the document is not
a resource because it cannot exist independently of the document. Both the
color of a car and paragraph 3 of a document are attributes of a resource.
See ATTRIBUTE. [Continue with the rest of the current definition of
resource, which explains the 3 key types of resources from the standpoint of
identifiers: non-network resources, network resources, and resource
representations.]

ATTRIBUTE: Data associated with a resource that can be identified only in
the context of that resource. For example, "the color of my car" is an
attribute of the resource "car". "Paragraph 3 of Moby Dick" is an attribute
of the resource "Moby Dick". Note that the *concepts* of "color" or
"Paragraph 3" are themselves resources, because the definitions of these
concepts exist in a global context. However instances of those concepts must
describe a specific resource, and thus can only be an attribute. 

Note that an attribute may contain other attributes. This is called a
complex attribute, vs. one that doesn't contain other attributes, which is
called a simple attribute. For example, the resource "Telephone" may have
the complex attribute "Phone Number" which in turn contains the simple
attribute "Area Code". An attribute in a specific context may also be a
resource in a global context. For example, "Phone Number" is a complex
attribute of the resource "Telephone" but it may also be a resource that
exists independently of that telephone (for example, it may be reassigned to
a different telephone).

*****

As a final note, the reason for the length of this message is that the
fundamental difference between a resource and an attribute is reflected
directly in several of our core requirements, and I expect ultimately in our
syntax. So in the long run I believe a precise definition will save us lots
of time. As a friend of mine is found of quoting Alfred North Whitehead,
"How many arguments could have been avoided if only the participants had
bothered to define their terms."

Feeback gladly solicited.

=Drummond  



      


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC