- From: Doerthe Arndt <doerthe.arndt@ugent.be>
- Date: Thu, 13 Dec 2018 10:29:34 +0100
- To: William Van Woensel <william.vanwoensel@gmail.com>, public-n3-dev@w3.org
- Message-ID: <ee889818-b543-9ab5-18dd-85d4530d0424@ugent.be>
> Proofs will also certainly help for debugging but they rather help in > cases where unexpected derivations happen. > > +1! > > When I expect a result which I then do not get, there is also no proof > to check what happened (no proof for something which is not true). > > Why not? .. (aside from technical considerations) > Proofs are there to explain derivations done not derivations which are not done. As a very simple example suppose you have the triple: :my :nice :triple. Now, you have a rule which you expect to be applicable on it, but that one has a typo: {?x :nic ?y}=>{?x :nicer ?y}. So, you would expect that the reasoner would come to the conclusion: :my :nicer :triple. but this derivation will not happen because you wrote :nic instead of :nice. In this case, it would be difficult to find this particular problem in a bigger setting. If you now ask your reasoner to give you proofs for all instances of ?x :nicer ?y (ie you give Cwm, EYE or whatever you use a goal like {?x :nicer ?y}=>{?x :nicer ?y}) the result above will simply not be derived and therefore there will be no proof. The reasoner will not give you a proof of everything it tried and then failed (and we do not know whether it even tried to apply this rule, this depends on the reasoning algorithm, simple forward-chaining would ignore this rule here, backward-chaining would try to apply it) since proofs reflect valid steps from a calculus which you applied on your data set. Kind regards, Doerthe > W > > *From:*Doerthe Arndt <doerthe.arndt@ugent.be> > *Sent:* December-12-18 11:09 AM > *To:* public-n3-dev@w3.org > *Subject:* Re: First meeting of our group > > Dear Sandro, all, > > > > > My own interest is in making it practical (even fun and easy) to > base real applications on open-world data (that is, RDF or other > KR data), so that we end up with a full data-sharing ecosystem. It > has long seemed like rules were a promising approach: rather than > than having to code around all the possible forms the input data > could take, we simply write the appropriate rules and let the > system match them to the input data whenever/however possible. > I've built a variety of systems like this, and in my experience, > the promise has not worked out terribly well. Rules are very, > very hard to debug. Hopefully things will improve some day. > > I am used to Prolog and wonder whether the simple debugging predicates > and modes of for example SWI-Prolog could help here. > > The problem with debugging in Prolog (and I guess in any other rule > language as well) is that it depends on the reasoning algorithm. In > Prolog this is resolution with the left-most selection rule. Since we > know that, we can also easily (ok, debatable, but I think it is easy) > see where reasoning got stuck in case of problems. But I do not think > that we should completely fix the reasoning mechanism we expect for N3 > (for example we could be flexible with a selection rule and hope for > different approaches) and concentrate on the logic instead. > > Proofs will also certainly help for debugging but they rather help in > cases where unexpected derivations happen. When I expect a result > which I then do not get, there is also no proof to check what happened > (no proof for something which is not true). > > > N3, as implemented in cwm, was an attempt to attack the problem by > one person (with some advice from a few others -- I don't mean to > minimized DanC's role, but I think he'd agree the vision was > Tim's) who had no experience with existing rule-based system or > familiarity with the literature, so the design ended up rather > idiosyncratic. At the other end of the spectrum, RIF was an > attempt to attack this problem by a committee which included > experts in many different kinds of rule-based systems, so it ended > up rather complicated and full of options. I joined Tim's group a > few weeks after cwm started, in late 2000 and was staff contact > for RIF from chartering <https://www.w3.org/2005/rules/wg/charter> > through Recommendation <https://www.w3.org/TR/rif-overview/>. I > might be the only person involved in both projects. > > I'd love to see something simple and elegant enough it actually > catches on. I highly doubt that will be classic N3, in all its > self-referential glory (the "implies" operator is just an RDF > predicate!), or RIF, in all its complexity. > > I agree with both points and hope to find a practical solution here. I > also think that we should consider the work already done in the past > on N3 and RIF, so I am glad that you share your experience. > > If this group just wants to nail down N3, more or less as > implemented in cwm (and perhaps EYE), then more power to it, I > wish it well. I'll try to follow the progress from time to time. > > On the other hand, I rather hope it ends up evolving into a > language which really fits the needs of application developers. > That would be awesome. > > I also think that this should be the goal of the group should be to > find a practical rule language which fits the needs of developers. > Nevertheless, I also think that we should not be too ambitious either > to be sure to not deviate from our goal of specifying a standard. So, > maybe we start with N3 as it is and "fix" what according to the > experience of the people in this group needs to be present in a rule > language? > > I hope that you can help us here with all the lessons learned from the > two other groups. > > > > * Together with the formalisation we should also discuss > whether we provide a reference implementation together > > > In general, in standards work, reference implementations are not a > great idea. It's much better, if possible, to have multiple > independent implementations and a shared test suite. Every > substantive decision by the group -- that is, a decision that > might affect whether some implementation conforms to the spec -- > as well as every normative statement in the spec should be > recorded as multiple tests added to the test suite, showing the > correct way for reasoners to behave. For a rule language, > positive-entailment and negative-entailment tests are most of what > you probably want. Of course there are also positive-syntax and > negative-syntax tests. See, for example, > https://www.w3.org/TR/rif-test/ > > Thank you for your advice. So, let's simply drop the point of a joint > reference implementation then and write some test cases instead. > > Regards, > Doerthe > > -- > Dörthe Arndt > Researcher Semantic Web > imec - Ghent University - IDLab | Faculty of Engineering and Architecture | Department of Electronics and Information Systems > Technologiepark-Zwijnaarde 19, 9052 Ghent, Belgium > t: +32 9 331 49 59 | e:doerthe.arndt@ugent.be <mailto:doerthe.arndt@ugent.be> -- Dörthe Arndt Researcher Semantic Web imec - Ghent University - IDLab | Faculty of Engineering and Architecture | Department of Electronics and Information Systems Technologiepark-Zwijnaarde 19, 9052 Ghent, Belgium t: +32 9 331 49 59 | e: doerthe.arndt@ugent.be
Received on Thursday, 13 December 2018 09:30:30 UTC