Re: Proposal: deprecate mod_link (was Re: Re: multiple Links)
Ken MacLeod <ken-VbOJbV3qneKf+c8Povm/[email protected]>
| Newsgroups | gmane.network.syndication.rss.devel |
|---|---|
| Message-ID | <[email protected]> |
"Randy Morin" <[email protected]> writes: > What's the alternate (pun) solution? How would you do a generic > <link> in rss1.0? Take a look at the bottom of Aaron's reply, http://groups.yahoo.com/group/rss-dev/message/4325 Aaron wrote: AS> Please recast it as RDF. Your example: AS> <l:link l:rel="http://purl.org/rss/1.0/modules/link/#alternate" AS> l:type="application/rss+xml" AS> l:title="What's New on Example (French)" AS> l:lang="fr" AS> rdf:resource="http://www.example.org/index-fr.rss"/> AS> should be: AS> <l:alternate rdf:resource="http://www.example.org/index-fr.rss" AS> dc:format="application/rss+xml" AS> dc:title="What's New on Example (French)" AS> dc:language="fr" /> I'm gonna try to stay out of the abstract and stick with the concrete, which "hides" some concepts that might give an "Aha!" but also might make things ramble. I do, however, have to explain, in RDF terms, why even the *model* of the Link module is wrong. First, a basic RDF link: <atom:service.feed rdf:resource="http://example.org/feed.atom"/> This indicates that the RDF subject (not shown, just assume it's the resource this property is attached to) has a "feed" property, and that representation of the "feed" property resource is at 'feed.atom'. We know this because that's the definition of atom:service.feed documented somewhere else. Every other bit of XML within that element or its children is about the linked resource, 'feed.atom'. That's because the above syntax is a shorthand for, <atom:service.feed> <rdf:Description rdf:about="http://example.org/feed.atom"/> </atom:service.feed> After its basic premise (RDF doesn't have links), the second biggest problem with the Link module is that it presumes that the properties l:title, l:rel, l:type are about the *link* (the property), when the RDF model says they are about the resource *referenced* by the property (the object URI). Literally, the above Link example translates to: <l:link> <rdf:Description rdf:about="http://www.example.org/index-fr.rss"> <l:type>application/rss+xml</l:type> <l:title>What's New on Example (French)</l:title> <l:lang>fr</l:lang> <l:rel>http://purl.org/rss/1.0/modules/link/#alternate</l:rel> </rdf:Description> </l:link> Here, l:type, l:title, and l:lang actually look quite appropriate as properties of 'index-fr.rss'. It's the l:rel that is out of place, because it's not a property of 'index-fr.rss', but somehow a property of the l:link from the subject (channel) and 'index-fr.rss'. So, if we switch that around and use the relation as the property name, add in reusing existing vocabularies, and you get the alternative. <atom:service.feed> <rdf:Description rdf:about="http://www.example.org/index-fr.rss"> <dc:format>application/rss+xml</dc:format> <dc:title>What's New on Example (French)</dc:title> <dc:language>fr</dc:language> </rdf:Description> </atom:service.feed> Noting the shorthand mentioned earlier, this is also: <atom:service.feed rdf:resource="http://www.example.org/index-fr.rss" dc:format="application/rss+xml" dc:title="What's New on Example (French)" dc:language="fr" /> Every relation in RDF is a generic link, and like the 'rel' attribute in Atom and HTML, it's the property name that tells you what you can do with the relation. -- Ken P.S. I understand that a follow-on discussion could happen about what constitutes a "generic link", but the protracted discussion on atom-syntax resolved that there's no such thing as a "generic link", it's just that some people feel more comfortable "extending" a syntax at a bottlneck point where they believe they don't have to create a namespace or URI and new XML elements. RDF says, "get past it, it's simpler when you do". 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/