Mathematical objects, real-world and virtual resources
I was writing something about extensible data structures, but then I started referring to this terminology and tried to write it up, but it grew, and this really deserves it's own entry. So in this post I classify resources that RDF can talk about in three kinds: mathematical objects, real-world resources, and virtual resources (stuff that only exists because someone created it in a computer: websites, folders, e-mail addresses).
By mathematical object, I mean something which exists because you define it -- natural numbers, lists, records, B-trees, whatnot. With mathematical objects, if you have the original definition, you can in theory conclude everything about them that can possibly be known about them[*], although it may be hard to find out in practice (such as whether there are infinitely many twin primes).
[*] Due to Goedel's incompleteness theorem, that's in fact not quite true depending on how you define things, but let's not go there.
By real-world resource, I mean something like a person, a country, or a programming language, where we can assume some general agreement about what it is and what is true about it. I.e., something which exists already before we start talking about it, and which we only refer to.
Contrast this to virtual resource, by which I mean something like a website, a folder, or an e-mail address, which exists only because somebody creates it in a computer.
Thinking about virtual resources as a separate category has a couple of important practical advantages. The most important one is that you can assign a unique URI to them, unique meaning that every resource only has one URI, so if two resources have different URIs, you know they're different resources.
You can't do that with real-world resources: who would assign the URIs? Having someone assign URIs to people such that one person wouldn't be identified by more than one URI, for example, would cause unacceptable centralization. So we just have to accept the fact that when Alice talks about person 1 and Bob talks about person 2, we don't automatically know that person 1 and person 2 are not the same person.
But with virtual resources, you can make assigning a unique URI part of creating the resource, and in that case, it is perfectly clear who is responsible for assigning the uniue URI, and there is no centralization. Atom's
I expect that I'll talk more about the three kinds of resources later, e.g. when I get to talk about versioning and Fencore.
By mathematical object, I mean something which exists because you define it -- natural numbers, lists, records, B-trees, whatnot. With mathematical objects, if you have the original definition, you can in theory conclude everything about them that can possibly be known about them[*], although it may be hard to find out in practice (such as whether there are infinitely many twin primes).
[*] Due to Goedel's incompleteness theorem, that's in fact not quite true depending on how you define things, but let's not go there.
By real-world resource, I mean something like a person, a country, or a programming language, where we can assume some general agreement about what it is and what is true about it. I.e., something which exists already before we start talking about it, and which we only refer to.
Contrast this to virtual resource, by which I mean something like a website, a folder, or an e-mail address, which exists only because somebody creates it in a computer.
Thinking about virtual resources as a separate category has a couple of important practical advantages. The most important one is that you can assign a unique URI to them, unique meaning that every resource only has one URI, so if two resources have different URIs, you know they're different resources.
You can't do that with real-world resources: who would assign the URIs? Having someone assign URIs to people such that one person wouldn't be identified by more than one URI, for example, would cause unacceptable centralization. So we just have to accept the fact that when Alice talks about person 1 and Bob talks about person 2, we don't automatically know that person 1 and person 2 are not the same person.
But with virtual resources, you can make assigning a unique URI part of creating the resource, and in that case, it is perfectly clear who is responsible for assigning the uniue URI, and there is no centralization. Atom's
<id> element is based on this.I expect that I'll talk more about the three kinds of resources later, e.g. when I get to talk about versioning and Fencore.

0 Comments:
Post a Comment
<< Home