- From: Axel Polleres <axel.polleres@deri.org>
- Date: Tue, 03 Jul 2007 19:56:40 +0100
- To: Jos de Bruijn <debruijn@inf.unibz.it>
- Cc: RIF <public-rif-wg@w3.org>
Jos de Bruijn wrote:
>>>Done. See: http://www.w3.org/2005/rules/wg/wiki/Arch/RDF
>>
>>I pick up the discussion we had on IRC/in the teleconf today
>>on Jos' RDF proposal and would like to clarify /raise some issues here:
>>
>>1) First, the "problem" was that not all RDF(S) entailment rules
>>can be encoded in RIF.
>
>
> I realize now that you meant the entailment rules as they were written
> in the specification. I do not propose to embed these entailment rules.
>
> I propose a direct embedding of the normative model theoretic semantics
> of RDF(S) using logical rules.
>>I meant especially, that the rule
>>
>> G
>> ---
>> G'
>>
>> where a Graph G which is obtained
>> from a graph G' by a bnode-renaiming
>>
>>is not expressible as a RIF Core rule.
>>Jos returned that this rule is not necessary, because
>>e.g. my example, ie. querying for
>>
>> _:b p o.
>>
>>on graph
>> _:a p o.
>>
>>would be expressibly by the query
>>
>> exists ?b (?b p o)
>>
>>ie. treating the bnode in the query as a variable. This is probably
>>possible for many use cases, but, I would be cautious to say ALL use
>>cases, so I'd prefer that we say explicitly what of the RDFS semantics
>>we cover, if we add RDFS as an "implicit" rules set.
>
> What we cover is well defined. We cover simple entailment, RDF
> entailment, and RDFS entailment. See [1].
Anyway, I was in particular referring to
http://www.eswc2007.org/pdf/eswc07-munoz.pdf
which provably is complete for a subset of RDFS and the one rule I refer
to is not expressible in RIF Core, as far as I can see. Anyway, if you
can convince me that there is a complete set of rules expressible in RIF
core which covers bnode renaming, fine. I will check [1] again.
>>2) Then in the current discussion on bnodes in heads (I more or less
>>agree with the proposed treatment of bnodes in bodies), jos writes
>> the following :
>>
>></snip>
>>Using real blank nodes in the head of a rule poses problems, since
>>existentially quantified variables are not allowed in the head of a rule
>>in any rules language.
>>
>>However, most N3-like rules languages do not allow blank nodes in the
>>head, but rather have some kind of notion like "rigid bnode". Such a
>>rigid bnode can be encoded using a new unique constant symbol, which is
>>local to the rule set, i.e. combination of the rule set with another
>>rule set, as well as entailment checking, requires renaming of all local
>>constants. However, in this case there are similar round tripping
>>problems as with real bnodes in the body of a rule.
>></snip>
>>
>>I am not sure what is meant by "real bnode" here, but I'd assume a bnode
>>only appearing in the head but not in the body.
>
>
> I would rather assume that bnodes are not shared between the body and
> the head in these N3-like rule languages.
Fair enough, this is also what is done in several existing approaches.
>>A "new unique constant
>>symbol local to the rule set" is probably not enough, but you might want
>>a "real" Skolem function here:
>>
>> e.g.
>>
>> (_:a p ?x .) :- (?x q ?y .)
>>
>>
>> should probably be rather:
>>
>> ( sk_a(?x) p ?x .) :- (?x q o .)
>>
>> than
>>
>> ( new_constant_for_bnode_a p ?x .) :- (?x q o .)
>>
>> since the former would create a new skolem function for any
>> instance of ?x whereas the latter would only create 1 new constant
>> for all instances of ?x which causes trouble in the
>> general case:
>>
>> e.g. when I take a graph
>>
>> s1 q o1.
>> s2 q o2.
>>
>> plus the rule above and ask a query
>>
>> \exists ?y,?x,?z (?y p ?x) AND (?y p ?z) AND (?x q o1) AND (?x q o2)
>>
>> I'd get a 'yes' for the latter translation which I do not necessarily
>> want. At least, it would not be compatible with the treatment of bnodes
>> in the heads of CONSTRUCTS in SPARQL (I am not sure about N3, since the
>> semantics of N3 is not really formally specified, AFAIK)
>>
>> This is all basic logics of course, apologies, but ... just to
>> exemplify.
>
> as far as I understood, N3-like rule languages do not use function
> symbols [we had a discussion about this issue a couple of weeks ago in
> the telephone conference]; the semantics of rigid bnodes requires some
> more investigation
well, a) this is why I asked today what you meant by N3-like.
Do you count SPARQL's CONSTRUCTs into N3 like rules? If not what does
count as N3 like?
b) I did not say that these rules USE function symbols, but in order to
do Skolemization properly you DO NEED function symbols (or special
built-ins which "emulate" a skolem function by generating something like
a "parametrized" new ID)
best,
Axel
>>3) Also, I assume that the proposal does not treat non-real bnodes yet,
>>ie bnodes appearing in the body AND in the head is not yet treated
>>explicitly in this proposal. There are two ways of treating such
>>non-real bnodes, take a rule
>>
>> (_:a p o .) :- (_a: q o .)
>>
>> a) Firstly, you could treat those bNodes in the head as real Bnodes,
>> ie. those in the body as a variable, and those in the head using
>> a skolem-function,
>>
>> the example would therefore yield something like:
>>
>> (sk_a(?a) p o .) :- (?a q o .)
>>
>>b) Secondly, you could treat those non-real bnodes just as a variable
>> in both cases (head and body)
>>
>> (?a p o .) :- (?a q o .)
>>
>>Note that SPARQL avoids this issue which could theoretically also arise
>>with CONSTRUCTs there, by stating that
>>"The same blank node label cannot be used in two different basic graph
>>patterns in the same query".
>>
>>
>>just my 3 cents,
>>axel
>>
>>
>
>
--
Dr. Axel Polleres
email: axel@polleres.net url: http://www.polleres.net/
Received on Tuesday, 3 July 2007 18:56:53 UTC