Hi Eric,
I'm copying Pat Hayes, Sandro Hawke and Gregg Reynolds also, because
we've been discussing this topic already here:
http://tinyurl.com/oa2vo9k
On 10/03/2013 01:38 AM, Eric Prud'hommeaux wrote:
* David Booth <[email protected]> [2013-10-02 01:05-0400]
In https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-concepts/index.html
I see this statement:
"IRIs have global scope: Two different appearances of an IRI
denote the same resource."
This is wrong. If it were true then there could never be a URI Collision
http://www.w3.org/TR/webarch/#URI-collision
and there would be no point in the AWWW discussing it or admonishing
against it.
Seeking clarification, are you saying that Concepts should
permit/encourage the use of a single IRI to mean multiple things?
The AWWW document that you cited takes the opposite stance:
[[
By design, a URI identifies one resource. Using the same URI to
directly identify different resources produces a URI collision.
Collision often imposes a cost in communication due to the effort
required to resolve ambiguities.
]] — http://www.w3.org/TR/webarch/#URI-collision
No. Use of the same URI to mean multiple things certainly should be
discouraged. But it is a reality and a trade-off, and we should
acknowledge and deal with that reality and trade-off, rather than
pretending that it doesn't happen and attempting to base the
specifications on an obviously false assumption.
This is not the same as saying: "Non-conforming XML documents exist,
therefore the XML specifications should acknowledge and deal with them".
It is perfectly possible to write conforming XML documents, but it is
*not* possible to avoid URI collision, because ambiguity is inescapable
and ambiguity leads to URI collision, as the example below of G1 and G2
illustrates.
An IRI can and often does denote different resources in different
*interpretations*. And this, in practice, means that an IRI often
denotes different resources in different *graphs*, because any graph
has a set of satisfying interpretations, and different graphs may
have different sets of satisfying interpretations. For example,
suppose graphs g1 and g2 have sets of satisfying interpretations s1
and s2, respectively, and those sets may be disjoint. Then
colloquially (and technically) we can say that an IRI may map to one
resource in g1 (i.e., in some interpretation in s1) and a different
resource in g2 (i.e., in some interpretation in s2).
This requires thinking about graphs in terms of sets of satisfying
interpretations -- an important and valid perspective -- rather than
assuming that one looks at them only through the lens of a single
interpretation.
As a simple example of how a URI can denote different things in
different graphs, suppose Alice sends this graph G1 from her smart
phone to her home computer to turn *on* her porch light (assuming
the usual URI prefix definitions):
G1: { @prefix db: <http://dbooth.org/>
ex:alicePorchLight rdf:value db:x .
db:x owl:sameAs ex:on .
ex:on owl:differentFrom ex:off . }
and her light turns on.
In contrast, Bob sends this graph G2 from his smart phone to his
home computer to turn *off* his oven:
G2: { ex:bobOven rdf:value db:x .
db:x owl:sameAs ex:off .
ex:on owl:differentFrom ex:off . }
and his oven turns off.
Why is <http://dbooth.org/x> used as a variable for the on/off state
of both the porch light and the oven?
Because Alice and Bob acted independently, without knowledge of each
other. Alice and Bob each interpreted the meaning of the term db:x
differently, each one perfectly consistent according to his/her
knowledge at the time, and each one completely consistent with the
term's definition.
(I have not shown the definition of db:x, but it does not really matter,
because we already know that virtually any satisfiable definition will
admit multiple interpretations. If you want, for simplicity you could
assume that the definition is the empty graph, which admits any
interpretation.)
It is perfectly reasonable and natural to ask "What resource does
db:x denote in G1?", and it is reasonable and natural to ask the
same of G2. The RDF Semantics (along with OWL) tells us that in G1
db:x denotes whatever ex:on denotes, whereas in G2 db:x denotes
whatever ex:off denotes. That is useful! Furthermore, the
semantics tells us that if we merge those graphs then we have a
contradiction -- there are no satisfying interpretations for the
merge -- and that is useful to know also, because it means that
Alice and Bob's graphs **cannot be used together**.
Is this contextual interpretation limited to terms in the subject or
object position? Am I licensed, for instance, to presume that the
rdf:type predicate is used to assert the type in both
G1: { ex:alicePorchLight rdf:type ex:lightSwitch }
and
G1: { ex:bobOven rdf:type ex:ovenSwitch }
?
I don't know what you mean by "contextual interpretation", because I am
not talking about context-sensitivity in the usual sense. I am talking
about following the RDF Semantics rules for determining the satisfying
interpretations of a graph, i.e., the set of interpretations that
satisfy the graph, as defined in the RDF Semantics:
http://www.w3.org/TR/2013/WD-rdf11-mt-20130723/#dfn-satisfies
It is not limited to terms in the subject or object position.
Furthermore, the RDF Semantics notion of an interpretation maps well
to real life applications: in effect, an application chooses a
particular interpretation when it processes RDF data. This is a
very useful aspect of the model theoretic style of the semantics.
In this example, Alice's home control app interpreted db:x to denote
"on" and Bob's home control app interpreted it to denote "off". And
*both* were correct (in isolation): they both did The Right Thing.
In short, I think the above statement needs to be qualified somehow,
such as:
"IRIs are *intended* to have global scope: Two different
appearances of an IRI are *intended* to denote the same resource."
(However, the RDF Semantics explains how an IRI may denote
different resources in different interpretations.)
Do we have another class of documents where IRIs really do have global
scope?
This has nothing to do with different classes of documents.
In order to make use of the data in docs that have local scope,
is there some shared identifier for the scope, or are these docs
really islands unto themselves?
I don't know of any shared identifier for the scope. But this is not
about scope in the usual sense of the term "scope" anyway.
This is about the interaction between graphs and interpretations in the
RDF Semantics. (I am talking here about interpretations in the RDF
Semantics or model theory sense of the term -- not the generic English
sense.)
Any graph has a set of satisfying interpretations according to the
standard semantic rules defined in the RDF, OWL, etc. specifications.
Different interpretations may map the same IRI to different resources.
This is just RDF Semantics 101 (or model theory 101): there is nothing
new or tricky about this.
When people write RDF graphs, they make assumptions about what each IRI
denotes. In essence, each author has a set of interpretations in mind
when he/she uses an IRI in a graph. Each author's graph may be
consistent with that author's set of assumed interpretations (i.e., the
graph may be true under those interpretations) and with the definitions
of all terms used in the graph, but different authors may have different
interpretations in mind, even when using the same IRI. Those graphs may
work fine as long as they are kept separate. But if one combines two or
more of those graphs, a contradiction may be discovered, because the
author of one graph took db:x to denote ex:on (whatever that is) and
another author took it to denote ex:off .
I don't know if I have answered the questions that you meant. If not,
please clarify and I'll try again.
Thanks,
David