- From: Gregg Reynolds <dev@mobileink.com>
- Date: Wed, 18 Sep 2013 03:29:18 -0500
- To: Sandro Hawke <sandro@w3.org>
- Cc: Jeremy J Carroll <jjc@syapse.com>, Pat Hayes <phayes@ihmc.us>, www-archive <www-archive@w3.org>
- Message-ID: <CAO40Mi=-cJDU_QrzECZKm8hL88gQ_cU89+hEoprSqHA2P9KvcA@mail.gmail.com>
On Tue, Sep 17, 2013 at 4:51 PM, Sandro Hawke <sandro@w3.org> wrote: > Following that epiphany I had at the end of my last email, here's what I'd > love to see everyone agree on, more or less: > > == Named Graphs > > An "RDF Named Graph" is similar to an "RDF Graph", but different in one > important way. This just does not work. What you're effectively trying to do is redefine the English language. We all know what a named X is - it's an X that happens to bear a name. Compare: A named function is similar to a function, but different in one important way. Nobody would agree to this. 1. λx.x+1 2. f(x) = x+1 Without question, f names the same graph named by the lambda expression in 1. 1. {1,2,3} 2. S = {1,2,3} Again, S names the same set named by the extension expression in 1. The point, which is easy to overlook, is that RDF graph expressions - the stuff we "write down" - are just like lambda expressions or set extension expressions. They are names. Coining additional names (synonyms) via equations does not change the thing named. ... > > Like an RDF Graph, an RDF Named Graph contains zero or more RDF Triples. > Unlike an RDF Graph, an RDF Named Graph has an identity distinct from > those triples. That is, two Named Graphs remain distinct and > distinguishable entities even if they happen to contain exactly the same > RDF Triples. > The suggestion that a pair of mathematical entities with exactly the same extension are not equal doesn't help - it reads like an attempt to redefine mathematics. I think I see what you're trying to accomplish, but in my opinion this is not a good way to do it. There is no need to invent a new blob of metaphysics called an "RDF Named Graph" in order to accomodate the way named graphs are handled in the wild. You just need clear language - see below. > The term "Named Graph" has historically caused some confusion, as some > people have read the phrase to mean "an RDF Graph which happens to have a > name". This reading is not correct, since RDF Named Graphs are not RDF > Graphs at all. At this point you have completely lost this reader, and I suspect virtually every other reader who is not intimately involved in the discussions of the very, very small group of technical experts trying to figure out what Named Graphs are. > > Names Graphs also provide a useful semantics for RDF Datasets. Some RDF > Datasets, hereafter NG Datasets, have this intended meaning: each (_name_, > _graph_) pair is a statement that _name_ is a Named Graph which contains > exactly the triples in _graph_. Since _name_ is an IRI, this would mean that a Named Graph is (I think you mean "denotes"?) an IRI value (in "IR"), unless you're abandoning RDF Semantics. Above you said that an RDF Named Graph "contains zero or more RDF Triples". But the values in IR are logical individuals with no substantive properties. In particular, they are not RDF Triples. So at this point we do not know what "RDF Named Graph" is supposed to mean. ... The greatest differences between RDF Graphs and RDF Named Graphs appear > when one considers the possibility of them changing over time. It is > nonsensical to consider an RDF Graph changing over time, just like it makes > no sense to talk about the value of some integer, say seven, changing over > time. In contrast, it makes perfect sense to consider Named Graphs > changing: at one point in time the identifiable thing that is a certain > Named Graph contains some triples and at another point in time it might > contain different triples. To me, at least, it makes no sense to consider "RDF Named Graphs" as any more mutable thatn "RDF Graphs". They're either mathematical objects or not; if they are - and they must be - they are immutable. To me the problem with Named Graphs is primarily a matter of getting clear on terminology. I suppose we're stuck with "Named Graph", but there is no requirement that "name" be construed as a synonym for "denote". There are lots of ways of referring to things that can loosely be considered as kinds of naming; we can think of these in terms of "modes of referring" or the like. In particular, there is one mode of referring that seems to capture more or less perfectly what is wanted with Named Graphs: metonymy. It already accounts for the way RDF properties and classes are construed by RDF Semantics; we can just do the same thing for graphs. A refresher for those whose rhetorical vocab is rusty: metonymy is when you refer to something indirectly by referring to something related to it, such as using a part to refer to a whole or vice-versa. Not to be confused with metaphor, which is based on similarity. An example is "The White House announced that blah blah blah." Here "the White House" denotes a building, but is used to refer to the administration headquartered in the building: "White House" -> building => administration. This is exactly what happens with RDF properties. If :p is a property IRI, then it denotes an IR value, which is not its extension. That IR value is mapped to its extension. Schematically: :p -> [:p] => [[:p]], where [[:p]] is the extension (a binary relation) of :p This means that it is unacceptable to say that :p names its extension by denotation, but entirely reasonable to say that it refers to its extension by metonymy, since what it does denote is related to that extension. Similar considerations apply to RDF class IRIs. The same language can be used to accomodate the various ways that "graph IRIs" are used, without violating any conventions of either English or mathematics. Schematically: :g -> [:g] => [[:g]], where [[:g]] is the set of triples that is refered to metonymously by :g In particular, it is reasonable to treat "named" as meaning "named by metonymy, not denotation", just as we treat "the White House" as a name for the administration. You might want to go so far as to declare that a graph IRI is a metonym for the graph it refers to. In fact you'd probably get the most clarity if you dropped "name" as a verb from your explanatory text in favor of "refer by denotation" and "refer by metonymy". Or use "designate", "label", etc. Also, there is no need to claim that named graphs are or may be distinct even if they "contain" the same triples. If two distinct IRIs refer by metonymy to the same set of triples, then they refer (in that mode) to the same graph. But that has no bearing on their denotational referencing, which can be different. Also on this reading there is no justification for treating "RDF Named Graphs" as a distinct semantic or ontological category. Named graphs are just graphs that have been referred to by names, that's all. Unfortunately, this only serves to highlight the real problem, which is how to decide which referent - the denotational or the metonymical - is intended when you say something about the graph IRI. Compare: 1. The White House announced that blah blah blah. 2. The White House has 132 rooms. Easy for a human to disambiguate, but if you want to state facts about a graph IRI :g, you need some means of indicating which reference you mean. One possibility would be to define something like rdf:graphExtension that would allow us to designate an IRI that refers to the graph by denotation. For example: GRAPH :g { ... } :g rdf:graphExtension :h. :h :definedBy :AcmeCorp. rdf:graphExtension would amount to the composition of the functions in the schema above: => . -> : first follow -> from :g to get [:g], then follow => to get [[:g]], which is the graph, and assign that to :h. Then if you had something like rdfs:Graph, :h rdf:type rdfs:Graph would hold. (Or you could just define rdf:extension, which would then work for properties and classes as well.) The other use case, where the graph IRI is treated as a "special" parameter, falls out naturally from [:g] => [[:g]]. In a previous message Pat gave the example of "graph names which refer to times or dates, meaning that the assertions in the graph are indexed to that time." It seems to me that if it is legitimate to claim that :a :p :b "means" that :p relates :a to :b, we ought to be able to claim that GRAPH :g {...} means that :g "applies to" or "indexes" (or something) the graph it refers to, and thus its contents. This would always be the case, by virtue of the semantics. HTH, Gregg
Received on Wednesday, 18 September 2013 08:29:47 UTC