- From: Tim Berners-Lee <timbl@w3.org>
- Date: Tue, 18 Dec 2001 21:42:04 -0500
- To: "Sandro Hawke" <sandro@w3.org>
- Cc: <www-rdf-logic@w3.org>
----- Original Message ----- From: "Sandro Hawke" <sandro@w3.org> To: <timbl@w3.org> Cc: <www-rdf-logic@w3.org> Sent: Saturday, December 15, 2001 4:55 PM Subject: Encoding RDF graphs and/or n3 formulas in triples (Reification) > > When I was writing my first n3 parser [1], I had it turn each { ... } > structure (which you then called a Context and now call a Formula) > into a Set of rdf:Statement objects, using an ontology for sets I made > up. For me, context is the relationship between the 4-statement and the formula. Formula is the class, range of context. myQuad n3:context :myFormula. > I no longer think that's quite the right modeling. Your current logic > ontology [2] suggests the right thing is to use your log:conjunction > predicate. You say its domain is a list of Formulas. (You call them > "formulae," but I can't decide whether to say formulee or formuliy so > I say formuluz.) If rdf:Statement is a subclass of log:Formula > (as I think it ought to be), then we can simply say > { <a> <b> <c>. } (I was just taught "formulae", (-ee). I don't regard it as cannonical as I don't think my teachers were around when it was pronounced, so I can imagine there are different schools of thought. I am not fuzzy about plural or the pronounciation as life is too short and there are two many low hanging fruit.) I agree that Statement can be subclas of Formula, the subclass of formulae with only one statement, ie matching { :p :s :o } for some p,s,o. > is an rdf:Statement with the usual rdf:subject, etc, information, > and > { <a> <b> <c>. <d> <e> <f>. } > is the log:conjunction of a list of the two rdf:Statements given > there. > > Is that what you had in mind? Does that seem right? In other words, { <a> <b> <c>. <d> <e> <f>.} log:conjunction ( { <a> <b> <c>.} {<d> <e> <f>} ). Yes. > The one odd thing I see is that log:conjunction doesn't assert its > resulting formula, unlike log:implies. For them to match in style, it > should be either > # make a statement of implication, which is an unasserted object > [ log:if { ... } > log:then { ... } . ] > or > # assert all the statements in a list > ( :stmt1, :stmt2 ) a log:trueConjunction. You are getting at the way cwm processes stuff - that it doesn't infer from builtins in the ground facts. I could change what sort of inference the machine does. Doesn't change the meaning, of course. I chose so far to only implement implies, because it is the building block with which one can build so much - you can build the behaviour of other things by writing axioms for them in terms of implies. [[[ For example, the axiom { :l string:concatenation :y, :z} log:implies { :y = :z }. which would, on data ("John" "Doe") string:concatenation :myName. yield under, cwm --think, "JohnDoe" = :myName. and the reverse. ( i would test it but I'm on the wrong machine ...) Which is what you would expect. ]]] > It's kind of a wash which way you go. "x={...}" lets you turn > assertions back into an unasserted formula, and "x a log:Truth" lets > you assert an unasserted formula. It just might be nice to have all > the operators-on-formulas behave one way or the other. Well, at the moment is is sort of mimimal in that it uses log:Truth and log:implies only, and anything else you have to bootstrap from log:implies. I can envisage the --think=nbtieBgLyfD options syndrome in which different sorts fo inference are turned on and off. Not evil, but not to be done lightly either. > (This might > help clear up some confusions [in my mind, at least] about log:forAll > and log:forSome, too.) Oh, those? They aren't real properties. They link a symbol and the scope in which is quantified. They don't work with the = axiom {:s :p :o. :p = :q} log:implies {:s :q :o}. I intend to make them a special syntax, and make them invisible to queries. But for the moment they work (when explicilt excluded from that axiom {:s :p :o. :x = :y; log:notEqualTo log:forSome, log:forAll} log:implies {:s :q :o}. They are excluded automatically if you have a rule that that you never write forSome = :x and you never use the IDs you have used for variabels foranything else) > -- sandro > > [1] http://www.w3.org/2001/03/flaten3/ > [2] http://www.w3.org/2000/10/swap/log > Tim
Received on Tuesday, 18 December 2001 21:40:15 UTC