Rename template.html to template.md, as it is a markdown-formatted document
authorGregg Kellogg <gregg@kellogg-assoc.com>
Wed, 27 Feb 2013 09:52:09 -0800
changeset 612 40f56f0618fc
parent 611 1efbfb138178
child 613 7fd8f3e24aa5
Rename template.html to template.md, as it is a markdown-formatted document
rdf-turtle/reports/README
rdf-turtle/reports/template.html
rdf-turtle/reports/template.md
--- a/rdf-turtle/reports/README	Wed Feb 27 09:45:52 2013 -0800
+++ b/rdf-turtle/reports/README	Wed Feb 27 09:52:09 2013 -0800
@@ -8,4 +8,4 @@
 
 earl-report --format json -o earl.jsonld *.ttl
 earl-report --json --format ttl -o earl.ttl earl.jsonld
-earl-report --json --format html --template template.html -o index.html earl.jsonld
+earl-report --json --format html --template template.md -o index.html earl.jsonld
--- a/rdf-turtle/reports/template.html	Wed Feb 27 09:45:52 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,404 +0,0 @@
--# This template is used for generating a rollup EARL report. It expects to be
--# called with a single _tests_ local with the following structure
--#
--#  {
--#    "@context": {...},
--#    "@id": "",
--#    "@type": "earl:Software",
--#    "name": "...",
--#    "bibRef": "[[...]]",
--#    "assertions": ["./rdf.rb-earl.ttl"],
--#    "testSubjects": [
--#      {
--#        "@id": "http://rubygems.org/gems/rdf-turtle",
--#        "@type": "earl:TestSubject",
--#        "name": "RDF::Turtle"
--#      },
--#      ...
--#    ],
--#    "tests": [{
--#      "@id": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/manifest.ttl#turtle-syntax-file-01",
--#      "@type": ["earl:TestCriterion", "earl:TestCase"],
--#      "title": "subm-test-00",
--#      "description": "Blank subject",
--#      "testAction": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/turtle-syntax-file-01.ttl",
--#      "testResult": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/turtle-syntax-file-01.out"
--#      "mode": "earl:automatic",
--#      "assertions": [
--#        {
--#          "@type": "earl:Assertion",
--#          "assertedBy": "http://greggkellogg.net/foaf#me",
--#          "test": "http://svn.apache.org/repos/asf/jena/Experimental/riot-reader/testing/RIOT/Lang/TurtleSubm/manifest.ttl#testeval00",
--#          "subject": "http://rubygems.org/gems/rdf-turtle",
--#          "result": {
--#            "@type": "earl:TestResult",
--#            "outcome": "earl:passed"
--#          }
--#        }
--#      ]
--#    }]
--#  }
-- require 'cgi'
-
-!!! 5
-%html{:prefix => "earl: http://www.w3.org/ns/earl# doap: http://usefulinc.com/ns/doap# mf: http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#"}
-  - subjects = tests['testSubjects']
-  %head
-    %meta{"http-equiv" => "Content-Type", :content => "text/html;charset=utf-8"}
-    %title
-      = tests['name']
-      Implementation Report
-    %script.remove{:type => "text/javascript", :src => "http://www.w3.org/Tools/respec/respec-w3c-common"}
-    :javascript
-      var respecConfig = {
-          // extend the bibliography entries
-          localBiblio: {
-              TURTLE: "Eric Prud'hommeaux, Gavin Carothers. <cite><a href=\"http://www.w3.org/TR/2013/CR-turtle-20130219/\">Turtle: Terse RDF Triple Language.</a></cite> W3C Candidate Recommendation 19 February 2013. URL: <a href=\"http://www.w3.org/TR/2013/CR-turtle-20130219/\">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>",
-              DOAP: "Ed Dumbill. <cite><a href=\"https://github.com/edumbill/doap/wiki\">Turtle: Terse RDF Triple Language.</a></cite> Community Specification. URL: <a href=\"https://github.com/edumbill/doap/wiki\">https://github.com/edumbill/doap/wiki</a>",
-          },
-
-          // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
-          specStatus:           "unofficial",
-          copyrightStart:       "2010",
-          doRDFa:               "1.1",
-
-          // the specification's short name, as in http://www.w3.org/TR/short-name/
-          shortName:            "turtle-earl",
-          //subtitle:             "Turtle Implementation Conformance Report",
-          // if you wish the publication date to be other than today, set this
-          publishDate:  "#{Time.now.strftime("%Y/%m/%d")}",
-
-          // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
-          // and its maturity status
-          //previousPublishDate:  "2011-10-23",
-          //previousMaturity:     "ED",
-          //previousDiffURI:      "http://json-ld.org/spec/ED/json-ld-syntax/20111023/index.html",
-          //diffTool:             "http://www.aptest.com/standards/htmldiff/htmldiff.pl",
-
-          // if there a publicly available Editor's Draft, this is the link
-          //edDraftURI:           "",
-
-          // if this is a LCWD, uncomment and set the end of its review period
-          // lcEnd: "2009-08-05",
-
-          // if you want to have extra CSS, append them to this list
-          // it is recommended that the respec.css stylesheet be kept
-          extraCSS:             [
-              "http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css"
-          ],
-
-          // editors, add as many as you like
-          // only "name" is required
-          editors:  [
-              { name: "Gregg Kellogg", url: "http://greggkellogg.net/",
-                company: "Kellogg Associates" },
-              { name: "Andy Seaborne",
-                company: "The Apache Software Foundation"}
-          ],
-
-          // authors, add as many as you like.
-          // This is optional, uncomment if you have authors as well as editors.
-          // only "name" is required. Same format as editors.
-          //authors:  [
-          //RDF Working Group],
-
-          // name of the WG
-          wg:           "RDF Working Group",
-
-          // URI of the public WG page
-          wgURI:        "http://www.w3.org/2011/rdf-wg/",
-
-          // name (with the @w3c.org) of the public mailing to which comments are due
-          wgPublicList: "public-rdf-comments",
-
-          // URI of the patent status for this WG, for Rec-track documents
-          // !!!! IMPORTANT !!!!
-          // This is important for Rec-track documents, do not copy a patent URI from a random
-          // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
-          // Team Contact.
-          wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46168/status",
-          alternateFormats: [
-            {uri: "earl.ttl", label: "Turtle"},
-            {uri: "earl.jsonld", label: "JSON-LD"}
-          ],
-      };
-    :css
-      span[property='dc:description'] { display: none; }
-      td.PASS { color: green; }
-      td.FAIL { color: red; }
-      table.report {
-        border-width: 1px;
-        border-spacing: 2px;
-        border-style: outset;
-        border-color: gray;
-        border-collapse: separate;
-        background-color: white;
-      }
-      table.report th {
-        border-width: 1px;
-        padding: 1px;
-        border-style: inset;
-        border-color: gray;
-        background-color: white;
-        -moz-border-radius: ;
-      }
-      table.report td {
-        border-width: 1px;
-        padding: 1px;
-        border-style: inset;
-        border-color: gray;
-        background-color: white;
-        -moz-border-radius: ;
-      }
-      tr.summary {font-weight: bold;}
-      td.passed-all {color: green;}
-      td.passed-most {color: darkorange;}
-      td.passed-some {color: red;}
-  %body{:prefix => "earl: http://www.w3.org/ns/earl# doap: http://usefulinc.com/ns/doap# mf: http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#"}
-    %section#abstract{:about => tests['@id'], :typeof => [tests['@type']].flatten.join(" ")}
-      %p
-        This document report test subject conformance for and related specifications for
-        %span{:property => "doap:name"}<=tests['name']
-        %span{:property => "dc:bibliographicCitation"}<
-          = tests['bibRef']
-        according to the requirements of the Evaluation and Report Language (EARL) 1.0 Schema [[EARL10-SCHEMA]].
-      %p
-        This report is also available in alternate formats:
-        %a{:href => "earl.ttl"}
-          Turtle
-        and
-        %a{:href => "earl.jsonld"}
-          JSON-LD
-    %section#sodt
-    %section
-      :markdown
-        ## Instructions for submitting implementation reports
-
-          Tests should be run using the test manifests defined in the 
-          [Test Manifests](#test-manifests) Section.
-
-          The assumed base URI for the tests is `<http://example/base/>` if needed.
-
-          Reports should be submitted in Turtle format to [public-rdf-comments@w3.org](public-rdf-comments@w3.org)
-          and include an `earl:Assertion`
-          for each test, referencing the test resource from the associated manifest
-          and the test subject being reported upon. An example test entry is be the following:
-
-              [ a earl:Assertion;
-                earl:assertedBy <http://greggkellogg.net/foaf#me>;
-                earl:subject <http://rubygems.org/gems/rdf-turtle>;
-                earl:test <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/manifest.ttl#turtle-syntax-file-01>;
-                earl:result [
-                  a earl:TestResult;
-                  earl:outcome earl:passed;
-                  dc:date "2013-02-22T15:12:30-08:00"^^xsd:dateTime];
-                earl:mode earl:automatic ] .
-
-          The Test Subject should be defined as a `doap:Project`, including the name,
-          homepage and developer(s) of the software (see [[DOAP]]). Optionally, including the
-          project description and programming language. An example test subject description is the following:
-
-              <http://rubygems.org/gems/rdf-turtle> a doap:Project, earl:TestSubject, earl:Software ;
-                doap:name          "RDF::Turtle" ;
-                doap:homepage      <http://ruby-rdf.github.com/rdf-turtle> ;
-                doap:license       <http://creativecommons.org/licenses/publicdomain/> ;
-                doap:description   "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
-                doap:created       "2011-08-29"^^xsd:date ;
-                doap:programming-language "Ruby" ;
-                doap:implements    <http://www.w3.org/TR/turtle/> ;
-                doap:category      <http://dbpedia.org/resource/Resource_Description_Framework>,
-                                   <http://dbpedia.org/resource/Ruby_(programming_language)> ;
-                doap:download-page <http://rubygems.org/gems/rdf-turtle> ;
-                doap:mailing-list  <http://lists.w3.org/Archives/Public/public-rdf-ruby/> ;
-                doap:bug-database  <http://github.com/ruby-rdf/rdf-turtle/issues> ;
-                doap:blog          <http://greggkellogg.net/> ;
-                doap:developer     <http://greggkellogg.net/foaf#me> ;
-                doap:maintainer    <http://greggkellogg.net/foaf#me> ;
-                doap:documenter    <http://greggkellogg.net/foaf#me> ;
-                foaf:maker         <http://greggkellogg.net/foaf#me> ;
-                dc:title           "RDF::Turtle" ;
-                dc:description     "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
-                dc:date            "2011-08-29"^^xsd:date ;
-                dc:creator         <http://greggkellogg.net/foaf#me> ;
-
-          The software developer, either an organization or one or more individuals SHOULD be
-          referenced from `doap:developer` using [[FOAF]]. For example:
-
-              <http://greggkellogg.net/foaf#me> a foaf:Person, earl:Assertor;
-                foaf:name "Gregg Kellogg";
-                foaf:title "Implementor";
-                foaf:homepage <http://greggkellogg.net/> .
-
-          See [Turtle Test Suite Wiki](http://www.w3.org/2011/rdf-wg/wiki/Turtle_Test_Suite)
-          for more information.
-    %section
-      - test_info = {}
-      - test_refs = {}
-      - subject_refs = {}
-      %h2
-        Test Manifests
-      - tests['entries'].each do |manifest|
-        - test_cases = manifest['entries']
-        %section{:typeof => manifest['@type'].join(" "), :resource => manifest['@id']}
-          %h2<=manifest['title']
-          - [manifest['description']].flatten.compact.each do |desc|
-            %p<
-              ~ CGI.escapeHTML desc
-          %table.report
-            - skip_subject = {}
-            - passed_tests = []
-            %tr
-              %th
-                Test
-              - subjects.each_with_index do |subject, index|
-                - subject_refs[subject['@id']] = "subj_#{index}"
-                -# If subject is untested for every test in this manifest, skip it
-                - skip_subject[subject['@id']] = manifest['entries'].all? {|t| t['assertions'][index]['result']['outcome'] == 'earl:untested'}
-                - unless skip_subject[subject['@id']]
-                  %th
-                    %a{:href => '#' + subject_refs[subject['@id']]}<=subject['name']
-            - test_cases.each do |test|
-              - tid = 'test_' + (test['@id'][0,2] == '_:' ? test['@id'][2..-1] : test['@id'].split('#').last)
-              - (test_info[tid] ||= []) << test
-              - test_refs[test['@id']] = tid
-              %tr{:rel => "mf:entries", :typeof => test['@type'].join(" "), :resource => test['@id'], :inlist => true}
-                %td
-                  %a{:href => "##{tid}"}<
-                    ~ CGI.escapeHTML test['title']
-                - test['assertions'].each_with_index do |assertion, ndx|
-                  - next if skip_subject[assertion['subject']]
-                  - pass_fail = assertion['result']['outcome'].split(':').last.upcase.sub(/(PASS|FAIL)ED$/, '\1')
-                  - passed_tests[ndx] = (passed_tests[ndx] || 0) + (pass_fail == 'PASS' ? 1 : 0)
-                  %td{:class => pass_fail, :property => "earl:assertions", :typeof => assertion['@type'], :inlist => true}
-                    - if assertion['assertedBy']
-                      %link{:property => "earl:assertedBy", :href => assertion['assertedBy']}
-                    %link{:property => "earl:test", :href => assertion['test']}
-                    %link{:property => "earl:subject", :href => assertion['subject']}
-                    - if assertion['mode']
-                      %link{:property => 'earl:mode', :href => assertion['mode']}
-                    %span{:property => "earl:result", :typeof => assertion['result']['@type']}
-                      %span{:property => 'earl:outcome', :resource => assertion['result']['outcome']}
-                        = pass_fail
-            %tr.summary
-              %td
-                = "Percentage passed out of #{manifest['entries'].length} Tests"
-              - passed_tests.compact.each do |r|
-                - pct = (r * 100.0) / manifest['entries'].length
-                %td{:class => (pct == 100.0 ? 'passed-all' : (pct >= 95.0 ? 'passed-most' : 'passed-some'))}
-                  = "#{'%.1f' % pct}%"
-    %section.appendix
-      %h2
-        Test Subjects
-      %p
-        This report was tested using the following test subjects:
-      %dl
-        - subjects.each_with_index do |subject, index|
-          %dt{:id => subject_refs[subject['@id']]}
-            %a{:href => subject['@id']}
-              %span{:about => subject['@id'], :property => "doap:name"}<= subject['name']
-          %dd{:property => "earl:testSubjects", :resource => subject['@id'], :typeof => [subject['@type']].flatten.join(" "), :inlist => true}
-            %dl
-              - if subject['doapDesc']
-                %dt= "Description"
-                %dd{:property => "doap:description", :lang => 'en'}<
-                  ~ CGI.escapeHTML subject['doapDesc']
-              - if subject['language']
-                %dt= "Programming Language"
-                %dd{:property => "doap:programming-language"}<
-                  ~ CGI.escapeHTML subject['language']
-              - if subject['homepage']
-                %dt= "Home Page"
-                %dd{:property => "doap:homepage"}
-                  %a{:href=> subject['homepage']}
-                    ~ CGI.escapeHTML subject['homepage']
-              - if subject['developer']
-                %dt= "Developer"
-                %dd{:rel => "doap:developer"}
-                  - subject['developer'].each do |dev|
-                    %div{:resource => dev['@id'], :typeof => [dev['@type']].flatten.join(" ")}
-                      - if dev.has_key?('@id')
-                        %a{:href => dev['@id']}
-                          %span{:property => "foaf:name"}<
-                            ~ CGI.escapeHTML dev['foaf:name']
-                      - else
-                        %span{:property => "foaf:name"}<
-                          ~ CGI.escapeHTML dev['foaf:name']
-                      - if dev['foaf:homepage']
-                        %dt
-                          Home Page
-                        %dd
-                          %a{:property => "foaf:homepage", :href=> dev['foaf:homepage']}
-                            ~ CGI.escapeHTML dev['foaf:homepage']
-              %dt
-                Test Suite Compliance
-              %dd
-                %table.report
-                  %tbody
-                    - tests['entries'].each do |manifest|
-                      - passed = manifest['entries'].select {|t| t['assertions'][index]['result']['outcome'] == 'earl:passed' }.length
-                      - next if passed == 0
-                      - total = manifest['entries'].length
-                      - pct = (passed * 100.0) / total
-                      %tr
-                        %td
-                          ~ manifest['title']
-                        %td{:class => (pct == 100.0 ? 'passed-all' : (pct >= 85.0 ? 'passed-most' : 'passed-some'))}
-                          = "#{passed}/#{total} (#{'%.1f' % pct}%)"
-    - unless tests['assertions'].empty?
-      %section.appendix{:rel => "earl:assertions"}
-        %h2
-          Individual Test Results
-        %p
-          Individual test results used to construct this report are available here:
-        %ul
-          - tests['assertions'].each do |file|
-            %li
-              %a.source{:href => file}<= file
-    %section.appendix
-      %h2
-        Test Definitions
-      %dl
-        - tests['entries'].each do |manifest|
-          %div{:property => "mf:entries", :inlist => true, :resource => manifest['@id']}
-            - manifest['entries'].each do |test|
-              %dt{:id => test_refs[test['@id']], :resource => test['@id']}
-                Test
-                %span{:property => "dc:title mf:name"}<
-                  ~ CGI.escapeHTML test['title']
-              %dd{:resource => test['@id']}
-                %p{:property => "dc:description", :lang => 'en'}<
-                  ~ CGI.escapeHTML test['description']
-                %pre{:class => "example actionDoc", :property => "mf:action", :resource => test['testAction'], :title => "#{test['title']} Input"}<
-                  ~ Kernel.open(test['testAction']) {|f| CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testAction']} not loaded"
-                - if test['testResult']
-                  %pre{:class => "example resultDoc", :property => "mf:result", :resource => test['testResult'], :title => "#{test['title']} Result"}<
-                    ~ Kernel.open(test['testResult']) {|f| CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testResult']} not loaded"
-    %section#appendix{:property => "earl:generatedBy", :resource => tests['generatedBy']['@id'], :typeof => tests['generatedBy']['@type']}
-      %h2
-        Report Generation Software
-      - doap = tests['generatedBy']
-      - rel = doap['release']
-      %p
-        This report generated by
-        %span{:property => "doap:name"}<
-          %a{:href => tests['generatedBy']['@id']}<
-            = doap['name']
-        %meta{:property => "doap:shortdesc", :content => doap['shortdesc'], :lang => 'en'}
-        %meta{:property => "doap:description", :content => doap['doapDesc'], :lang => 'en'}
-        version
-        %span{:property => "doap:release", :resource => rel['@id'], :typeof => 'doap:Version'}
-          %span{:property => "doap:revision"}<=rel['revision']
-          %meta{:property => "doap:name", :content => rel['name']}
-          %meta{:property => "doap:created", :content => rel['created'], :datatype => "xsd:date"}
-        an
-        %a{:property => "doap:license", :href => doap['license']}<="Unlicensed"
-        %span{:property => "doap:programming-language"}<="Ruby"
-        application. More information is available at
-        %a{:property => "doap:homepage", :href => doap['homepage']}<=doap['homepage']
-        = "."
-      %p{:property => "doap:developer", :resource => "http://greggkellogg.net/foaf#me", :typeof => "foaf:Person"}
-        This software is provided by
-        %a{:property => "foaf:homepage", :href => "http://greggkellogg.net/"}<
-          %span{:aboue => "http://greggkellogg.net/foaf#me", :property => "foaf:name"}<
-            Gregg Kellogg
-        in hopes that it might make the lives of conformance testers easier.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rdf-turtle/reports/template.md	Wed Feb 27 09:52:09 2013 -0800
@@ -0,0 +1,404 @@
+-# This template is used for generating a rollup EARL report. It expects to be
+-# called with a single _tests_ local with the following structure
+-#
+-#  {
+-#    "@context": {...},
+-#    "@id": "",
+-#    "@type": "earl:Software",
+-#    "name": "...",
+-#    "bibRef": "[[...]]",
+-#    "assertions": ["./rdf.rb-earl.ttl"],
+-#    "testSubjects": [
+-#      {
+-#        "@id": "http://rubygems.org/gems/rdf-turtle",
+-#        "@type": "earl:TestSubject",
+-#        "name": "RDF::Turtle"
+-#      },
+-#      ...
+-#    ],
+-#    "tests": [{
+-#      "@id": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/manifest.ttl#turtle-syntax-file-01",
+-#      "@type": ["earl:TestCriterion", "earl:TestCase"],
+-#      "title": "subm-test-00",
+-#      "description": "Blank subject",
+-#      "testAction": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/turtle-syntax-file-01.ttl",
+-#      "testResult": "http://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/turtle-syntax-file-01.out"
+-#      "mode": "earl:automatic",
+-#      "assertions": [
+-#        {
+-#          "@type": "earl:Assertion",
+-#          "assertedBy": "http://greggkellogg.net/foaf#me",
+-#          "test": "http://svn.apache.org/repos/asf/jena/Experimental/riot-reader/testing/RIOT/Lang/TurtleSubm/manifest.ttl#testeval00",
+-#          "subject": "http://rubygems.org/gems/rdf-turtle",
+-#          "result": {
+-#            "@type": "earl:TestResult",
+-#            "outcome": "earl:passed"
+-#          }
+-#        }
+-#      ]
+-#    }]
+-#  }
+- require 'cgi'
+
+!!! 5
+%html{:prefix => "earl: http://www.w3.org/ns/earl# doap: http://usefulinc.com/ns/doap# mf: http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#"}
+  - subjects = tests['testSubjects']
+  %head
+    %meta{"http-equiv" => "Content-Type", :content => "text/html;charset=utf-8"}
+    %title
+      = tests['name']
+      Implementation Report
+    %script.remove{:type => "text/javascript", :src => "http://www.w3.org/Tools/respec/respec-w3c-common"}
+    :javascript
+      var respecConfig = {
+          // extend the bibliography entries
+          localBiblio: {
+              TURTLE: "Eric Prud'hommeaux, Gavin Carothers. <cite><a href=\"http://www.w3.org/TR/2013/CR-turtle-20130219/\">Turtle: Terse RDF Triple Language.</a></cite> W3C Candidate Recommendation 19 February 2013. URL: <a href=\"http://www.w3.org/TR/2013/CR-turtle-20130219/\">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>",
+              DOAP: "Ed Dumbill. <cite><a href=\"https://github.com/edumbill/doap/wiki\">Turtle: Terse RDF Triple Language.</a></cite> Community Specification. URL: <a href=\"https://github.com/edumbill/doap/wiki\">https://github.com/edumbill/doap/wiki</a>",
+          },
+
+          // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+          specStatus:           "unofficial",
+          copyrightStart:       "2010",
+          doRDFa:               "1.1",
+
+          // the specification's short name, as in http://www.w3.org/TR/short-name/
+          shortName:            "turtle-earl",
+          //subtitle:             "Turtle Implementation Conformance Report",
+          // if you wish the publication date to be other than today, set this
+          publishDate:  "#{Time.now.strftime("%Y/%m/%d")}",
+
+          // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
+          // and its maturity status
+          //previousPublishDate:  "2011-10-23",
+          //previousMaturity:     "ED",
+          //previousDiffURI:      "http://json-ld.org/spec/ED/json-ld-syntax/20111023/index.html",
+          //diffTool:             "http://www.aptest.com/standards/htmldiff/htmldiff.pl",
+
+          // if there a publicly available Editor's Draft, this is the link
+          //edDraftURI:           "",
+
+          // if this is a LCWD, uncomment and set the end of its review period
+          // lcEnd: "2009-08-05",
+
+          // if you want to have extra CSS, append them to this list
+          // it is recommended that the respec.css stylesheet be kept
+          extraCSS:             [
+              "http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css"
+          ],
+
+          // editors, add as many as you like
+          // only "name" is required
+          editors:  [
+              { name: "Gregg Kellogg", url: "http://greggkellogg.net/",
+                company: "Kellogg Associates" },
+              { name: "Andy Seaborne",
+                company: "The Apache Software Foundation"}
+          ],
+
+          // authors, add as many as you like.
+          // This is optional, uncomment if you have authors as well as editors.
+          // only "name" is required. Same format as editors.
+          //authors:  [
+          //RDF Working Group],
+
+          // name of the WG
+          wg:           "RDF Working Group",
+
+          // URI of the public WG page
+          wgURI:        "http://www.w3.org/2011/rdf-wg/",
+
+          // name (with the @w3c.org) of the public mailing to which comments are due
+          wgPublicList: "public-rdf-comments",
+
+          // URI of the patent status for this WG, for Rec-track documents
+          // !!!! IMPORTANT !!!!
+          // This is important for Rec-track documents, do not copy a patent URI from a random
+          // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
+          // Team Contact.
+          wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46168/status",
+          alternateFormats: [
+            {uri: "earl.ttl", label: "Turtle"},
+            {uri: "earl.jsonld", label: "JSON-LD"}
+          ],
+      };
+    :css
+      span[property='dc:description'] { display: none; }
+      td.PASS { color: green; }
+      td.FAIL { color: red; }
+      table.report {
+        border-width: 1px;
+        border-spacing: 2px;
+        border-style: outset;
+        border-color: gray;
+        border-collapse: separate;
+        background-color: white;
+      }
+      table.report th {
+        border-width: 1px;
+        padding: 1px;
+        border-style: inset;
+        border-color: gray;
+        background-color: white;
+        -moz-border-radius: ;
+      }
+      table.report td {
+        border-width: 1px;
+        padding: 1px;
+        border-style: inset;
+        border-color: gray;
+        background-color: white;
+        -moz-border-radius: ;
+      }
+      tr.summary {font-weight: bold;}
+      td.passed-all {color: green;}
+      td.passed-most {color: darkorange;}
+      td.passed-some {color: red;}
+  %body{:prefix => "earl: http://www.w3.org/ns/earl# doap: http://usefulinc.com/ns/doap# mf: http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#"}
+    %section#abstract{:about => tests['@id'], :typeof => [tests['@type']].flatten.join(" ")}
+      %p
+        This document report test subject conformance for and related specifications for
+        %span{:property => "doap:name"}<=tests['name']
+        %span{:property => "dc:bibliographicCitation"}<
+          = tests['bibRef']
+        according to the requirements of the Evaluation and Report Language (EARL) 1.0 Schema [[EARL10-SCHEMA]].
+      %p
+        This report is also available in alternate formats:
+        %a{:href => "earl.ttl"}
+          Turtle
+        and
+        %a{:href => "earl.jsonld"}
+          JSON-LD
+    %section#sodt
+    %section
+      :markdown
+        ## Instructions for submitting implementation reports
+
+          Tests should be run using the test manifests defined in the 
+          [Test Manifests](#test-manifests) Section.
+
+          The assumed base URI for the tests is `<http://example/base/>` if needed.
+
+          Reports should be submitted in Turtle format to [public-rdf-comments@w3.org](public-rdf-comments@w3.org)
+          and include an `earl:Assertion`
+          for each test, referencing the test resource from the associated manifest
+          and the test subject being reported upon. An example test entry is be the following:
+
+              [ a earl:Assertion;
+                earl:assertedBy <http://greggkellogg.net/foaf#me>;
+                earl:subject <http://rubygems.org/gems/rdf-turtle>;
+                earl:test <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/tests-ttl/manifest.ttl#turtle-syntax-file-01>;
+                earl:result [
+                  a earl:TestResult;
+                  earl:outcome earl:passed;
+                  dc:date "2013-02-22T15:12:30-08:00"^^xsd:dateTime];
+                earl:mode earl:automatic ] .
+
+          The Test Subject should be defined as a `doap:Project`, including the name,
+          homepage and developer(s) of the software (see [[DOAP]]). Optionally, including the
+          project description and programming language. An example test subject description is the following:
+
+              <http://rubygems.org/gems/rdf-turtle> a doap:Project, earl:TestSubject, earl:Software ;
+                doap:name          "RDF::Turtle" ;
+                doap:homepage      <http://ruby-rdf.github.com/rdf-turtle> ;
+                doap:license       <http://creativecommons.org/licenses/publicdomain/> ;
+                doap:description   "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
+                doap:created       "2011-08-29"^^xsd:date ;
+                doap:programming-language "Ruby" ;
+                doap:implements    <http://www.w3.org/TR/turtle/> ;
+                doap:category      <http://dbpedia.org/resource/Resource_Description_Framework>,
+                                   <http://dbpedia.org/resource/Ruby_(programming_language)> ;
+                doap:download-page <http://rubygems.org/gems/rdf-turtle> ;
+                doap:mailing-list  <http://lists.w3.org/Archives/Public/public-rdf-ruby/> ;
+                doap:bug-database  <http://github.com/ruby-rdf/rdf-turtle/issues> ;
+                doap:blog          <http://greggkellogg.net/> ;
+                doap:developer     <http://greggkellogg.net/foaf#me> ;
+                doap:maintainer    <http://greggkellogg.net/foaf#me> ;
+                doap:documenter    <http://greggkellogg.net/foaf#me> ;
+                foaf:maker         <http://greggkellogg.net/foaf#me> ;
+                dc:title           "RDF::Turtle" ;
+                dc:description     "RDF::Turtle is an Turtle reader/writer for the RDF.rb library suite."@en ;
+                dc:date            "2011-08-29"^^xsd:date ;
+                dc:creator         <http://greggkellogg.net/foaf#me> ;
+
+          The software developer, either an organization or one or more individuals SHOULD be
+          referenced from `doap:developer` using [[FOAF]]. For example:
+
+              <http://greggkellogg.net/foaf#me> a foaf:Person, earl:Assertor;
+                foaf:name "Gregg Kellogg";
+                foaf:title "Implementor";
+                foaf:homepage <http://greggkellogg.net/> .
+
+          See [Turtle Test Suite Wiki](http://www.w3.org/2011/rdf-wg/wiki/Turtle_Test_Suite)
+          for more information.
+    %section
+      - test_info = {}
+      - test_refs = {}
+      - subject_refs = {}
+      %h2
+        Test Manifests
+      - tests['entries'].each do |manifest|
+        - test_cases = manifest['entries']
+        %section{:typeof => manifest['@type'].join(" "), :resource => manifest['@id']}
+          %h2<=manifest['title']
+          - [manifest['description']].flatten.compact.each do |desc|
+            %p<
+              ~ CGI.escapeHTML desc
+          %table.report
+            - skip_subject = {}
+            - passed_tests = []
+            %tr
+              %th
+                Test
+              - subjects.each_with_index do |subject, index|
+                - subject_refs[subject['@id']] = "subj_#{index}"
+                -# If subject is untested for every test in this manifest, skip it
+                - skip_subject[subject['@id']] = manifest['entries'].all? {|t| t['assertions'][index]['result']['outcome'] == 'earl:untested'}
+                - unless skip_subject[subject['@id']]
+                  %th
+                    %a{:href => '#' + subject_refs[subject['@id']]}<=subject['name']
+            - test_cases.each do |test|
+              - tid = 'test_' + (test['@id'][0,2] == '_:' ? test['@id'][2..-1] : test['@id'].split('#').last)
+              - (test_info[tid] ||= []) << test
+              - test_refs[test['@id']] = tid
+              %tr{:rel => "mf:entries", :typeof => test['@type'].join(" "), :resource => test['@id'], :inlist => true}
+                %td
+                  %a{:href => "##{tid}"}<
+                    ~ CGI.escapeHTML test['title']
+                - test['assertions'].each_with_index do |assertion, ndx|
+                  - next if skip_subject[assertion['subject']]
+                  - pass_fail = assertion['result']['outcome'].split(':').last.upcase.sub(/(PASS|FAIL)ED$/, '\1')
+                  - passed_tests[ndx] = (passed_tests[ndx] || 0) + (pass_fail == 'PASS' ? 1 : 0)
+                  %td{:class => pass_fail, :property => "earl:assertions", :typeof => assertion['@type'], :inlist => true}
+                    - if assertion['assertedBy']
+                      %link{:property => "earl:assertedBy", :href => assertion['assertedBy']}
+                    %link{:property => "earl:test", :href => assertion['test']}
+                    %link{:property => "earl:subject", :href => assertion['subject']}
+                    - if assertion['mode']
+                      %link{:property => 'earl:mode', :href => assertion['mode']}
+                    %span{:property => "earl:result", :typeof => assertion['result']['@type']}
+                      %span{:property => 'earl:outcome', :resource => assertion['result']['outcome']}
+                        = pass_fail
+            %tr.summary
+              %td
+                = "Percentage passed out of #{manifest['entries'].length} Tests"
+              - passed_tests.compact.each do |r|
+                - pct = (r * 100.0) / manifest['entries'].length
+                %td{:class => (pct == 100.0 ? 'passed-all' : (pct >= 95.0 ? 'passed-most' : 'passed-some'))}
+                  = "#{'%.1f' % pct}%"
+    %section.appendix
+      %h2
+        Test Subjects
+      %p
+        This report was tested using the following test subjects:
+      %dl
+        - subjects.each_with_index do |subject, index|
+          %dt{:id => subject_refs[subject['@id']]}
+            %a{:href => subject['@id']}
+              %span{:about => subject['@id'], :property => "doap:name"}<= subject['name']
+          %dd{:property => "earl:testSubjects", :resource => subject['@id'], :typeof => [subject['@type']].flatten.join(" "), :inlist => true}
+            %dl
+              - if subject['doapDesc']
+                %dt= "Description"
+                %dd{:property => "doap:description", :lang => 'en'}<
+                  ~ CGI.escapeHTML subject['doapDesc']
+              - if subject['language']
+                %dt= "Programming Language"
+                %dd{:property => "doap:programming-language"}<
+                  ~ CGI.escapeHTML subject['language']
+              - if subject['homepage']
+                %dt= "Home Page"
+                %dd{:property => "doap:homepage"}
+                  %a{:href=> subject['homepage']}
+                    ~ CGI.escapeHTML subject['homepage']
+              - if subject['developer']
+                %dt= "Developer"
+                %dd{:rel => "doap:developer"}
+                  - subject['developer'].each do |dev|
+                    %div{:resource => dev['@id'], :typeof => [dev['@type']].flatten.join(" ")}
+                      - if dev.has_key?('@id')
+                        %a{:href => dev['@id']}
+                          %span{:property => "foaf:name"}<
+                            ~ CGI.escapeHTML dev['foaf:name']
+                      - else
+                        %span{:property => "foaf:name"}<
+                          ~ CGI.escapeHTML dev['foaf:name']
+                      - if dev['foaf:homepage']
+                        %dt
+                          Home Page
+                        %dd
+                          %a{:property => "foaf:homepage", :href=> dev['foaf:homepage']}
+                            ~ CGI.escapeHTML dev['foaf:homepage']
+              %dt
+                Test Suite Compliance
+              %dd
+                %table.report
+                  %tbody
+                    - tests['entries'].each do |manifest|
+                      - passed = manifest['entries'].select {|t| t['assertions'][index]['result']['outcome'] == 'earl:passed' }.length
+                      - next if passed == 0
+                      - total = manifest['entries'].length
+                      - pct = (passed * 100.0) / total
+                      %tr
+                        %td
+                          ~ manifest['title']
+                        %td{:class => (pct == 100.0 ? 'passed-all' : (pct >= 85.0 ? 'passed-most' : 'passed-some'))}
+                          = "#{passed}/#{total} (#{'%.1f' % pct}%)"
+    - unless tests['assertions'].empty?
+      %section.appendix{:rel => "earl:assertions"}
+        %h2
+          Individual Test Results
+        %p
+          Individual test results used to construct this report are available here:
+        %ul
+          - tests['assertions'].each do |file|
+            %li
+              %a.source{:href => file}<= file
+    %section.appendix
+      %h2
+        Test Definitions
+      %dl
+        - tests['entries'].each do |manifest|
+          %div{:property => "mf:entries", :inlist => true, :resource => manifest['@id']}
+            - manifest['entries'].each do |test|
+              %dt{:id => test_refs[test['@id']], :resource => test['@id']}
+                Test
+                %span{:property => "dc:title mf:name"}<
+                  ~ CGI.escapeHTML test['title']
+              %dd{:resource => test['@id']}
+                %p{:property => "dc:description", :lang => 'en'}<
+                  ~ CGI.escapeHTML test['description']
+                %pre{:class => "example actionDoc", :property => "mf:action", :resource => test['testAction'], :title => "#{test['title']} Input"}<
+                  ~ Kernel.open(test['testAction']) {|f| CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testAction']} not loaded"
+                - if test['testResult']
+                  %pre{:class => "example resultDoc", :property => "mf:result", :resource => test['testResult'], :title => "#{test['title']} Result"}<
+                    ~ Kernel.open(test['testResult']) {|f| CGI.escapeHTML(f.read).gsub(/\n/, '<br/>')} rescue "#{test['testResult']} not loaded"
+    %section#appendix{:property => "earl:generatedBy", :resource => tests['generatedBy']['@id'], :typeof => tests['generatedBy']['@type']}
+      %h2
+        Report Generation Software
+      - doap = tests['generatedBy']
+      - rel = doap['release']
+      %p
+        This report generated by
+        %span{:property => "doap:name"}<
+          %a{:href => tests['generatedBy']['@id']}<
+            = doap['name']
+        %meta{:property => "doap:shortdesc", :content => doap['shortdesc'], :lang => 'en'}
+        %meta{:property => "doap:description", :content => doap['doapDesc'], :lang => 'en'}
+        version
+        %span{:property => "doap:release", :resource => rel['@id'], :typeof => 'doap:Version'}
+          %span{:property => "doap:revision"}<=rel['revision']
+          %meta{:property => "doap:name", :content => rel['name']}
+          %meta{:property => "doap:created", :content => rel['created'], :datatype => "xsd:date"}
+        an
+        %a{:property => "doap:license", :href => doap['license']}<="Unlicensed"
+        %span{:property => "doap:programming-language"}<="Ruby"
+        application. More information is available at
+        %a{:property => "doap:homepage", :href => doap['homepage']}<=doap['homepage']
+        = "."
+      %p{:property => "doap:developer", :resource => "http://greggkellogg.net/foaf#me", :typeof => "foaf:Person"}
+        This software is provided by
+        %a{:property => "foaf:homepage", :href => "http://greggkellogg.net/"}<
+          %span{:aboue => "http://greggkellogg.net/foaf#me", :property => "foaf:name"}<
+            Gregg Kellogg
+        in hopes that it might make the lives of conformance testers easier.