- From: Pat Hayes <phayes@ihmc.us>
- Date: Fri, 5 Mar 2010 13:13:06 -0600
- To: Story Henry <henry.story@bblfish.net>
- Cc: Jeremy Carroll <jeremy@topquadrant.com>, Dan Connolly <connolly@w3.org>, Semantic Web <semantic-web@w3.org>, foaf-protocols@lists.foaf-project.org
Henry, congratulations. I think you are the fastest and most thorough reader that the RDF semantics document has ever had :-) But let me ask you. Suppose, just for arguments sake, that RDF allowed literals in the subject position. Then one could write ex:o ex:dollarValue _:v . "BA:BA" cert:hex _:v . and cert:hex would be the actual L2V mapping of the datatype, rather than its inverse. If this were legal RDF, would you have any objection to doing it that way? (Because, I am sure that any revision of RDF will allow literals as subjects.) Are there other reasons which motivate your choice of the 'inverse' orientation for the second triple? Pat > ex:o ex:dollarValue _:v . > _:v cert:hex "BA:BA" . > ex:o ex:dollarValue _:v . On Mar 5, 2010, at 11:55 AM, Story Henry wrote: > I have read most of the "RDF semantics" document carefully now, and > I think I have enough detailed understanding to try to recapitulate > the discussion, and explain in detail my reasons. > > > STARTING WITH AN EXAMPLE: cert:hex > =================================== > > 1. proposed definition of cert:hex > ---------------------------------- > > I can defined cert:hex as follows (though the detailed wording could > be improved) > > @prefix : <http://www.w3.org/ns/auth/cert#> . > @prefix owl: <http://www.w3.org/2002/07/owl#> . > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> . > > > :hex a owl:DatatypeProperty, rdfs:Datatype, > owl:InverseFunctionalProperty; > rdfs:label "hexadecimal"@en; > rdfs:comment """ > An encoding of a positive integer (from 0 to infinity) as a > hexadecimal string that makes it easy to read and/or fun to present > on the web. > The purpose of this way of representing hexadecimals is to enable > users to copy and paste hexadecimal notations as shown by most > browsers, keychains or tools such as opensso, into their rdf > representation of choice. There are a wide variety of ways in which > such strings can be presented. One finds the following > > e1 dc d5 e1 00 8f 21 5e d5 cc 7c 7e c4 9c ad 86 > 64 aa dc 29 f2 8d d9 56 7f 31 b6 bd 1b fd b8 ee > 51 0d 3c 84 59 a2 45 d2 13 59 2a 14 82 1a 0f 6e > d3 d1 4a 2d a9 4c 7e db 90 07 fc f1 8d a3 8e 38 > 25 21 0a 32 c1 95 31 3c ba 56 cc 17 45 87 e1 eb > fd 9f 0f 82 16 67 9f 67 fa 91 e4 0d 55 4e 52 c0 > 66 64 2f fe 98 8f ae f8 96 21 5e ea 38 9e 5c 4f > 27 e2 48 ca ca f2 90 23 ad 99 4b cc 38 32 6d bf > > Or the same as the above, with ':' instead of spaces. We can't > guarantee that these are the only ways such tools will present > hexadecimals, so we are very lax. > The letters can be uppercase or lowercase, or mixed. Some strings > may start with initial 00's, and can be stripped in this notation as > they often are. Doing this could in complement of 2 notation could > turn a positive number into a negative one, if the first character > after applying the transformation described below, then happens to > be one of the set {'8', '9', 'a', 'A', 'b', 'B', 'c', 'C', 'd', > 'D', 'e', 'E', 'f', 'F'} . But as we interpret this string as a > hexadecimal number leading 00s are not important (Complement of 2 > notation and hexadecimal overlap for positive numbers) > > In order to make this fun, we allow any unicode characters in the > string. > > A parser should > 1. remove all non hexadecimal characters > 2. treat the resulting as a hexadecimal representation of a number > This will allow people to make an ascii - better yet a UTF-8 - > picture of their > public key when publishing it on the web. > """@en; > rdfs:seeAlso <http://en.wikipedia.org/wiki/Hexadecimal>; > rdfs:domain xsd:nonNegativeInteger; > rdfs:range xsd:string; > vs:term_status "unstable" . > > > 2. Example interpretation > ------------------------- > > > So if I take the triple > > ex:o ex:dollarValue _:v . > _:v cert:hex "BA:BA" . > > which can be written as > > ex:o ex:dollarValue "BA:BA"^cert:hex . > > This is equivalent to the relation to the literal > > ex:o ex:dollarValue "BA:BA"^^cert:hex . > > > so here in addition to the RDF, RDFS and OWL vocabularies we have > > V = { "http://www.w3.org/ns/auth/cert#hex", "ex:o", "0", ...,"AB:AB", > "BA:BA"^^cert:hex, ex:dollarValue, "_:v" } > > and an Interpretation I > > IR = { cert:hex, ex:o } U xsd:nonNegativeIntegers U IR(rdf) U > IR(rdfs) U IR(owl) > > IP = { cert:hex, ex:dollarValue } U IP(rdf) U IP(rdfs) U IP(owl) > > IEXT : { cert:hex => { <0 "0" > <1 "1"> .... > <47802 "AB:AB"> <47802 "AB AB"> <47802 "AB|AB"> > ...} > ex:dollarValue => { <ex:o 47802> } > U IEXT(rdf) U IEXT(rdfs) U IEXT(owl) > > IS : { "ex:o" => <ex:o> > "http://www.w3.org/ns/auth/cert#hex" => cert:hex > } U IS(rdf) U IS(rdfs) U IS(owl) > > IL : { "0"^^xsd:hex => 0 > "1"^^xsd:hex => 1 > "2"^^xsd:hex => 2 > ... > "AB:AB"^^cert:hex => 47802 > "AB AB"^^cert:hex => 47802 > ... } U IL(rdf) U IL(rdfs) U IL(owl) > > LV = LV(rdf) > > Using this interpretation, which is very general, we can see that > the following graph makes both of them true > > > <cert_hex.jpg> > > > [ Here IEXT' is the relation from an object directly to an instance > relation, > which is easier to draw, than drawing the line to the set of ordered > pairs > The same with L2V' . ] > > 3. Proving Satisfaction > ------------------------ > > Take the graph G composed of the triple > > ex:o ex:dollarValue "BA:BA"^^cert:hex . > > That is a ground triple, so it is true if as specified in section 1.4 > http://www.w3.org/TR/rdf-mt/#gddenot > > + "ex:o", "ex:dollarValue", "BA:BA"^^cert:hex are in V > + I(ex:dollarValue) is in IP > + <I("ex:o") I("BA:BA"^^cert:hex)> > = < ex:o, IL("BA:BA"^^cert:hex)> > = < ex:o, 47802 > > which is indeed (amazing!) in IEXT(I("ex:dollarValue")) > > > Similarly if we now take the graph G2 composed of the two triples > > G2 = { > t1 = { ex:o ex:dollarValue _:v .} > t2 = { _:v cert:hex "BA:BA" . } > } > > I(G2) = true if [I+A](G2) for some mapping from blank(G2) to IR. > > So we will cleverly select a mapping A such that > > A("_:v") = 47802 > > And now the above graph is true if there is no triple T in G2 such > that I(T) = false . > > Luckily for the readers of this there are only two triples, so we > proceed one by one > > t1= { ex:o ex:dollarValue _:v .} > > + "ex:o" "ex:dollarValue" "_:v" are in V > + I(ex:dollarValue) is in IP -- as above > + <I+A("ex:o") I+A("_:v")> > = <ex:o A("_:v")> > = <ex:o 47802> > which is indeed (amazing!) in IEXT(I+A("ex:dollarValue")) = > IEXT(I("ex:dollarValue")) > > t2 = { _:v cert:hex "BA:BA" . } > > + "_:v" "http://www.w3.org/ns/auth/cert#hex" "BA:BA" are in V > + I(cert:hex) is in IP > + <I+A("_:v") I+A("BA:BA")> > = <A("_:v") I("BA:BA")> > = <47802 "BA:BA"> > which is in IEXT(I+A("cert:hex")) > > So both not of those are false so the graph G2 is true. > > > cert:hex Datatype GENERALISATION > ================================ > > Let's look at the cert:hex datatype in more detail following section 5 > http://www.w3.org/TR/rdf-mt/#dtype_interp > > [[ > Formally, a datatype d is defined by three items: > > 1. a non-empty set of character strings called the lexical space of d; > 2. a non-empty set called the value space of d; > 3. a mapping from the lexical space of d to the value space of d, > called the lexical-to-value mapping of d. > > The lexical-to-value mapping of a datatype d is written as L2V(d). > ]] > > Take the conditions one by one. > In our case > 1. is the set of all unicode strings > 2. the value space are all the positive integers including 0 > 3. and the lexical to value maping is explained in the definition of > cert:hex > > L2V(cert:hex)("AB AB") = 47802 > L2V(cert:hex)("AB:AB") = 47802 > L2V(cert:hex)(" 0") = 0 > L2V(cert:hex)("♡AB♥AB♡") = 47802 > > now L2V is functional relation. So it has an inverse relation, that > will be inverse functional. That is what IEXT(cert:hex) is. So let > us define the INV function that maps a set of ordered pairs to its > inverse, namely for every ordered pair <xxx yyy> in the origin set > there will correspond one to one an ordered pair <yyy xxx> in the > resulting set. > > It is clear that the relation > > INV(L2V(cert:hex)) = IEXT(cert:hex) > > and vice versa. > > As this can be generalised to all datatypes, I suggest that in the > next revision of the RDF Semantics this is added. > > > PRAGMATIC REASONS FOR DOING SO > ============================== > > > Now what is the value of doing so? > > In a previous mail to this thread Pat Hayes argued very convincingly > that the reason one URI refers in different ways to different > things, is to reduce the need to create many URIs for each different > thing. > > http://lists.w3.org/Archives/Public/semantic-web/2010Feb/0193.html > > So this is exactly the same reason why datatypes should be > associated not just as they are now > - with the set of objects when used in object position > - with the L2V function when in the position of a datatype > But also > - with the INV(L2V(ddd)) when in a predicate position > > Helping show how predicates and datatypes are related makes it much > easier in my opinion to understand datatypes. There is nothing that > magical about them. > > It is very useful to have both pragmatically. So for example if as > we have now we only had relations then we would have to write > > <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> > <body> > <ul xmlns:cert="http://www.w3.org/ns/auth/cert#" > xmlns:rsa="http://www.w3.org/ns/auth/rsa#" > > <li rel="rsa:modulus"> > <pre property="cert:hex"> > 9dcfd6a5394da9312c703e02a25dc3508262d9310be76d43ddf75d3025a9 > 739b989b2e50f2a80961fe41e6fb26fb7ceedae0fe0e0c7c1921f20a3a63 > 45fe74e9</pre> > </li> > <li rel="cert:identity" href="#me">My certificate</li> > </ul> > </body> > </html> > > but because we have datatypes we can also write much more succintly > > <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> > <body> > <ul xmlns:cert="http://www.w3.org/ns/auth/cert#" > xmlns:rsa="http://www.w3.org/ns/auth/rsa#" > typeof="rsa:RSAPublicKey" > > <li property="rsa:modulus" datatype="cert:hex"> > 9dcfd6a5394da9312c703e02a25dc3508262d9310be76d43ddf75d3025a9 > 739b989b2e50f2a80961fe41e6fb26fb7ceedae0fe0e0c7c1921f20a3a63 > 45fe74e9</li> > <li rel="cert:identity" href="#me">My certificate</li> > </ul> > </body> > </html> > > The second way of writing furthermore helps remove the danger of the > literal > getting a language tag inherited from further up. > > FURTHER THOUGHT > =============== > > One could associate every language tag, with a URL, and following > the same procedure show > how a language tag is a relation, as well as whatever it is right now. > > > Sorry to go into such detail. > > The RDF Semantics paper is really extreemly intersting merge of > logic and graph theory. > > > Henry > > > On 22 Feb 2010, at 22:42, Jeremy Carroll wrote: > >> Pat Hayes wrote: >>> Dan is absolutely correct. See below. >>> >>>> >>>> I don't think so. I'm pretty sure the 2004 specs are silent on the >>>> use of datatypes as properties. Both directions are consistent >>>> semantic extensions. >>> >>> Yes, you are right. So this semantic extension is perfectly legal, >>> contrary to what I was claiming. <Sound of crows being eaten /> >>> >>> Sigh. However, it seems utterly crazy to me to use the same URI to >>> denote both a mapping (inside a typed literal) and its inverse >>> mapping (as a property). If I had even thought that anyone would >>> want do that, I would have urged that we made it illegal back when >>> we were writing the specs. The only possible reason for it that I >>> can see would be to set out to make things deliberately confusing. >> >> I find Henry's examples fairly compelling, and wouldn't want them >> to be illegal. Not something I would do myself, but certainly >> plausible. >> >> Jeremy >> >> > ------------------------------------------------------------ IHMC (850)434 8903 or (650)494 3973 40 South Alcaniz St. (850)202 4416 office Pensacola (850)202 4440 fax FL 32502 (850)291 0667 mobile phayesAT-SIGNihmc.us http://www.ihmc.us/users/phayes
Received on Friday, 5 March 2010 19:13:43 UTC