- From: Bijan Parsia <bparsia@isr.umd.edu>
- Date: Wed, 5 Jan 2005 15:19:00 +0900
- To: jos.deroo@agfa.com
- Cc: www-rdf-logic@w3.org
On Jan 5, 2005, at 10:57 AM, jos.deroo@agfa.com wrote: > waw Bijan! Yes, I know. The typos are a bit much. I was a little sleepy when I wrote it. I shall strive to do better in the future. > I haven't experienced most of your issues, both as developer and > as user i.e. even not a while ago The relentless application of the logic of my last email could lead to the following trilemma: 1) you've cheated (I mean this in non-moral terms, i.e., you intentionally or unintentionally took a shortcut, or special cased, or dealt with a toy, didn't handle the actual semantics, etc.) 2) you've not done the same kind of tasks 3) you have perverse tastes :) Ok, the last is a bit of a joke, but I can sorta rephrase it as, it's not clear that you are a proper judge as i don't believe you have the relevant experience with the contrast classes. Or perhaps it would be better to phrase it thus: There has been no independent invention (to my knowledge) of this approach, and there is no, to my knowledge, interest in adopting this approach in other areas of logic, knowledge representation, logic programming, etc. I don't believe it's a matter of us hidebound academic fogies failing to grasp the benefits. Let's take a trivial example, in my own made up syntax: some(P, C) or, to sexpr it (some P C) That's equivalent to the class expression (in owl) <owl:Restriction> <owl:onProperty rdf:resource="P"/> <owl:someValuesFrom rdf:resource="C"/> </owl:restriction> Or, to turtle it [a owl:Restriction; owl:onProperty P; owl:someValuesFrom C] Or, how about: _:x rdf:type owl:Restriction; owl:onProperty P. ...insert a hundred triples.... _:x owl:someValuesFrom C. Or I could owl the original: <erzatzOwl:Restriction> < erzatzOwl:onProperty rdf:resource="P"/> < erzatzOwl:someValuesFrom rdf:resource="C"/> </erzatzOwl:Restriction> This is no less verbose than the original OWL, but it parses directly to (or could parse to): some(P, C) (some P C) (some . (P . (C .()))) But guess what! I can have a schema or DTD that detects if there's a missing erzatzOwl:someValuesFrom! Or had two! Or, given syntax, I could easily make it pretty painless to have too. In either case, I'm gonna want to have something that looks a whole hell of a lot like what I parsed it too. And I'm going to want it to *mean* what I parsed it to means (when I interpret it). This is the groovy life. This is data pleasant to work with. This is the advantage of Lisp/Prolog code/data "equivalence". This is not what RDF gives you. Not even merely syntactically. Then through in the semantics and you are screwed. (For fun! Negate the expression! Convert it to negation normal form! Do it all at the triple layer! Using XSLT!) (More fun! Provide the semantic conditions for the normal interpretation in FOL of that expression!) > http://lists.w3.org/Archives/Public/www-archive/2004Aug/0024.html > > [[ > found a proof using the E prover > http://www4.informatik.tu-muenchen.de/~schulz/WORK/eprover.html > for the OWL test case > http://www.w3.org/2002/03owlt/description-logic/inconsistent502.rdf > which we translated into > http://lists.w3.org/Archives/Public/www-archive/2004Aug/att-0024/ > inconsistent502.tstp > and the proof is > http://lists.w3.org/Archives/Public/www-archive/2004Aug/att-0024/ > inconsistent502-proof.tstp > > (both are in the TSTP format > http://www.cs.miami.edu/~tptp/TSTP/ > but that can be connected to the "proof bus" using N3) > ]] > > we can't find that proof with euler but can convert it > back to N3 and use it's triples, well given that > {{:a :b :c} :d :e. {:f :g :h} :i :j} :k {{:l :m :n} :o :p}. Cheat. That's not RDF. The formula isn't encoded in RDF. You've added considerable syntax. You are in our camp. It's also a dodge. I completely fail to see how one, hand translated, very disciplined example stands up to the experience of theory, standard, and generic tool building. Let's take another case, qualified number restrictions. A simple extension to any of syntaxes (> 5 P C) Apparently very difficult for RDF. Any notation requires training, of course, but it is striking to me that when I used (or showed to people) Swoop's various panes (http://www.mindswap.org/2004/SWOOP/), people strongly preferred the concise syntax, even if it took a little explaining (and the fonts a bit too small!). Just being able to *see the real structure* of your assertion is HUGELY illuminating. Being able to work with that structure is also really happy making. (I hope to have some user testing to confirm this.) So forget the extra semantic crud problem (which is significant), it's just clearly much better to work with natural syntax than with some wretched twist of something else. Indeed, isn't this what we argue against XML? Graphs vs. Trees? You can encode graphs in XML (see RDF/XML). Why don't we just work with the XML? Isn't XML data pleasant to work with? (For syntax, this is surely true!!!) > is 1 triple with nested triples and respecting > > whenever, in a sentence, we wish to say something > about a certain thing, we have to use, in this > sentence, not the thing itself but its name or > designation -- Alfred Tarski I understand that. > So I believe that all those "certain things" are > rdfs resources, wether they be {} or literal values > or URI referenced things, the names are just > different designations. I don't understand that, but I believe it to be irrelevant. So, write a species validator. Write a converter to and from the abstract syntax (note which way is *much much much* easier!!!) Propose an encoding of N3 in OWL Full that is a same-syntax semantic extension, with model theory. These sorts of things could refute me. Or simply try the negation normal form challenge. Or come visit OWL-S land some time. I'll show you new meanings of the word "pain". The two functions would be: def nnf(triplestore) #returning triplestore and def nnf(term) #returning term or, better, def nnf(RDF/XML) #returning RDF/XML but using a triplestore and an XSLT stylesheet for and XMLization of, say, KRSS. How about just checking for wffs? (Y'know, isn't it painfully obvious that the open world assumption is *JUST WRONG* for syntax? I mean, if a term isn't there, it's *not there*. It's not that it *might* be there but I just can't see it. It really isn't there. Bad term! You didn't just stray...you wandered off the edge of the universe into oblivion!) (Someone tried to claim that having to encode multiple arity predicates in RDF was a *good* thing *because* of the open world assumption. After all, you might decide later that your "between/3" predicate *really* was a "between/24"!!! WHO KNOWS?!??!?!) In general, I strongly appreciate the idea that we should put more burden on implementors than on users, given the ratio of implementors to users (although, worse is better argues passionately against this!). But I do not believe that this should be interpreted as we should make implementor lives a living hell, and then screw the users too. Some history: I started out a TripleHater (I really need to revive my article "The Trouble with Triples" (which was a loose parody of the Star Trek episode http://www.startrek.com/startrek/view/library/episodes/TOS/detail/ 68744.html), alas, it was lost in a crash; actually, I was more TriplePuzzled than TripleHating), then, because I just couldn't understand why all these people loved them, I tried extra special hard to understand and imbibe the koolaid (see, http://monkeyfist.com/articles/815). Well, I've *drunk* the koolaid; I've *bathed* in it, *drowned* in it. And, alas, it's both sticky and it irritates my rather thick skin. Aren't applications and algorithms (both which the SemWeb is in dire need of) enough trouble? (So, how do we resolve the disagreement? I take it I win by TKO on the semantics. When the two lead editors of the semantics for OWL and RDF not only wail together on the pain, but are highly skeptical of the *possibility* of doing the encoding any futher, I think the burden of proof is hugely on the other side. And that means providing actual model theories of the desired form for, say, SWRL. Next let's look at the internals of any toolkit providing more semantics than raw RDF and see if they use RDF encodings directly. I don't know about Euler, but CWM does not (formulae are distinct, and scoped). Etc.) Cheers, Bijan Parsia. P.S. I understand that Sandro is gathering data, and I supply these screeds as data :) P.S.S. (Yes, that's deliberate. These aren't Post Scripts. But Post Screed. This is the Post Screed Screed :)) I though XML was the syntax layer? Why is RDF being polluted? Well I know why, because some people don't understand the difference between an assertion and syntax, connectives and syntax, etc. And something weird about parsers, but that *CAN'T BE* the explanation any more, because we have ever more syntaxes. Ok, it's about *abstract* syntax, or something. Bad abstract syntax. Bad descriptions of bad abstract syntax, maybe :) P.P.S.S. I will try to make it my last screed :) But I do believed I answered the question Sandro originally asked. He finds RDF data pleasant enough to work with that he is inclined to head down the encoding route. My experience is violently different. This is *aside* from the various theoretical point raised. Which are devestating, btw. Even if possible, it would still be painful and pointless, IMHO. There is no Nice here.
Received on Wednesday, 5 January 2005 06:18:53 UTC