- From: Axel Polleres <axel.polleres@deri.org>
- Date: Wed, 27 Jun 2007 11:56:12 +0100
- To: Gary Hallmark <gary.hallmark@oracle.com>
- Cc: Sandro Hawke <sandro@w3.org>, Dave Reynolds <der@hplb.hpl.hp.com>, public-rif-wg@w3.org
Gary Hallmark wrote:
>
> Interesting discussion at the telecon today. My suspicion is that
> fallbacks won't be useful and are an unnecessary complication. The use
> cases that were suggested seem to validate my suspicion:
>
> negation
I am not sure what you mean by "fallback" exactly.
As for adding (locally) stratified negation to horn, I can say that
ignoring rules with stratified negation would simply give you incomplete
models, but all
inferred atoms would still be sound.
If I understood correctly, Sandro was with his nnotion of "impact"
talking about different treatments of "fallback", e.g. something like
(this probably only applies to deductive rules though):
a) ignoring X will lead to sound inferences only but inferences
might be incomplete
b) ignoring Y will lead preserve completeness but unsound inferences
might arise
c) ignoring z will neither preserve soundness nor completeness
etc.
while the latter two are probvably pointless, I could well imagine use
cases for a) e.g. when doing query answering over a rule base
I might be happy to get sound answers but not requiring all answers
example:
p(a) <- p(b).
p(b).
q(c).
r(d).
p(X) <- not q(X).
When I now ask for
p(X).
I'd get p(a) and p(b) in all cases even if I ignore the last rule.
p(c) would only get inferred when having the last rule.
axel
> aggregation
> retract
> conjunctive/disjunctive conclusions
>
> The above have no reasonable fallback other than to fail translation
> with an informative error message.
>
> I think things that can be ignored are metadata by definition, and we
> should get on with defining metadata.
> I think the "dialect name" is metadata. It can be ignored, and dialects
> can't change the meaning of syntax elements like
> Rule, And, Or, etc.
>
> BTW, fallback vs. monolithic is a false dilemma. These are orthogonal.
> I prefer NO fallback, but failure only if the translator (from RIF) does
> not understand some (non-metadata) syntax element.
>
> I think a translator from RIF to a target rule language MUST understand
> all the syntax elements but MAY ignore the metadata. A translator to
> RIF SHOULD generate "complete" metadata and MUST generate "correct"
> metadata.
>
> Extensibility is a lot like luck. You can feel lucky, but you can only
> prove you *were* lucky by analyzing *past* events...
>
> Sandro Hawke wrote:
>
>>>> My thinking was that a given component could have multiple fallbacks,
>>>> each with different impact. So, typically, I'd expect a minor-impact
>>>> fallback to a nearby dialect to be defined, along with a major-impact
>>>> fallback to Core.
>>>>
>>>
>>> The issue is not how far you need to fallback but whether the
>>> fallback is applicable at all in the presence of other components;
>>> i.e. the fallback (or at least it's impact :-)) needs to be conditional.
>>>
>>
>>
>> As I'm imagining it, the conditional-nature of the fallback is
>> encapulated by the components used in the output of the fallback
>> procedure. So component C3 has two fallbacks, one (low impact) to C2,
>> and one (high impact) to Core. And the implementation should use the C2
>> one if that's going to result in less overall impact - even if it has to
>> fallback from C2 to C1, etc.
>> But you're talking about something a little different, I guess -- you're
>> talking abut a case where the fallback might be C3 -> C2 if and only if
>> some other component C4 is implemented? I'm not quite following when
>> you would need that.
>>
>>
>>
>>>>> Third, it's not clear to me in what way CRC is a separable
>>>>> component in the first place. Certainly one could have a new
>>>>> conjunction operator intended for use only in rule conclusions but
>>>>> if we were putting that in the Core just now we'd just modify the
>>>>> Rule syntax and reuse the same Conjunction element as used in the
>>>>> condition language. Does this sort of extension (generalizing where
>>>>> certain constructs can be used) fall in the scope of the mechanism?
>>>>>
>>>>
>>>> The approach that comes to my mind is to have a different kind of rule.
>>>> Core has HornRule, and you're talking about a CRCRule, I think.
>>>>
>>>
>>> Yes, that seems right.
>>>
>>> That does raise a related issue though. If my new extended production
>>> rule dialect has several such extensions about what can be said in
>>> the conclusions then I'd presumably have an EPRule clause which
>>> encapsulated all of those. In that case the different extensions
>>> wouldn't be separate components but one big component and the
>>> fallback transformations would be more complex and conditional.
>>>
>>
>>
>> *nod* That might be right, but maybe there's a way to separate them
>> better. I'd need to play with that some more.
>>
>>
>>
>>>>> So test cases would, I think, be a helpful way to clarify the scope
>>>>> of what the mechanism should and should not cover.
>>>>>
>>>>>
>>>>> A couple of more minor comments:
>>>>>
>>>>> o I have been assuming that a RIF ruleset will include metadata
>>>>> which identifies the intended dialect (including version
>>>>> information). The discussion under "Dialect Identification and
>>>>> Overlap" doesn't seem to reflect that. The extension mechanism is
>>>>> only needed when a processor doesn't recognize the
>>>>> dialect/dialect-version in order to determine whether, despite
>>>>> that, it could still proceed.
>>>>>
>>>>
>>>> I understand. My suspicion is that identifying components instead of
>>>> dialects will end up being much more comfortable in the long run. In
>>>> the most obvious case, you might implement D1 (C1,C2,C3) and recieve a
>>>> document which uses only C1 and C2, but which would be labeled as being
>>>> written in D2 (C1,C2,C3,C4). The sender might not even know that D1
>>>> exists, and so could not label it D1. (But maybe the D2 author needs
>>>> to know about D1 to ensure compatibility; maybe the content could be
>>>> labeled as {D1, D2}.)
>>>>
>>>
>>> I wasn't objecting to also doing component level analysis but having
>>> the sender and receiver just agree to use the same dialect seems like
>>> the common case which should be supported by dialect-level metadata.
>>> That certainly doesn't preclude translators falling back on component
>>> level analysis.
>>>
>>> I guess part of my worry is that it's not clear to me how often the
>>> components are going to be neatly semantically composable to make the
>>> componentization useful.
>>>
>>
>>
>> Yeah, this sounds like a lot of work. I'm suddenly feeling sympathetic
>> with a point Christian often makes when people say all we have to do in
>> Phase 1 is Horn, and he replies: Non! :-) "We also have to do
>> extensibility!"
>>
>> With that in mind, let me put another strawman on the table. Let's call
>> what we've been talking about "fallback-based extensibility" and the new
>> one "whole-dialect" or "monolithic" versioning.
>>
>> In monolithic versioning you don't really have forward compatibility or
>> graceful degradation. It's much more traditional. If you want to add
>> something which effects the semantics of the language, you create a new
>> dialect. The dialect of a document is named at the top of the document
>> -- if you receive a document for which you don't implement the dialect,
>> you just reject it.
>>
>> For performance and presentation information, however, you can use
>> metadata. Unrecognized/unimplemented metadata is just ignored.
>>
>> There would still be conceptual re-use, of course. Many dialects would
>> have a lot of conceptual overlap, and that would be handled by common
>> subroutines in the translators. But a system which understood four
>> dialects would probably have four translators in it.
>>
>> The downside to this monolithic approach is that it means we lose the
>> distinctions in handling the different conditions in that table at the
>> end of Extensibility2. Instead of 12 different cases we have two:
>> semantic (data) and non-semantic (metadata). Or maybe the distinction
>> is between "important" and "unimportant" -- where unimportant stuff is
>> ignored if it's not understood (metadata) and if you don't understand
>> the important stuff (the data) you reject the document.
>>
>> -- Sandro
>>
>>
>>
>
--
Dr. Axel Polleres
email: axel@polleres.net url: http://www.polleres.net/
Received on Wednesday, 27 June 2007 10:56:36 UTC