- From: dehora <bill@dehora.fsnet.co.uk>
- Date: Wed, 16 May 2001 08:02:47 +0100
- To: "Jonathan Borden" <jborden@mediaone.net>, "Graham Klyne" <GK@Ninebynine.org>, "pat hayes" <phayes@ai.uwf.edu>
- Cc: <www-rdf-logic@w3.org>
: pat hayes: : > : > PS. There seems to be an implicit assumption in some of the RDF : > literature that the only two things to do with a sentence (triple) : > are to either assert it or to reify it, so any use that doesnt : > involve asserting a triple must reify it. This is just wrong. Logical : > notation is full of examples of sentences being used but not being : > asserted. The simplest is probably negation: when one writes (not P), : > P is being used (not mentioned or reified), but it is not being : > asserted: on the contrary, in fact. Now, it might be that RDF is : > incapable of making this distinction. So much the worse for RDF, if : > so. : : Jonathan Borden: : *light goes off in head* : : you are absolutely correct. : : note that my use of statements in _fragment identifiers_ is _syntactically : distinct_ from statements in XML syntax. : : The RDF 'model' (in the current RDF usage of the term 'model') is a set of : triples. No partition is provided that distinguishes triples that are : asserted vs. merely being used. Current RDF 'reification' is a technique : that allows a statement to be represented without being directly contained : (hence asserted) in the model. : : by introduction of a distinct syntax, one that allows the formation of a : _URI reference_ that directly represents, quotes if you will, a triple, such : a triple is partitioned from the triples that are asserted (hence my thought : is that this mechanism is compatible with the current RDF abstract syntax) : : What you are suggesting appears to require reworking of the RDF model. Any : suggestions on how to best do this? : Maybe no change is needed. I observe real disconnect on the list between reification in RDF and reification as understood in logic and KR circles, very like the RDF use of the term Model, as was beaten to death last year and caused some hostility. I'd like to put up a straw man hack for mentioning in RDF. Then I'd like to consider the implications of moving between use and mention, when M&S reification only is used as someone who's had a crack at implementing query for RDF stores and whose conclusion is that handling RDF reification is at least difficult. I think that these two are not at all the same: 1: RDF reification is a technique to make statements about statements. 2: KR reification is a technique for objectifying a statement. I think both can be done in RDF. KR reification can be approximated if an RDF serialization is embedded in a string literal. Assume we have a Noddy linear form for RDF that we can use as an object language: s:X, p:Y, o:Z. where s: p: o: are markers for subject property object and on their right is a URI or a literal, '.' is just a terminator and ',' is a separator (we could easily use brackets/arrows or some such, doesn't really matter). String literals are inside double quotes, nesting these quotes is ok. For brevity, let's pretend that anything which isn't double quoted to the right of s: p: o: is a URI as per the M&S etc (many URIs can be an eyesore). To KR reify this statement: s:sky, p:is o:blue I'd suggest simply doing this: "s:sky, p:is o:blue" Since RDF literals are just strings, they'll be mentioned not used: s:elvis, p:says, o:"s:sky, p:is o:blue". You can do this with the XML form as well (with some escaping) and nothing stops you from writing a machine that will try to parse the literal and lift it into a statement: the idea is that you quote an object language. One way to put opaque quoting and statement mention into RDF might be to specialize literals, best done by making literals types of RDF resource...? Btw, a number of implementations do this. Or maybe specialize some anonymous URIs to be opaque quotes, since anonymous URIs are often used as reified statements... RDF reification is just as per the M&S. No change. Given an RDF statement: s:sky, p:is, o:blue. and an extension to the Noddy form thus: *r is the "reified statement" as per the M&S. Then the RDF reification of the statement given is: s:*r, p:type, o:statement. s:*r, p:s:, o:sky. s:*r, p:p:, o:is. s:*r, p:o:, o:blue. p:s: just means that the property is set to s: (subject) and so forth [not clearly distinguishing between the reified statement and the reification confused me for the longest time, I'm just being careful...]. What you get from the straw man: This can be a use: s:elvis, p:says, o:*r. s:*r, p:type, o:statement. s:*r, p:s:, o:sky. s:*r, p:p:, o:is. s:*r, p:o:, o:blue. This can be a mention: s:elvis, p:says, o:"s:sky, p:is o:blue". Given that, if I was to type "?x says "the sky is blue"" into an RDF query engine that used the straw man I would expect it to break it down as a mention: -?x is a variable that needs to be bound for my results. -says is a property that must be matched. -"the sky is blue" is a string literal that needs to be matched. Is that cheating? I don't think so: "the sky is blue" looks awfully like a mention to me. If I was to type s:?x, p:says, o:*r[s:sky, p:is, o:?y]., I would expect it to run a pattern match. Normally, simple query engines do simple pattern matching. Good examples of this are how the Linda derivative javaspaces works and section 4.4 in the MIT wizard book. Jena and Sirpac seem to work a bit like javaspaces from the outside. What you have to put up without it: Without a different form for KR reification, query engines will have to know how to treat the reification: s:*r, p:type, o:statement. s:*r, p:s:, o:sky. s:*r, p:p:, o:is. s:*r, p:o:, o:blue. as opaque for quote like use and modal operators, possibly by looking up the property's properties or some other extra logical heuristic. Lots of times, machines will set the reified statement to be an anonymous URI, which is not something that can be syntax matched like a literal. So it will need to look into the reification to perform a match irregardless of use or mention. If you don't make a distinction between RDF and KR reification, you seem to need a nifty query engine that can move between sense and reference, and a nifty statement maintenance engine to keep an RDF store coherent. I think Pat Hayes' concern is that it's quite difficult to write code to do this kind of nifty and keep the RDF store and its answers sensible and maybe it's impossible to do this using first order logic. I don't think it's some kind of rarified philosophical hand wringing as has been implied. This concern along with the limitations of first order logic substitution for modal operators are well understood in the fields of logic, KR and software agents and I genuinely expect these to become a mainstream issue in computing in the next decade or so as we build out increasingly automated and autonomous software on our networks and expect that software not to behave coherently. There's nothing wrong with flyweight pattern matching or inference for RDF so long as the engine builders and users know the limitations of what they can sensibly ask of such a system. regards, Bill - ---- Bill de hOra : InterX : bdehora@interx.com
Received on Wednesday, 16 May 2001 03:03:37 UTC