Re: Definition of "Resource"

Hi Grant,

On 26 May 2012, at 20:35, Grant Robertson wrote:
> Similarly, within the context of web technologies - as Richard Cyganiak reminded us[1] - the word "resource" is already defined as the universe of everything. I do have to disagree with Richard, in that I believe this is, in fact, a "precise" definition. Remember, "precise" does not mean "infinitessimally narrow" or "exclusive." It merely means "completely unambiguous." And the definitions offered by Richard from various sources seem to rather unambiguously indicate that the definition of "resource" - within the context of web technologies - does, indeed, mean EVERYTHING.

The RFC2616 definition notably disagrees with that. It's the very first definition I quoted in [1].

The other definitions more or less agree that anything can be a resource, but then go on to make quite different additional assertions about resources and their role in web architecture.

> A text literal is a sequence of bytes within a computer's memory or on a storage device that also has additional metadata associated with it indicating that it is, in fact, a text literal.

Well, no. In general, a text literal is a sequence of Unicode code points.

In the specific case of RDF, a literal is a pair of a sequence of Unicode code points and a datatype IRI.

Trying to fold concerns such as computer memory, storage devices, or the presence of metadata into that definition just confuses things. For example, a text literal can be wirelessly sent from one system to another, or a person can memorize it and reproduce it in a different system. In today's computing world, the stuff we're talking about here is so many layers of abstraction removed from any actual continuous sequence of computer memory addresses or storage devices that talking about them is simply not useful. You could just as well insist that it's not a text literal unless there are electric charges in a semiconductor.

(And: Ignorance of the difference between bytes and characters are the reason why we still can't have reliable exchange of characters outside of US-ASCII in the 21st century.)

At any rate, RDF is fully Unicode aware and doesn't talk about any of that computer memory stuff in its definition of literals, so none of this is relevant here.

> So, putting "Cesar" between two tags in an XML file makes it a text literal. Speaking it or writing it down does not count.

Well, fine, assuming we're not spelling out the code points.

> Think of it this way. You can have a universe of everything. Now you can look at all that everything with your eyeballs. Or you can listen to it with your ears. Or you can write down names for all those things on pieces of paper. Or you can create (or cause to be created) sequences of bytes within the memory of a computer or on a storage device, said sequences conforming to one of two specifications and associated with some form of metadata indicating in some way that these sequences do in fact meet said specifications and are intended to be used to refer to things in the universe of everything. It is still the same universe of everything, you are just using a different means to access or refer to it.

Yes, this is an excellent way of putting it (glossing over the confusion of bytes and characters and the irrelevant appeal to computer memory and storage devices).

In RDF, literals and IRIs are two different ways of referring to members of the same set of resources, the set of everything.

Furthermore, IRIs can refer to resources in at least two different ways. First, by means of RESTful interaction with the resource's state via a protocol such as HTTP. Second, by means of denotation; this involves a claim, in human- or machine-readable form, that a given IRI refers to a particular thing. It is good practice to make sure that these two different means of reference are well-aligned, but there's nothing in the core specs (URI, IRI, RDF, HTTP) that enforces this, and in fact it is common that they do not align in practce.

> Some have proposed using the phrase "RDF source." However, I think this is a misnomer and a mistake. The word "source" is commonly defined as "where something comes from." So in the context of web technologies, "RDF source" would mean "where said RDF data came from" and would definitely NOT be commonly interpreted to mean the same thing as what the word "resource" is already defined to mean within the context of web technologies. To start using a different phrase which actually is less accurate would be counterproductive.


+1 about “RDF source” being a poor term.

> So, this entire debate as to whether to use the word "resource" to refer to a sequence of bytes which matches the specifications to be either an IRI or a text literal, is rather moot. The word is clearly and precisely defined within the context of web technologies.

See the HTTP 1.1 spec for a notable counter-example.

> When speaking or writing about RDF or RDF technologies, one is definitely well within the context of web technologies. And, within the more narrow context of RDF or RDF technologies, the word "resource" does NOT have an even more narrow definition.

It shouldn't, I agree.

> So, why would one feel any need to create yet another new word or phrase to mean something which we already have a perfectly good word for? A word that is commonly accepted by all to have a flexible definition based upon the context in which it is used?

Just like you may want to use the phrases “renewable energy” or “alternative energy” to refer to the energy from particular sources, one way want to have phrases that allow talking about resources while distinguishing the means of reference — e.g., RESTful interaction or denotation — that is being used.

Hence my two separate proposals:

1. “resource” (= denotation) and “stateful resource” (= RESTful interaction)
2. “entity” (= denotation) and “resource” (= RESTful interaction)

Neither of the proposals have fared too well, which may be due to what you pointed out above, that it's about means of access/reference rather than the characteristics of the things referred to.

> The only reason I can think of is exclusivity. Not within your terms, but within your social group. A common malady in academic circles is to create new words or phrases (or to completely redefine existing words or phrases outside of the pattern which other people would expect) for what some claim to be more clarity but which only serves to introduce less clarity and a further separation between said group and the rest of the human population. Jargon becomes a form of jingoism. It prevents others from joining your group. It makes members of the group feel they have some measure of status because they are familiar with the twisted jargon while others are frustrated with the jargon and thus left out of the group.

Four points here.

1. I do agree that frequent reminders to keep it simple and avoid overcomplication are appropriate.

2. This thread is just another manifestation of the httpRange-14 debate. This has been ongoing for around a decade. Its root is that the meaning of “resource” has somewhat haphazardly evolved from a narrow meaning of “computing resource” to the current meaning of “everything”, and that different technologies in the web stack have forked off at different stages in that progression, and thus the different communities that have grown up around these technologies have ended up with quite different understanding of “resources” and with barely compatible mental models. What we see here in this thread is yet another attempt at making sense of these different terminologies and mental models, with an eye towards finding common ground and aligning them. Above, you seem to be characterizing that as a wilful attempt at excluding others from the community and erecting barriers to communication. I don't think this is a helpful or appropriate comment.

3. This is a working group producing technical specifications within a standards body. Terminological precision is appropriate and required, and a certain amount of jargon is to be expected.

4. If the RDF specifications needlessly introduce new terms where existing ones would do, or redefine existing words or phrases in a way that's fundamentally different from what other people would expect, then by all means tell us about it and we'll see if we can get rid of it. (To the extent it's possible without breaking backwards compatibility too much.)

>  I have a very important question for the RDF working group: Is this what you want?

I want precise and well-defined terminology that is well-aligned throughout the web technology stack. This terminology should be as simple as possible, but no simpler. If this means people have to learn some jargon if they don't want to feel left out, I'm ok with that.

All the best,
Richard


> [1] http://lists.w3.org/Archives/Public/public-rdf-wg/2012May/0578.html

Received on Monday, 28 May 2012 10:38:03 UTC