- From: Sandro Hawke <sandro@w3.org>
- Date: Mon, 23 Apr 2007 11:59:11 -0400
- To: Bijan Parsia <bparsia@cs.man.ac.uk>
- Cc: semantic-web@w3.org
> >>> Style 2 - Plural (Collection) Property > >>> > >>> Turtle: p:Charles f:children ( p:William p:Harry ). > >>> > >>> N-Triples: > >>> p:Charles f:children _:genid2 . > >>> _:genid2 rdf:first p:William . > >>> _:genid2 rdf:rest _:genid1 . > >>> _:genid1 rdf:first p:Harry . > >>> _:genid1 rdf:rest rdf:nil . > >>> > >>> I believe the dominant opinion is that one should use Style 1 > >>> unless one > >>> needs one of the key features of Style 2, which are roughly: > >>> a. the values are ordered > >>> b. the values are exhaustive > >> > >> Since it ensures neither, I think style 2 is a huge anti-pattern. I > >> recommend it against it always. > > > > Can you explain this? > > I have that power. Indeed. And I thank you for exercising it. > > In what sense are the elements in the list not ordered? > > They are ordered but that order is neither really "semantic" nor is > it intention revealing. For example, the canonical use of rdf:List is > in OWL syntax where it represents an unordered collection (at some > level). > > For example, I can add, without difficulty, the following statement > to your turtle: > p:Charles f:children ( p:Harry p:William ). Not if f:children was an owl:FunctionalProperty. I didn't get into that, but I would expect one would usually want it to be. > But more to the point, even if they *are* ordered, and you exploit > that order, it's not a good way to achieve the *modeling* of the > ordering in question. Usually there are many orderings (age, grades, > number of hair follicles, height). The *significance* of the > ordering above is pretty clearly age, but then why not model that? In > both cases, *recognizing* the order comes from outside. > > This is an old point from relational database design. In general, I agree with this principle, but what about (1) When the ordering is only significant in the context of the relationship, such as with the words of a sentence, or the slides in a particular slideshow (which are arranged to make a rhetorical point)....? (2) When users want quick results -- they don't want to think through the semantics behind the ordering -- they just know what order the items belong in. ? > > By "exhaustive", just to be clear, I mean that using Style 2 one can > > define "children" such that when we list Charles' children we are also > > saying these are his *only* children. > > But you aren't saying that. That's what users seem to me to be saying when they (including the OWL RDF syntax) are using rdf:List. I understand it's not always formally or even informally stated. > Add: > > p:Charles f:children ( p:Janice ). > > Who are p:Charles' children? I believe my semantics, in both English and FOL, would render that merged graph inconsistent. > rdf:Lists are misleading thus, even aside from their lack of decent > formal semantics: they are not very intention revealing either. > Eschew, eschew! Thanks, it is, in fact, lunch time. :-] > > Is your point that such a > > constraint on p:children can't be specified in OWL? > > No. > > > Alan points out that one can do that with OWL maxCardinality. To do > > that, you'd need to introduce classes like ParentWithTwoKids, > > ParentWithThreeKids, > > Not even a little bit. > > > etc, and then say: > > > > p:Charles a f:ParentWithTwoKids; > > f:child p:William, p:Harry. > > right? > > Nope. > > p:Charles a [a Restriction; onProperty f:child; cardinality "2"]; > f:child p:William, p:Harry. Perhaps I wasn't clear. I was assuming f:ParentWithTwoKids rdfs:subClassOf [a owl:Restriction; owl:onProperty f:child; owl:cardinality "2"]. so that we wouldn't have to repeat the Restriction triples for each such parent. But I get your point that you don't have to name them, since naming implies a kind of advance planning that isn't actually needed here. So it's easy enough to state that one is providing exhaustive information. - Sandro
Received on Monday, 23 April 2007 15:59:26 UTC