- From: Danny Ayers <danny.ayers@gmail.com>
- Date: Tue, 16 Nov 2004 12:43:56 +0100
- To: rss-dev@yahoogroups.com
- Cc: randy@kbcafe.com, www-rdf-interest@w3.org
Randy Charles Morin has been putting together a Schematron-based
validator [0], aiming to cover all common syndication formats. A
specific issue has come up relating to the use of modules, and what
is valid as an attribute for a property. I'll try and answer based on
RDF/XML Syntax [1], corrections appreciated.
(The RSS 1.0 spec itself points to Leigh Dodds' Schematron Schema [2]
and validator for RSS 1.0, though my guess is that this precedes the
newer RDF/XML Syntax specs - Leigh?)
Randy asked (please forgive the unauthorised quotation):
> I see where other people are also using rdf:resource, including spots
> in the spec. Is it that Dublin Core RDF/XML allows for just the
> xml:lang and rdf:resource attribute or is any attribute in play?
I think these are the ones that cover 99% of the time, but there are others.
In general I believe you can also add xml:space, rdf:parseType,
rdf:datatype and rdf:ID to the list of possible attributes. (This
applies to any properties, not just those of Dublin Core).
Anything else?
An example of the RDF/XML angle is the material generated by the FOAF
output plugin [4] -
<dc:subject rdf:resource="http://dannyayers.com/archives/author/site-admin/skos.rdf#c1"/>
xml:lang comes as part of XML [3], along with xml:space.
I'll try and enumerate the other legal variations of RDF/XML that
might crop up around something like dc:subject, please tell me what I
missed.
Ok, so dc:subject is an rdf:Property (from the DC RDF Schema [5]),
and to fit in with RDF it must come between a subject resource and an
object literal or resource. That can happen in RDF/XML as:
1. Simple literals - the usual RSS case
<something rdf:about="http://blah.org">
<dc:subject>Stuff</dc:subject>
</something>
subject=http://blah.org
object="Stuff"
2. RDF resource - the FOAF Output case, adds an rdf:resource attribute
to the property element
<something rdf:about="http://blah.org">
<dc:subject rdf:resource="http://wwwww.org"/>
</something>
subject=http://blah.org
object=http://wwwww.org
(<something> might not have a URI, i.e. be a blank node)
I believe the following may lead to there being other XML attributes
in dc:subject, but (IMHO) are unlikely to appear in RSS:
3. Abbreviated form, dc:subject as attribute
<something rdf:about="http://blah.org" dc:subject="Stuff" />
subject=http://blah.org
object="Stuff"
4. Typed literals - adds an rdf:datatype attribute to the property element
<something rdf:about="http://blah.org">
<dc:subject
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Stuff</dc:subject>
</something>
subject=http://blah.org
object="Stuff"
5. Nested resources (there's an example of this in the Modules [6]
part of the RSS 1.0 spec)
<something>
<dc:subject>
<foaf:Document rdf:about="http://yaddayadda.org">
...
</foaf:Document>
</dc:subject>
</something>
6. Nested blank node
<something>
<dc:subject>
<foaf:Document>
...
</foaf:Document>
</dc:subject>
</something>
7. Omitted blank node - adds an rdf:parseType attribute to the property element
<something>
<dc:subject rdf:parseType="Resource">
<foaf:Document>
...
</foaf:Document>
</dc:subject>
</something>
8. XML Literal - adds an rdf:parseType attribute to the property element
<something>
<dc:subject rdf:parseType="Literal" xmlns:xhtml="http://wherever-it-is">
<xhtml:p>
...
</xhtml:p>
</dc:subject>
</something>
9. Collection - adds an rdf:parseType attribute to the property element
<something>
<dc:subject rdf:parseType="Collection" >
<foaf:Person><foaf:name>Tom</foaf:name></foaf:Person>
<foaf:Person><foaf:name>Dick</foaf:name></foaf:Person>
<foaf:Person><foaf:name>Harry</foaf:name></foaf:Person>
</dc:subject>
</something>
10. Reified statement - adds an rdf:ID attribute to the property element
<something>
<dc:subject rdf:ID="http://a-reference-to-this-node-elsewhere.org">Stuff</dc:subject>
</something>
I *think* that's it ;-)
On the meta-issue of validating RD/XML, I reckon danbri's "Missing
isn't broken" [7] is a good read...
Cheers,
Danny.
(blogged at http://dannyayers.com/archives/2004/11/16/rss-10-module-attributes/)
[0] http://www.kbcafe.com/rss/?guid=20041030111147
[1] http://www.w3.org/TR/rdf-syntax-grammar
[2] http://www.ldodds.com/rss_validator/1.0/
[3] http://www.w3.org/TR/REC-xml/
[4] http://www.wasab.dk/morten/blog/archives/2004/07/05/wordpress-plugin-foaf-output
[5] http://purl.org/dc/elements/1.1/
[6] http://web.resource.org/rss/1.0/modules/
[7] http://rdfweb.org/mt/foaflog/archives/000047.html
--
http://dannyayers.com
Received on Tuesday, 16 November 2004 11:43:58 UTC