- From: pat hayes <phayes@ai.uwf.edu>
- Date: Wed, 30 Oct 2002 17:53:07 -0600
- To: "Jeremy Carroll" <jjc@hpl.hp.com>
- Cc: w3c-rdfcore-wg@w3.org
>a disgruntled Pat wrote:
>>I would like to see a more detailed explanation of why the code could
>>not be modified to accommodate to this,
>
>I highlighted three features that I believe are in the list semantics that
>you would like to include:
>
>- infinity
>- equality
>- contradiction
>
>Of these the most difficult is infinity.
>
>Our typical API allows you to list the triples in a graph one by one, or the
>triples that match some expression, one by one. We are extending this API to
>support RDFS closure (compare with Ora Lassila's paper "Taking the RDF Model
>Theory Out for a Spin" Sardinia ISWC 2002).
Good luck. (See below.)
>This method will produce highly surprising and unacceptable results if the
>RDFS closure of a graph with a single triple in, has an infinite number of
>lists.
But guys, be reasonable. This *obviously* is not an acceptable
implementation strategy in general. Theorem-provers havnt been
implemented this way since about 1965. Strictly speaking it doesn't
even work for RDFS, since the existing container properties give you
an infinite closure. Of course there are going to be infinite
universes in almost any reasonable semantic theory for any slightly
expressive language. Look at Basic or Fortran, never mind LISP. The
value spaces of XSD datatypes are infinite, so for example all these
triples are going to be true in RDF:
_:x xsd:integer xsd:integer"<insert numeral string here>" .
Even when the closure is finite, its probably going to be
horrendously large and the rules are chock full of redundancy (even
more if we use the IFF semantics for range, BTW). What you ought to
do is run the closure rules backwards: use some kind of
matching+backtracking from the target triple to at least keep the
search space to a manageable size. The size of the forward closure is
irrelevant: what ought to matter is the span length of the inference
tree BACK from your target to the set of triples in the graph being
'closed'. Hey, use Prolog.
I actually said in the MT document that those rules weren't intended
to define a process or to be directly implemented. I wish Id never
mentioned closure rules: it was only intended to be a way of relating
the semantics together.
>The result would be that we would need to redesign our API
You need to do that anyway. I feel like Im being asked to help design
an airplane made of lead here.
>so that the API
>concepts much less clearly matched the RDF Semantic concepts - which would,
>in my opinion, be too great a price to pay for supporting webont in their
>list semantic problems. Doing list comprehension is not conceivably an RDF
>Core problem. DAML+OIL didn't do it, it's new for OWL.
>
>Equality is also difficult.
I agree with you there, and would be happy - well, not happy, but not
bloody miserable - to leave that one. Seems to me that anyone who
writes RDF describing a forked -tail list is liable to get what they
deserve. And we can't really express identity in RDF. We can in OWL
but it doesnt really matter there in any case.
>
>You say that Dan's entailment below does not hold.
>>Consider this conjecture:
>>
>> eg:myBrothers rdf:first eg:paul.
>> eg:paul eg:hairColor "brown".
>> eg:myBrothers rdf:first eg:jon.
>> eg:jon eg:height "tallish".
>>
>>==?==>
>> _:somebody eg:hairColor "brown".
>> _:somebody eg:height "tallish".
>>
>>I don't want that entailment to be justified by the RDF
>>nor RDFS MTs;
>
>Please explain why it doesn't.
Because the MT just requires that the domain of lists is closed under
cons-ing, basically. It doesnt say anything about identity between
lists, so it doesnt have any entailments about things being the same.
In particular, myBrothers can have two rdf:firsts for all the MT
cares. It wouldnt be an Sexpression, but it could still *exist*.
What the MT does insist on is that a list exists which has eg:paul
first and nil, say, as next. It tells the user that its always OK to
refer to a list using bnodes, ie to say that a list exists, just
like they know its always OK to write a numerical string in a
literal: the RDF engine isnt going to suddenly refuse to believe in
seventeen, say.
>If you have a neat trick for having only one first without Dan's entailment
>then maybe that will be alright.
There can be two firsts. I think that would be OK for OWL as well, by
the way: the abstract syntax-to-RDF mapping is never going to create
a forked-head list, so the issue never gets to be critical. I don't
mind leaving to OWL the task of saying that rdf:first is functional.
(Or is it inversefunctional? Whatever.)
>The problems about the contradictoriness of
>rdf:nil rdf:rest _:a . I can probably live with, although I would need to
>consult.
Yes, that does seem odd. In fact I think we could even maybe live
with this, in fact (?). Things past nil in a list would be like
transfinite ordinals: they are there, but you can never get to them
('you' here being a recursive kind of guy, that is.) There could be
some snags in OWL over identity, however. Need to think about this
more, but no time to think right now.
Pat
--
---------------------------------------------------------------------
IHMC (850)434 8903 home
40 South Alcaniz St. (850)202 4416 office
Pensacola (850)202 4440 fax
FL 32501 (850)291 0667 cell
phayes@ai.uwf.edu http://www.coginst.uwf.edu/~phayes
s.pam@ai.uwf.edu for spam
Received on Wednesday, 30 October 2002 18:53:51 UTC