ZedAI Annotation Proposal
From zedwiki
Contents |
Summary
We are suggesting that there should not be a separate <prodnote> element; rather, we use <annotation> and define a number of types of annotations based on the role of the person who has added the information -- author, editor, translator, republisher, etc.
In addition to the role, it will be possible (but optional) to mark up specifically which individual or organization is responsible for the content; this authorship attribution is done in a way that could apply to any element, not just annotations.
Finally, we are suggesting that in order to establish the connection between annotation and the text that it is commenting on, rather than using an @annoref attribute that points from the text to the annotation, we use an @about attribute on the annotation that points to the text.
All three of these bits of information -- role of annotator, specific author, and text connection -- are specified in a manner consistent with RDFa, so that any RDFa processing tool can pull out those bits of information from the document without any additional knowledge of the DAISY spec.
Simple Example
Here is what a basic "prodnote" type annotation (eg, additional information added by a republisher) might look like.
<p id="p1">This is book content</p>
<annotation about="#p1" property="daisy:republisher-anno">
Some additional information about that paragraph.
</annotation>
Explanation
The paragraph is original to the book. Its markup is clean, needing only an ID.
The annotation element has two attributes:
- about establishes the reference to the paragraph.
- property contains a daisy-namespaced keyword, understood by DAISY marker-uppers as the way to designate a republishers' note, and understood by RDFa as an RDF property that names the type of relationship between two objects (the paragraph and the annotation).
Marisa/Markus note: in chat we had used @rel, not @property. But that turns out not to be valid RDFa. @property can be used with CDATA as the object, but @rel can apparently only be used with @href as the object.
Detailed Proposal
Defined Properties
We define a set of DAISY-namespaced CURIEs which can be used as the @property attribute of annotations. The list is something like this:
- author-anno
- editor-anno
- commentator-anno
- translator-anno
- republisher-anno
The annotation element:
- Use @about attribute to point to the element being commented on in the annotation (could be a paragraph, object, span, etc)
- Use @property with one of the CURIEs listed above to specify the type of annotation. Profiles or power users could define their own additional types.
Open question: are these attributes required or optional? If optional, how do we interpret the case where they are not specified?
Marisa response: I think they should be required. Otherwise, an RDFa processor won't know how to interpret them. I think it would be a mistake to only use part of RDFa, e.g., to require @about and have @property be optional.
Specifying authorship
Optionally RDFa can be used to specify in detail the authorship of various items, including annotations. We'll recommend that this be done in the <head> section using <meta> elements. We use the Dublin Core property dc:creator.
An example of such an element:
<meta about="#rfbd" rel="dc:creator" href="#a1"/>
Which would be interpreted to mean that the organization described by an element with ID "rfbd" was the "creator" of the element (presumably annotation) with ID "a1".
Marisa/Markus note: we wanted href="#a1 #a2..." but there does not seem to be any way to specify a list of URIs as the subject or object of the triple. At least I can't find it when I look at http://www.w3.org/TR/rdfa-syntax/
Marisa comment: That's a shame. I don't see it in the RDFa spec either. In this section, it looks like some attributes are allowed to contain a whitespace-separated list of values, but @about isn't one of them.
Full Example
This is an HTML example, should be re-cast as valid ZedAI Book:
<html version="XHTML+RDFa 1.0" xmlns="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:daisy="http://daisy.org/terms/">
<head>
<title>RDFa Test</title>
<meta about="#cast" rel="dc:creator" href="#a1"/>
<meta about="#cast" rel="dc:creator" href="#a2"/>
</head>
<body>
<p id="cast" about="#cast" typeof="dc:Agent">
This book was republished by
<span property="dc:identifier">CAST, Inc.</span>.
</p>
<p id="p1">This is book content</p>
<annotation id="a1" about="#p1" property="daisy:republisher-anno">
An annotation by CAST.
</annotation>
<img src="foo.gif" alt="An image" id="img1"/>
<annotation id="a2" about="#img1" property="daisy:republisher-anno">
An annotation of the image.
</annotation>
</body>
</html>
When I run this through localRDFa.py, I get the following triples (<subject> <predicate> <object>):
<annotation.html#cast> <http://purl.org/dc/terms/creator> <annotation.html#a2>.
<annotation.html#cast> <http://purl.org/dc/terms/creator> <annotation.html#a1>.
<annotation.html#cast> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://purl.org/dc/terms/Agent>.
<annotation.html#cast> <http://purl.org/dc/terms/identifier> "CAST, Inc.".
<annotation.html#p1> <http://daisy.org/terms/republisher-anno> """
An annotation by CAST.
""".
<annotation.html#img1> <http://daisy.org/terms/republisher-anno> """
An annotation of the image.
""".
