- From: Sandro Hawke <sandro@w3.org>
- Date: Wed, 25 Jul 2007 22:18:45 -0400
- To: Garret Wilson <garret@globalmentor.com>
- Cc: Semantic Web <semantic-web@w3.org>
Garret Wilson <garret@globalmentor.com> writes:
> Garret Wilson wrote:
> >
> > Sandro Hawke wrote:
> >> To be clear, an rdf:List can have literals, it's just that
> >> parseType=Collection cannot be used with such lists.
> >>
> >> I'm curious why you prefer rdf:value for this workaround instead of
> >> owl:sameAs....
>
> Jeremy's (private) email to me probably contains what Sandro was meaning:
>
> <rdf:Description>
> <eg:prop rdf:parseType="Collection">
> <rdf:Description owl:sameAs="one"/>
> <rdf:Description owl:sameAs="two"/>
> <rdf:Description owl:sameAs="three"/>
> </eg:prop>
> </rdf:Description>
Yes, exactly. I might throw in some like this:
<rdf:Description>
<owl:sameAs rdf:datatype="&xs;int">42</owl:sameAs>
</rdf:Description>
to show you can do datatyped literals as well, but the concept is the
same.
> Unfortunately, this assumes that the RDF processor is an inference
> engine that supports OWL---and provides spurious properties not present
> if I were to put literals in a full-syntax rdf:List. (On the other hand,
> rdf:value has no set semantics at all---it's not even a hack, but more
> like a hack builder.)
>
> Once I assume an inference engine that understands OWL, I might as well
> do this:
>
> <rdf:Description
> rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#value">
> <owl:sameAs rdf:resource="http://www.w3.org/2002/07/owl#sameAs"/>
> </rdf:Description>
Well, no -- because there might be other uses of rdf:value in some RDF
data you want your data to be used with -- uses which are *not* the same
as owl:sameAs. But other than that -- sure.
> <rdf:Description>
> <eg:prop rdf:parseType="Collection">
> <rdf:Description rdf:value="one"/>
> <rdf:Description rdf:value="two"/>
> <rdf:Description rdf:value="three"/>
> </eg:prop>
> </rdf:Description>
>
> :)
>
> But why, why, why?
>
> I'll stop before this turns into a rant. ;)
I totally understand your frustration. (I was ranting about this, in a
more private forum, two or three weeks ago.)
I'm not saying this approach to owl:sameAs solves the problem. It's
still a nasty mess. I'm justing thinking that using owl:sameAs is
slightly better than using rdf:value. With owl:sameAs, you actually are
saying, logically, what you want to be saying. It might even
automatically due the right thing in some systems (although I wouldn't
put any money on it).
I think the medium-impact fix I like the most is to unify rdf:Seq and
rdf:List. Say that
<list> rdf:_1 <a>.
entails and is entailed by
<list> rdf:first <a>.
in some very low-level RDF semantics.
And then probably throw rdf:List into the syntax like rdf:Seq, different
in that it terminates the list. rdf:Seq would turn into both rdf:_<n>
triples and rdf:first/rdf:rest stuff, but there would be no rdf:nil at
the end.
(I might turn Bag and Alt into something which is linked to an rdf:List
of the members.)
This is probably too weird, and would cause all sorts of unexpected
stuff to crop up. Maybe just allowing rdf:li inside
parseType=Collection is the trivial fix.
-- Sandro
Received on Thursday, 26 July 2007 02:20:09 UTC