Re: firts and rdf:rest as functional property

On Mar 20, 2009, at 9:43 AM, Story Henry wrote:

>
> On 20 Mar 2009, at 15:37, Richard H. McCullough wrote:
>
>> I have often wondered why RDF doesn't allow lists
>> to written in the style that is used in programming
>> languages today:
>>
>>  [a,b,c,d]
>>
>> You can use "list" as a predicate
>>
>>  X list [a,b,c,d]
>>
>> They're easy to parse, easy to read.
>
> You can do this in N3:
>
> basket contains (chicken cheese yoghurt) .
>
> No idea what this talk about rdf lists not being real lists is  
> about, and just being syntactic things.
> Seems pretty bazaar to me when we have the two relations rdf:first  
> and rdf:next . I don't see why these can't be functional.
>

They can be, but it won't get you what (I suspect) you want. Consider  
a 'crazy' RDF list:

a:a rdf:type rdf:List
a:a rdf:first a:B
a:a rdf:first a:C
a:a rdf:rest a:d
a:d rdf:rest a:e

Considered as a data structure, this is broken. It has two firsts and  
no second item, and it doesn't have a well-defined end. Note, however,  
this is a perfectly reasonable _description_ of a list, indeed of  
quite a number of lists: it is just incomplete, as a description.  
Being incomplete, it fails to describe one list well enough to nail it  
down uniquely. But this is not an RDF bug. RDF descriptions can  
_always_ be incomplete. One can never know when more information might  
appear on the Web from somewhere.

Suppose that rdf:first and rdf:rest were owl:functionalProperties.  
Would this make the above example ill-formed? No. Would it require  
that the missing pieces be inserted? No. Would it change the meaning?  
Well, it would allow one to conclude that a:B owl:sameAs a:C, which is  
maybe a step in the right direction. But (as Bijan pointed out) you  
might not want to go in that particular direction, because the  
complexity of establishing that two different IRIs are owl:sameAs one  
another is arbitrarily high, and might be out of range for most  
intended uses of the rdf collection vocabulary.

RDF is not a programming language. It does not provide lists in the  
way that LISP or PYTHON do. What it provides is a way to _describe_  
lists, basically by making assertions about them. A sufficiently  
complete and non-confusing collection of assertions (RDF triples) can  
be treated as being an actual list, for modeling purposes: but no  
amount of semantic conditions is going to be able to ensure that any  
RDF graph is complete and non-confusing in the way required, because  
this is a _syntactic_ condition upon an RDF graph.

Pat Hayes

> Henry
>
>> Dick McCullough
>
>
>
>

------------------------------------------------------------
IHMC                                     (850)434 8903 or (650)494 3973
40 South Alcaniz St.           (850)202 4416   office
Pensacola                            (850)202 4440   fax
FL 32502                              (850)291 0667   mobile
phayesAT-SIGNihmc.us       http://www.ihmc.us/users/phayes

Received on Friday, 20 March 2009 15:51:39 UTC