Schema.org authors: relate properties to the right context
authorDan Scott <dscott@laurentian.ca>
Sun, 25 Aug 2013 04:41:37 +0000 (00:41 -0400)
committerBen Shum <bshum@biblio.org>
Mon, 26 Aug 2013 16:16:53 +0000 (12:16 -0400)
While the approach of using the existing <a href> to launch a new search
based on the author name was workable, it may have been confusing for
schema.org processors such as Google Rich Snippets who expected that URI
to identify a resource for the author, not a set of search results.

Using @resource / @about attribute pairing, and wrapping the whole type
in an extra <span> element, enables us to avoid associating the
properties within the <a href> with the implicitly chained type.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/src/templates/opac/parts/record/authors.tt2

index 6d25b3c..a13843d 100644 (file)
@@ -2,6 +2,7 @@
 
 PROCESS "opac/parts/relators.tt2";
 
+author_cnt = 0;
 authors = [
     {
         type => 'author', 
@@ -24,9 +25,11 @@ authors = [
 
 BLOCK build_author_links;
     FOR node IN ctx.marc_xml.findnodes(xpath);
+        author_cnt = author_cnt + 1;
+        contrib_ref = '#schemacontrib' _ author_cnt;
+        iprop = '';
         term = '';
         qterm = '';
-        iprop = '';
         tlabel = '';
         birthdate = '';
         deathdate = '';
@@ -81,17 +84,17 @@ BLOCK build_author_links;
                 iprop = ' typeOf="Organization" property="contributor"';
             END;
         END;
-        '<a href="' _ url _ '"' _ iprop _ '>';
-        IF iprop; '<span property="name">'; END;
+        '<span' _ iprop _ ' resource="' _ contrib_ref _ '"><a href="' _ url _ '">';
+        IF iprop; '<span property="name" about="' _ contrib_ref _ '">'; END;
         term.replace('^\s+', '');
         IF iprop; '</span>'; END;
         IF birthdate;
-            ' <span property="birthDate">' _ birthdate _ '</span>-';
+            ' <span property="birthDate" about="' _ contrib_ref _ '">' _ birthdate _ '</span>-';
         END;
         IF deathdate;
-            '<span property="deathDate">' _ deathdate _ '</span>';
+            '<span property="deathDate" about="' _ contrib_ref _ '">' _ deathdate _ '</span>';
         END;
-        '</a>';
+        '</a>'; # End search link
         FOREACH link880 IN graphics;
             diratt = '';
             IF link880.dir;
@@ -101,7 +104,8 @@ BLOCK build_author_links;
             link880.value | html;
             '</span>';
         END;
-        ' (' _ author_type _ '). ';
+        ' (<span property="description" about="' _ contrib_ref _ '">' _ author_type _ '</span>). ';
+        '</span>'; # End author span
     END;
 END;
 %]