- From: Jos de Bruijn <debruijn@inf.unibz.it>
- Date: Tue, 28 Apr 2009 14:04:35 +0200
- To: Sandro Hawke <sandro@w3.org>
- CC: RIF <public-rif-wg@w3.org>
- Message-ID: <49F6F0D3.6090704@inf.unibz.it>
Sandro Hawke wrote: >> http://www.w3.org/2005/rules/wiki/RIF-RDF-Lists > > 1. Does the rdf graph need to include the 'rdf:type rdf:List' triples? > I hope not. > > That is: > > ex:a ex:p _:l1 . > _:l1 rdf:first ex:b . > _:l1 rdf:rest rdf:nil . > > entails: > > ex:a[ex:p -> List(ex:b)]. It was my interpretation that in RDF the list items (_:l1, etc) must be of type rdf:List to have a well-formed list. Therefore, in the original proposal, if you use simple or RDF entailment, these triples are required. When checking the RDF documents again, I realize that there is not much support for this interpretation. I modified my proposal to get rid of this requirement. So, your test case is now valid. > > > 2. Can I provide my RDF data in RIF frames? I hope so (at least in the > one-to-one mapping version). > > That is: > > import(any-rdf-graph-even-an-empty-one, rdf-simple). > > ex:a[ex:p -> _:l1]. > _:l1[rdf:first -> ex:b]. > _:l1[rdf:rest -> rdf:nil]. > > entails: > > ex:a[ex:p -> List(ex:b)]. Yes, this works in both the extension and the one-to-one semantics. > > > > 3. Is an RDF list without a final rdf:nil just an open RIF List? I'd > kind of expect so, although I don't really care. > > That is: > > ex:a ex:p _:l1 . > _:l1 rdf:first ex:b . > _:l1 rdf:rest ex:c . > > entails: > > ex:a[ex:p -> List(ex:b | ex:c)]. Right now, rdf:nil is required, and so this test case is not valid. Actually, according to the RIF list semantics, List(ex:b | ex:c) does not necessarily denote a list. In some interpretations it will be a list, and in other interpretations it is just some object. This might actually be a problem. That said, it is possible to require the existence of some list (denoted by ex:c) in this case. However, I do not fully understand the consequences of such a change at the moment. Anyway, I think it is reasonable to require rdf:nil, because in all RDF documents that mention lists, lists are closed, and the special RDF/XML syntax for lists requires them to be closed. > > I'm not sure about the case where the 3rd triple is totally missing; it > seems like the open list would still exist, even if we can't name its > tail. > > In the one-to-one version, I'd expect open lists to map to RDF lists > with some kind of variable 'rest' part: > > ex:p(List(ex:a | ?X)). > > entails > > Exists ?x ?rest ( > And( > ex:p(?x) > ?x[rdf:first -> ex:a] > ?x[rdf:rest -> ?rest] > )) Yes. Best, Jos -- +43 1 58801 18470 debruijn@inf.unibz.it Jos de Bruijn, http://www.debruijn.net/ ---------------------------------------------- Many would be cowards if they had courage enough. - Thomas Fuller
Received on Tuesday, 28 April 2009 12:05:18 UTC