Re: root-element and arbitrary triples in RSS (Re: Setting up a purl for rss/1.1)
Christopher Schmidt <crschmidt-ShfR2DvLQHoeIZ0/[email protected]>
| Newsgroups | gmane.network.syndication.rss.devel |
|---|---|
| Message-ID | <[email protected]> |
On Sun, Jan 23, 2005 at 09:36:02PM +0100, Reto Bachmann-Gmuer wrote:
>
> Christopher Schmidt wrote:
>
> >
> >Since no source is going to want to aggregate these "arbitrary triples"
> >anyway, why would allowing them make any sense?
> >
> >
> If we keep the promise of extensibility these triples are a must. People
> start to add "foaf:maker" properties even if there is no RSS-extension
> module yet.
And there's nothing wrong with that: it's a strength of RDF.
> Even for extension modules the inability to add top level resources may
> cause awful hacks. Some examples
>
> - Annotations
>
> because the a:annotates property of annotea[1] points from the
> a:Annotation to the annotated Item the annotation can only be integrated
> using the undefined a:hasAnnotation (inverse of a:annotates).
Your items must have an rdf:about, so they must have URIs. There is no
reason, then, not to put the a:annotates properties in a second file:
you can even have an rdfs:seeAlso link from the Channel to the
annotation file.
Of course, the lack of inverse may be something that is going to be
neccesary or wanted in the future by others anyway, but you don't need
it for this use case.
> - foaf:maker
>
> the foaf:maker points to an anonymous resource, in RSS 1.1 its
> properties must be shown as xml-child-elements. Since multiple items may
> have the same maker the elements are referenced by nodeID. The xml would
> be cleaner if the expansion of the maker would not have to be
> arbitrarily associated to an item but serialized as a second element
> after the channel.
First, tools are going to have to understand a lot more about RDF than
any existing aggregator does to be able to understand these pointers, so
I personally feel that it is probably a better idea to just include
these pointers inside all the items, so that tools which only understand
XML as a tree (and not a graph) don't need lots of extra information
that's going to be RSS 1.* specific.
However, if you do want to go the RDF-specific route:
<item>
...
<foaf:maker><foaf:Person rdf:nodeID="crschmidt">
<foaf:name>Christopher Schmidt</foaf:name>
</foaf:maker>
</item>
<item>
...
<foaf:maker rdf:nodeID="crschmidt" />
</item>
This is valid RDF, says what you want to say - and requires no extra
external elements after the <Channel>. Additionally, if the maker of all
the items is the same as the channel, then you can simply include them
after the items as part of the Any production. Otherwise, you can just
include each new <foaf:Person> as they're needed, referencing them from
that point on.
Is there a use case that can't be solved via a method similar to these?
--
Christopher Schmidt
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/rss-dev/
<*> To unsubscribe from this group, send an email to:
[email protected]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/