[contents]


Abstract

This document describes the formal schema of the Evaluation and Report Language (EARL) 1.0. The Evaluation and Report Language is a standardized format to express test results. The primary motivation for developing this language is to facilitate the exchange of test results between Web accessibility evaluation tools in a vendor neutral and platform independent format. It also provides reusable vocabulary for generic Web quality assurance and validation purposes. While this document focuses on the technical details of the specification, a companion document describes the motivations for EARL and provides a tutorial introduction to its use. [Editor's note: link EARL 1.0 Guide once available.]

Status of this document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

The Evaluation and Repair Tools Working Group (ERT WG) encourages feedback about this document, Evaluation and Report Language (EARL) 1.0 Schema, by Web developers and researchers who have interest in software-supported evaluation and validation of Web sites. In particular, the group is looking for feedback about how robust and unambiguous the schema is, and how well it addresses content available on the Web. Specific questions are also highlighted within the relevant sections of this document.

The purpose of the Evaluation and Report Language (EARL) 1.0 Schema is to define a common vocabulary to express test results. It is intended as one part of a two-part replacement for the previous EARL 1.0 Working Draft of 6 December 2002. It meets the requirements specified in the Requirements for the Evaluation and Report Language (EARL) 1.0, and incorporates change requests received since the December 2002 Working Draft. While this document focuses on the technical details of the specification, a companion document describes the motivations for EARL and provides a tutorial introduction to its use. [Editor's note: link EARL 1.0 Guide once available.]

Please send comments to the mailing list of the ERT WG. The archives for this list are publicly available.

This is a W3C Working Draft of the Evaluation and Report Language (EARL) 1.0 Schema. This document will be published and maintained as a W3C Recommendation after review and refinement. Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

This document was produced under the 5 February 2004 W3C Patent Policy. The Working Group maintains a public list of patent disclosures relevant to this document; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy.

This document has been produced as part of the W3C Web Accessibility Initiative (WAI). The goals of the Evaluation and Repair Tools Working Group (ERT WG) are discussed in the Working Group charter. The ERT WG is part of the WAI Technical Activity.


Table of Contents

  1. Introduction (Non-Normative)
  2. Core Vocabulary
  3. Extensibility
  4. Conformance

Appendices

  1. EARL 1.0 Schema in RDF/XML
  2. EARL 1.0 Schema in N3 (Non-Normative)
  3. EARL 1.0 Terms (Non-Normative)
  4. Document Changes (Non-Normative)
  5. References (Non-Normative)
  6. Contributors (Non-Normative)

1. Introduction (Non-Normative)

[Editor's note: this section will be synchronized with the EARL 1.0 Guide as it is being developed.]

The Evaluation and Report Language (EARL) is a format to express test results. Test results include bug reports, test suite evaluations, and conformance claims. The test subject might be a Web site, an authoring tool, a user agent or some other entity. Thus, EARL is flexible. It enables any person, entity, or organization to state test results for any thing tested against any set of criteria.

Stating test results in EARL creates a variety of opportunities. The data can be:

A companion document to this specification is intended to provide more introductory material and explanation of the use cases for EARL.

1.1. Structure of EARL Results (Non-Normative)

EARL statements contain the following information:

The context information
This can include information about who or what ran the test, the date the test was run, and other information about the test was performed.
The test subject
This may include: Web pages, tools (e.g. accessibility checkers, validators), and user agents
The result
Did the test subject pass or fail the test? How certain can we be?
Test criteria
What are we evaluating the test subject against? This could be a specification, a set of guidelines, a test from a test suite, or some other test case.

Prose examples that demonstrate the above structure:

Example 1: a person carries out a manual evaluation of a Web page against a test criteria.

Context
Mary Thompson claims on the 17th December
Test Subject
A Web page at http://www.example.org/mypage
Test Result
Passed
Test performed
Checkpoint 1.1 of the Web Content Accessibility Guidelines 1.0

Example 2: an evaluation tool carries out automated evaluation of a Web page against a test criteria.

Context
The W3C Markup Validator claims as of 2004-04-14T14:00:04+1000
Test Subject
The XHTML returned from a GET request to the URI http://www.example.org/yourpage
Test Result
Failed
Test Performed
The validity of the XHTML

1.2. Document Conventions (Non-Normative)

Editorial Comments

There are many issues noted which need to be resolved in future drafts. Comments are specifically requested on any of these issues, which are marked as follows:

[Editor's note: there are some items that the working group has discussed but not reached consensus, and others that are known issues which have not yet been discussed]

Requirement Levels

The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL will be used in accordance with RFC 2119 [RFC2119]

Namespaces

The namespace for EARL as specified in this draft is http://www.w3.org/WAI/ER/EARL/nmg-strawman#.

[Editor's note: Versioning terms during the process of developing the vocabulary is an issue the group is working on. It is possible that a new namespace will be used for a final version of the vocabulary]

Where RDF terms are used in their abbreviated form (e.g. Assertion or foaf:Person), if no namespace is provided the term is in the EARL namespace. The following prefixes are used in examples throughout this document:

earl
The EARL namespace http://www.w3.org/WAI/ER/EARL/nmg-strawman# which is described in this document
foaf
The FOAF namespace http://xmlns.com/foaf/0.1/ which is also where the terms are described [FOAF]
dc
The Dublin Core elements namespace http://purl.org/dc/elements/1.1/ whose terms are described in [DC]
dct
The Dublin Core terms namespace http://purl.org/dc/terms/ described at [DCT]
rdf
The RDF namespace http://www.w3.org/1999/02/22-rdf-syntax-ns# described in [RDF]
rdfs
The RDF Schema namespace http://www.w3.org/2000/01/rdf-schema# described in [RDFS]
owl
The OWL namespace http://www.w3.org/2002/07/owl# described in [OWL]

1.3. About RDF Vocabularies (Non-Normative)

EARL is defined as an RDF vocabulary. The Resource Description Framework (RDF) [RDF] is a general-purpose language for describing information in a way that is machine-understandable.

EARL is an RDF vocabulary used to make statements about how a resource performed against a test. In common with other RDF it assumes that other vocabularies will be used as appropriate.

For more information on RDF, please refer to the following references:

2. Core Vocabulary

The EARL 1.0 defines an RDF Vocabulary that consists of classes and properties. This section describes this core vocabulary as well as its usage while later sections describe extensibility of EARL 1.0; and conformance to EARL 1.0.

2.1. Assertion

An Assertion is a statement about the results of performing a test. The earl:assertion class relates the instances of an Assertor, Test Subject, Test Case, Test Mode, and Test Result for a specific assertion. It is a fundamental part of an EARL statement.

An Assertion MUST have at least the following properties:

earl:assertedBy
The Assertion must be asserted by an assertor. The assertor is a human or software, or groups of these, that determine the result.
earl:subject
The thing that is being tested against some requirement is the subject of the assertion.
earl:testcase
The requirement that is used to test a subject is the test case if the assertion.
earl:mode
The mode in which the test was performed - as an automated computer process, by a human making a subjective judgement, or otherwise.
earl:result
The result of the test - whether the subject passes or fails the test case (or there is some other result).

Example 3: instance of an assertion expressed as an RDF/XML fragment.

<earl:Assertion rdf:ID="#assertion">
  <earl:assertedBy rdf:resource="#assertor"/>
  <earl:subject rdf:resource="#subject"/>
  <earl:testcase rdf:resource="#testcase"/>   
  <earl:mode rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#manual"/> 
  <earl:result rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#pass"/> 
</earl:Assertion>

2.2. Assertor

An Assertor determines the results of a test (i.e. an assertor asserts and assertion). An earl:assertor class must be either a Person, Software, or Compound Assertor.

An Assertor MUST belong to one of the following types:

foaf:Person
The Assertor is a human being. This uses the FOAF vocabulary term foaf:Person to describe a person. There SHOULD be identifying information including a name, and a uniquely identifying property such as email address or an encrypted email address. The properties foaf:name, foaf:mbox and foaf:mbox_sha1sum are defined by FOAF [FOAF].
[Editor's note: the use of FOAF is subject to review of the stability of these terms.]
[Editor's note: the current requirements on properties to identify the tester are subject to revision.]
earl:Software
The Assertor is a Software, such as a black box testing tool of some sort or an evaluation tool.
[Editor's note: the current requirements on properties to identify a tool are subject to revision, please see section software for more information]
earl:compoundAssertor
The Assertor is a compound group of persons and/or softwares. Each group MUST have at least one primary Assertor identified by the earl:mainAssertor property, and MAY, have secondary Assertor identified by the earl:helpAssertor property, as well as an OPTIONAL description identified by the Dublin Core dc:description property.
Since the range of both these properties are earl:Assertor class, the instances can be a Person, Software, or recursively another Compound Assertor

Example 4: an Assertor person called Bob B. Bobbington.

<foaf:Person rdf:ID="bob">
  <foaf:name>Bob B. Bobbington</foaf:name>
  <foaf:mbox rdf:resource="mailto:bob@example.org"/>
  <foaf:mbox_sha1sum>1a9daad476f0158b81bc66b7b27b438b4b4c19c0</foaf:mbox_sha1sum>
</foaf:Person>

Example 5: an Assertor software called Cool Tool.

<earl:Software rdf:ID="tool">
  <dc:title xml:lang="en">Cool Tool</dc:title>
  <dc:description xml:lang="en">My favorite tool!</dc:description>
  <dc:location>http://example.org/tools/#cool</dc:location>
  <dct:hasVersion>1.0.3</dct:hasVersion>
</earl:Software>

Example 6: the Assertor from example 3 is the person from example 4 using the software from example 5.

<earl:compoundAssertor rdf:ID="assertor">
  <earl:mainAssertor rdf:resource="#bob"/>
  <earl:helpAssertor rdf:resource="#tool"/>
</earl:compoundAssertor>

2.3. Test Subject

The Test Subject is the class of things that have been tested. The earl:TestSubject class MUST have exactly one date specified by the Dublin Core dc:date property. It MAY also have any of the following properties:

dc:title
Human readable title for the subject (e.g. "Home Page")
dc:description
Human readable description of the subject (e.g. "Node page of the Web site"
dct:hasPart
Relationship to other subjects that are part of this subject
dct:isPartOf
Relationship to other subjects of which this subject is a part of

This class is intentionally generic to serve a wide variety of usages. For more specific use cases, the EARL earl:WebContent or earl:Software classes can be used in place to describe Web Content or Software that is being tested.

Example 7: Java applet that is part of a Web application

<earl:TestSubject rdf:ID="#applet">
  <dc:title xml:lang="en">Login Applet</dc:title> 
  <dc:description xml:lang="en">Java applet that is used for system login</dc:description> 
  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#gDate">2005-06-25</dc:date> 
  <dct:isPartOf rdf:resource="http://example.org/"/> 
</earl:TestSubject>

2.4. Test Case

A Test Case is a test - usually one that can either be passed or failed. This may include many things such as validation requirements, code test cases, checkpoints from guidelines such as Web Content Accessibility Guidelines 1.0 [WCAG10], or others. These SHOULD be identified with a URI.

A Test Case may be a single test, or may be a part of a larger compound test suite. These relations MAY be described using Dublin Core's dct:hasPart or dct:isPartOf properties. Additionally, the Web location or a description for the test MAY be included by using the Dublin Core dc:location or dc:description properties.

[Editor's note: This class is included for convenience, since it allows various useful properties to be described in simple standard RDF. The working group will deprecate this class if they find an appropriate replacement from a language designed for describing test cases, something which is beyond the scope of the current specification.]

Example 8: instance of a test case that is additionally described with a title and its relationship to a test suite.

<earl:TestCase rdf:ID="html">
  <dc:title xml:lang="en">HTML Test Suite</dc:title>
  <dc:description xml:lang="en">Tests specifically for the Hyper Text Markup Language</dc:title>
  <dct:isPartOf rdf:resource="http://example.org/tests/#all"/>
  <dct:hasPart rdf:resource="http://example.org/tests/#282"/>
  <dc:location>http://example.org/tests/html/</dc:location>
</earl:TestCase>

Example 9: test cases that don't need to be described further can be shortened as follows:

<earl:testcase rdf:resource="http://www.w3.org/TR/WCAG10/wai-pageauth.html#tech-text-equivalent"/>

2.5. Test Mode

The Test Mode MUST be exactly one of the following pre-defined values, or subclasses of them (see section Extensibility for more explanation):

earl:manual
Where the test was performed based on a person's judgement. This includes the case where that judgement was aided through the use of a tool, although this should be additionally noted through the earl:compoundAssertor class of the Assertor.
earl:automatic
Where a computer program or similar has done an automated test and generated a result without human assistance.
earl:heuristic
This property was designed to cover assertions which are made by inference, for example based on several existing test results.
[Editor's note: this property is under discussion and may be changed]

Example 10: instance of an assertion that has been carried out in manual mode

<earl:Assertion rdf:about="http://example.org/#assertion">
  <earl:mode rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#manual"/> 
</earl:Assertion>

2.6. Test Result

The actual result of the test. This MUST have exactly one earl:validity properties to describe a Validity Level. It MAY also include a Confidence Level, using the EARL earl:confidence properties; or a description, using the Dublin Core dc:description property. The description is meant to be human-readable text or markup (for example HTML included as an XML Literal), and SHOULD include an identification for the natural language.

[Editor's note: the confidence property is still under discussion, please refer to the Confidence Level for more information]

The following example shows a result with a validity of fail and a description of the problem in English, and encoded in XHTML format:

Example 11: A test result with a validity and a description property

<earl:result rdf:parseType="Resource">
  <earl:validity rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#fail"/>
  <dc:description rdf:parseType="Literal">
    <div xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
      <p>The <code>table</code> element is not allowed to appear
        inside a <code>p</code> element</p>
    </div>
  </dc:description>
</earl:result>

2.6.1. Validity Level

Outcome of a test. The Validity Level MUST be one of the following pre-defined values, or subclasses of them (see section Extensibility for more explanation):

earl:pass
An assertor claims a test passed successfully.
earl:fail
The Test Subject did not meet the criteria defined by the Test Case.
earl:cannotTell
An Assertor can not tell for sure what the outcome of the test is. Usually this happens when an automated test requires human judgement to make a definite decision.
earl:notApplicable
The Test Case is not applicable to the given Test Subject.
earl:notTested
Test has not been carried out. This is useful for reporting as well as for other uses of progress monitoring.

2.6.2. Confidence Level

[Editor's note: there are currently three values specified as confidence values, of high, medium, and low. These are under discussion and may be removed or significantly revised since it is not yet clear how to ensure that they can be made unambigous and used interoperably]

Confidence in the result by an Assertor. This MAY be used where a tool wants to assert that it has different levels of confidence about two possible results (for example low confidence that a test has been passed, but also high confidence that it is not applicable). The values of the confidence level MUST be one of the following pre-defined values, or subclasses of them (see section Extensibility for more explanation):

earl:high
An assertor is very confident of the result
earl:medium
There may be some uncertainty in the result
earl:low
This result is not reliable for further usage

2.7. Software

A piece of software such as an authoring tool, browser, or evaluation tool. Software MUST have a title (using the Dublin Core property dc:title) and MAY have descriptions, version information, and Web location (using the Dublin Core terms dc:description, dct:hasVersion, and dc:location). Additionally, if it is used as a Test Subject then it inherits additional properties such as dc:date (REQUIRED) as well as dct:isPartOf and dct:hasPart (OPTIONAL).

[Editor's note: earl:Tool used to be a sub class of Assertor in previous versions of this Working Draft but it has been deprecated in favour of earl:Software, which may also be reused a Test Subject.]

Example 12: The software which was an Assertor in example 5 is now a Test Subject.

<earl:Software rdf:about="#tool">
  <dc:title xml:lang="en">Cool Tool</dc:title>
  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#gDate">2005-06-25</dc:date> 
</earl:Software>

2.8. Web Content

Information on the World Wide Web. This should include enough information to identify the content actually tested, taking account of content type and language negotiation and similar factors that can change the content actually served. This class is intended to be used as a test subject but can be reused for other purposes (outside EARL) as well. The Web content class has the following properties:

dc:format
Format of the Web resource. For example "text/HTML", "image/PNG" or other mime types that are returned from the Web server.
dc:location
The URL or other types of pointers that identify an address for the resource.
earl:httpRequest
HTTP request sent by the client to the server in order to initiate a response
earl:httpResponse
HTTP response (except the actual payload of the date) sent by the server to the client

A Web Content class MAY include several request/response sequences to document the content and language negotiation that took place before the content was finally sent.

[Editor's note: the request/response properties of this class are still being refined]

3. Extensibility

Because EARL is written as an RDF vocabulary, it is extensible; that is, it is simple to add new terms or otherwise modify (for example by subclassing) them to fit your own specific application demands more closely. EARL was designed to be generic for usages in quality assurance but may need to be extended to fit particular domains. You may think of EARL as a core set of structures and terms. In addition, the working group expects to work on at least a couple of areas and extend the specification (especially with respect to Web accessibility evaluation) before publishing it as a Recommendation.

[Editor's note: there will be examples of extending EARL provided in a later draft]

4. Conformance

The EARL vocabulary uses OWL [OWL] to provide formal constraints on what is valid EARL.

[Editor's note: the topic of conformance requirements beyond those implicit in the vocabulary definition will be discussed, and results will be incorporated into a future draft.]

Appendix A: EARL 1.0 Schema in RDF/XML

[Editor's note: need to make a schema available at the namespace URI, which includes OWL information on deprecated terms]

<?xml version="1.0" encoding='UTF-8'?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:earl="http://www.w3.org/WAI/ER/EARL/nmg-strawman#"
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:foaf="http://xmlns.com/foaf/0.1/"
         xmlns:owl="http://www.w3.org/2002/07/owl#">

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertion">
    <rdfs:label xml:lang="en">An assertion</rdfs:label>
    <rdfs:comment xml:lang="en">Parent node that contains all parts of an assertion</rdfs:comment>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#assertedBy"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#subject"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#testcase"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#mode"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#result"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </rdfs:Class>

  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#assertedBy">
    <rdfs:label xml:lang="en">asserted by</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertion"/>
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertor"/>
  </rdf:Property>
  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#subject">
    <rdfs:label xml:lang="en">subject</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertion"/>
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestSubject"/>
  </rdf:Property>
  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#testcase">
    <rdfs:label xml:lang="en">testcase</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertion"/>
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestCase"/>
  </rdf:Property>
  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#mode">
    <rdfs:label xml:lang="en">mode</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertion"/>
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestMode"/>
  </rdf:Property>
  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#result">
    <rdfs:label xml:lang="en">result</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertion"/>
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestResult"/>
  </rdf:Property>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertor">
    <rdfs:label xml:lang="en">Assertor</rdfs:label>
    <rdfs:comment xml:lang="en">Persons or evaluation tools that claim assertions</rdfs:comment>
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#singleAssertor"/>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#compoundAssertor"/>
    </owl:oneOf>
  </rdfs:Class>
	
  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#singleAssertor">
    <rdfs:label xml:lang="en">Single Assertor</rdfs:label>
    <rdfs:comment xml:lang="en">One person or evaluation tool that claims assertions</rdfs:comment>
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:type="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Software"/>
      <owl:Thing rdf:type="http://xmlns.com/foaf/0.1/Person">
        <rdfs:subClassOf rdf:parseType="Collection">
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://xmlns.com/foaf/0.1/name"/>
            <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
              </owl:minCardinality>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://xmlns.com/foaf/0.1/mbox"/>
            <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
              </owl:minCardinality>
          </owl:Restriction>
          <owl:Restriction>
            <owl:onProperty rdf:resource="http://xmlns.com/foaf/0.1/mbox_sha1sum"/>
            <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
              </owl:minCardinality>
          </owl:Restriction>
        </rdfs:subClassOf>
      </owl:Thing>
    </owl:oneOf>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#compoundAssertor">
    <rdfs:label xml:lang="en">Compound Assertor</rdfs:label>
    <rdfs:comment xml:lang="en">Group of persons or evaluation tools that claim assertions</rdfs:comment>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/title"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/description"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#mainAssertor"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#helpAssertor"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </rdfs:Class>

  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#mainAssertor">
    <rdfs:label xml:lang="en">Main Assertor</rdfs:label>
    <rdfs:comment xml:lang="en">Assertor mainly responsible for determining assertion result</rdfs:comment>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#compoundAssertor"/>
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertor"/>
  </rdf:Property>
  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#helpAssertor">
    <rdfs:label xml:lang="en">Help Assertor</rdfs:label>
    <rdfs:comment xml:lang="en">Assertor assisting to determine assertion result</rdfs:comment>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#compoundAssertor"/>
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Assertor"/>
  </rdf:Property>
	
  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestSubject">
    <rdfs:label xml:lang="en">Test Subject</rdfs:label>
    <rdfs:comment xml:lang="en">Subject of the assertion</rdfs:comment>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/terms/hasPart"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/terms/isPartOf"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/date"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
        <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:maxCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/title"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/description"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestCase">
    <rdfs:label xml:lang="en">Test Case</rdfs:label>
    <rdfs:comment xml:lang="en">Test case against which subjects are tested</rdfs:comment>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/terms/hasPart"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/terms/isPartOf"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/title"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/description"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/location"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestMode">
    <rdfs:label xml:lang="en">Test Mode</rdfs:label>
    <rdfs:comment xml:lang="en">Mode in which tests were conducted</rdfs:comment>
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#manual">
        <rdfs:label xml:lang="en">Manual Testing Mode</rdfs:label>
        <rdfs:comment xml:lang="en">Test was performed by a human</rdfs:comment>
      </owl:Thing>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#automatic">
        <rdfs:label xml:lang="en">Automatic Testing Mode</rdfs:label>
        <rdfs:comment xml:lang="en">Test was performed by a tool</rdfs:comment>
      </owl:Thing>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#heuristic">
        <rdfs:label xml:lang="en">Heuristic Testing Mode</rdfs:label>
        <rdfs:comment xml:lang="en">Result was derived from other results</rdfs:comment>
      </owl:Thing>
    </owl:oneOf>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestResult">
    <rdfs:label xml:lang="en">Test Result</rdfs:label>
    <rdfs:comment xml:lang="en">Result from conducting test cases on subjects</rdfs:comment>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/description"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#validity"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
        <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:maxCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#confidence"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </rdfs:Class>

  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#validity">   
    <rdfs:label xml:lang="en">Validity Level Property</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestResult"/> 
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#ValidityLevel"/> 
  </rdf:Property>
  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#confidence">
    <rdfs:label xml:lang="en">Confidence Level Property</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#TestResult"/> 
    <rdfs:range rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#ConfidenceLevel"/> 
  </rdf:Property>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#ValidityLevel">
    <rdfs:label xml:lang="en">Validity Level</rdfs:label>
    <rdfs:comment xml:lang="en">Nominal value of the result</rdfs:comment>
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#pass">
        <rdfs:label xml:lang="en">Pass</rdfs:label>
        <rdfs:comment xml:lang="en">Test passed</rdfs:comment>
      </owl:Thing>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#fail">
        <rdfs:label xml:lang="en">Fail</rdfs:label>
        <rdfs:comment xml:lang="en">Test failed</rdfs:comment>
      </owl:Thing>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#cannotTell">
        <rdfs:label xml:lang="en">Can Not Tell</rdfs:label>
        <rdfs:comment xml:lang="en">Outcome of the test is uncertain</rdfs:comment>
      </owl:Thing>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#notApplicable">
        <rdfs:label xml:lang="en">Not Applicable</rdfs:label>
        <rdfs:comment xml:lang="en">Test is not applicable to the subject</rdfs:comment>
      </owl:Thing>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#notTested">
        <rdfs:label xml:lang="en">Not Tested</rdfs:label>
        <rdfs:comment xml:lang="en">Test has not been carried out</rdfs:comment>
      </owl:Thing>
    </owl:oneOf>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#ConfidenceLevel">
    <rdfs:label xml:lang="en">Confidence Level</rdfs:label>
    <rdfs:comment xml:lang="en">Level of confidence in the given result</rdfs:comment>
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#high">
        <rdfs:label xml:lang="en">High Confidence</rdfs:label>
        <rdfs:comment xml:lang="en">Validity of the result is certain</rdfs:comment>
      </owl:Thing>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#medium">
        <rdfs:label xml:lang="en">Medium Confidence</rdfs:label>
        <rdfs:comment xml:lang="en">Validity of the result is not sure</rdfs:comment>
      </owl:Thing>
      <owl:Thing rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#low">
        <rdfs:label xml:lang="en">Low Confidence</rdfs:label>
        <rdfs:comment xml:lang="en">Validity of the result is questionable</rdfs:comment>
      </owl:Thing>
    </owl:oneOf>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#Software">
    <rdfs:label xml:lang="en">Software Tool</rdfs:label>
    <rdfs:comment xml:lang="en">A tool that can perform tests or be the subject of testing</rdfs:comment>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/title"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">1
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/terms/hasVersion"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/description"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/location"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#WebContent">
    <rdfs:label xml:lang="en">Web Content</rdfs:label>
    <rdfs:comment xml:lang="en">Subjects that are available on the Web</rdfs:comment>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#httpRequest"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#httpResponse"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/location"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="http://purl.org/dc/elements/1.1/format"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">0
          </owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </rdfs:Class>

  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#httpRequest">
    <rdfs:label xml:lang="en">http-request</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#WebContent"/> 
  </rdf:Property>

  <rdf:Property rdf:about="http://www.w3.org/WAI/ER/EARL/nmg-strawman#httpResponse">
    <rdfs:label xml:lang="en">http-response</rdfs:label>
    <rdfs:domain rdf:resource="http://www.w3.org/WAI/ER/EARL/nmg-strawman#WebContent"/> 
  </rdf:Property>
</rdf:RDF>

Appendix B: EARL 1.0 Schema in N3 (Non-Normative)

@prefix : <http://www.w3.org/WAI/ER/EARL/nmg-strawman#>.
@prefix dc: <http://purl.org/dc/elements/1.1/>.
@prefix dct: <http://purl.org/dc/terms/>
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix xmls: <http://www.w3.org/2001/XMLSchema#>.

:Assertion a rdfs:Class;
  rdfs:label "An assertion"@en;
  rdfs:comment "Parent node that contains all parts of an assertion"@en;
  rdfs:subClassOf (
    [ owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty :assertedBy ]
    [ owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty :subject ]
    [ owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty :testcase ]
    [ owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty :mode ]
    [ owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty :result ]).

:assertedBy a rdf:Property;
  rdfs:label "asserted by"@en;
  rdfs:domain :Assertion;
  rdfs:range :Assertor.
:subject a rdf:Property;
  rdfs:label "subject"@en;
  rdfs:domain :Assertion;
  rdfs:range :TestSubject.
:testcase a rdf:Property;
  rdfs:label "testcase"@en;
  rdfs:domain :Assertion;
  rdfs:range :TestCase.
:mode a rdf:Property;
  rdfs:label "mode"@en;
  rdfs:domain :Assertion;
  rdfs:range :TestMode.
:result a rdf:Property;
  rdfs:label "result"@en;
  rdfs:domain :Assertion;
  rdfs:range :TestResult.

:Assertor a rdfs:Class;
  rdfs:label "Assertor"@en;
  rdfs:comment "Persons or evaluation tools that claim assertions"@en;
  owl:oneOf (
		:singleAssertor
		:compundAssertor ).

:singleAssertor a rdfs:Class;
  rdfs:label "Single Assertor"@en;
  rdfs:comment "One person or evaluation tool that claims assertions"@en;
  owl:oneOf (
    [ a :Software ]
    [ a foaf:Person;
      rdfs:subClassOf (
        [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
          owl:onProperty foaf:name ]
        [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
          owl:onProperty foaf:mbox ]
        [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
          owl:onProperty foaf:mbox_sha1sum ])]).

:compoundAssertor a rdfs:Class;
  rdfs:label "Compound Assertor"@en;
  rdfs:comment "Group of persons or evaluation tools that claim assertions"@en;
  rdfs:subClassOf (
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:title ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:description ]
    [ owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty earl:mainAssertor ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty earl:helpAssertor ]).

:mainAssertor a rdf:Property;
  rdfs:label "Main Assertor"@en;
  rdfs:comment "Assertor mainly responsible for determining assertion result"@en;
  rdfs:domain :compoundAssertor;
  rdfs:range :Assertor .
:helpAssertor a rdf:Property;
  rdfs:label "Help Assertor"@en;
  rdfs:comment "Assertor assisting to determine assertion result"@en;
  rdfs:domain :compoundAssertor;
  rdfs:range :Assertor .

:TestSubject a rdfs:Class;
  rdfs:label "Test Subject"@en;
  rdfs:comment "Subject of the assertion"@en;
  rdfs:subClassOf (
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dct:hasPart ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dct:hasPart ]
    [ owl:maxCardinality "1"^^xmls:nonNegativeInteger;
      owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty dc:date ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:title ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:description ]).

:TestCase a rdfs:Class;
  rdfs:label "Test Case"@en;
  rdfs:comment "Test case against which subjects are tested"@en;
  rdfs:subClassOf (
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dct:hasPart ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dct:hasPart ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:title ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:description ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:location ]).

:TestMode a rdfs:Class;
  rdfs:label "Test Mode"@en;
  rdfs:comment "Mode in which tests were conducted"@en;
  owl:oneOf (
    :manual
    :automatic
    :heuristic ).

:manual rdfs:comment "Test was performed by a human"@en;
  rdfs:label "Manual Testing Mode"@en.
:automatic rdfs:comment "Test was performed by a tool"@en;
  rdfs:label "Automatic Testing Mode"@en.
:heuristic rdfs:comment "Result was derived from other results"@en;
  rdfs:label "Heuristic Testing Mode"@en.

:TestResult a rdfs:Class;
  rdfs:label "Test Result"@en;
  rdfs:comment "Result from conducting test cases on subjects"@en;
  rdfs:subClassOf (
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:description ]
    [ owl:maxCardinality "1"^^xmls:nonNegativeInteger;
      owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty :validity ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty :confidence ]).

:validity a rdf:Property;
  rdfs:label "Validity Level Property"@en;
  rdfs:domain :TestResult;
  rdfs:range :ValidityLevel.
:confidence a rdf:Property;
  rdfs:label "Confidence Level Property"@en;
  rdfs:domain :TestResult;
  rdfs:range :ConfidenceLevel.

:ValidityLevel a rdfs:Class;
  rdfs:label "Validity Level"@en;
  rdfs:comment "Nominal value of the result"@en;
  owl:oneOf (
    :pass
    :fail
    :cannotTell
    :notApplicable
    :notTested ).

:pass rdfs:comment "Test passed"@en;
  rdfs:label "Pass"@en.
:fail rdfs:comment "Test failed"@en;
  rdfs:label "Fail"@en.
:cannotTell rdfs:comment "Outcome of the test is uncertain"@en;
  rdfs:label "Can Not Tell"@en.
:notApplicable rdfs:comment "Test is not applicable to the subject"@en;
  rdfs:label "Not Applicable"@en.
:notTested rdfs:comment "Test has not been carried out"@en;
  rdfs:label "Not Tested"@en.

:ConfidenceLevel a rdfs:Class;
  rdfs:label "Confidence Level"@en;
  rdfs:comment "Level of confidence in the given result"@en;
  owl:oneOf (
    :high
    :medium
    :low ).

:low rdfs:comment "Validity of the result is questionable"@en;
  rdfs:label "Low Confidence"@en.
:medium rdfs:comment "Validity of the result is not sure"@en;
  rdfs:label "Medium Confidence"@en.
:high rdfs:comment "Validity of the result is certain"@en;
  rdfs:label "High Confidence"@en.

:Software a rdfs:Class;
  rdfs:label "Software Tool"@en;
  rdfs:comment "A tool that can perform tests or be the subject of testing"@en;
  rdfs:subClassOf (
    [ owl:minCardinality "1"^^xmls:nonNegativeInteger;
      owl:onProperty dc:title ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dct:hasVersion ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:description ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:location ]).

:WebContent a rdfs:Class;
  rdfs:label "Web Content"@en;
  rdfs:comment "Subjects that are available on the Web"@en;
  rdfs:subClassOf (
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty :httpRequest ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty :httpResponse ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:location ]
    [ owl:minCardinality "0"^^xmls:nonNegativeInteger;
      owl:onProperty dc:format ]).

:httpRequest a rdf:Property;
  rdfs:label "http-request"@en.
  rdfs:domain :WebContent;
:httpResponse a rdf:Property;
  rdfs:label "http-response"@en.
  rdfs:domain :WebContent;

Appendix C: EARL 1.0 Terms (Non-Normative)

The following terms are defined by this specification:

Classes

Classes in the EARL namespace
Name Label Required properties Allowable types Optional properties
earl:Assertion Assertion
earl:Assertor Assertor
earl:singleAssertor Single Assertor
earl:compoundAssertor Compound Assertor earl:mainAssertor earl:helpAssertor
earl:TestSubject Test Subject dc:date
  • dct:hasPart
  • dct:isPartOf
  • dc:title
  • dc:description
earl:TestCase Test case
  • dct:hasPart
  • dct:isPartOf
  • dc:title
  • dc:description
  • dc:location
earl:TestMode Test mode
earl:TestResult Test Result earl:validity
earl:ValidityLevel Validity Level
earl:ConfidenceLevel Confidence Level
earl:Software Software tool dc:title
  • dct:hasVersion
  • dc:description
  • dc:location
earl:WebContent Web Content

Properties

Properties in the EARL namespace
Name Label Domain Range
earl:assertedBy asserted by earl:Assertion earl:Assertor
earl:subject subject earl:Assertion earl:TestSubject
earl:testcase test case earl:Assertion earl:TestCase
earl:result result earl:Assertion earl:TestResult
earl:mode mode earl:Assertion earl:TestMode
earl:mainAssertor Main Assertor earl:compoundAssertor earl:Assertor
earl:helpAssertor Help Assertor earl:compoundAssertor earl:Assertor
earl:validity validity earl:TestResult earl:ValidityLevel
earl:confidence confidence earl:TestResult earl:ConfidenceLevel
earl:httpResponse HTTP response information earl:WebContent unspecified
earl:httpRequest HTTP request information earl:WebContent unspecified

Values

Values in the EARL namespace
Name Label Used In
earl:manual Manual earl:TestMode
earl:automatic Automatic earl:TestMode
earl:heuristic Heuristic earl:TestMode
earl:pass Pass earl:ValidityLevel
earl:fail Fail earl:ValidityLevel
earl:notTested Not tested earl:ValidityLevel
earl:cannotTell Cannot tell earl:ValidityLevel
earl:notApplicable Not Applicable earl:ValidityLevel
earl:high High Confidence earl:ConfidenceLevel
earl:medium Medium Confidence earl:ConfidenceLevel
earl:low Low confidence earl:ConfidenceLevel

Appendix D: Document Changes (Non-Normative)

This section records current changes and future plans for changes as the working draft matures to Recommendation level.

Differences between this draft and the EARL 1.0 draft of 12 December 2002

New terms

New terms have been introduced to the vocabulary, sometimes as replacements for deprecated terms that existed in EARLier drafts, sometime to introduce new funtionality

Software
This class replaces the deprecated Tool. It can be used to decribe a assertor tools or test subjects.
singleAssertor, compoundAssertor
These classes are derivatives of an Assertor to help describe complex groups of person and/or tool evaluators.
mainAssertor, helpAssertor
These properties of a compound assertor can be used to describe the specific roles of evaluators within a group.
httpRequest, httpResponse
These are placeholder properties for describing WebContent (or a "Delivery Unit" on the Web).

Deprecated terms

A number of terms have been deprecated, either in favour of terms from existing widely-used vocabularies, or because their use is somehow problematic. While this deprecation is provisional, no RDF has been published formally noting them as deprecated (for example through OWL). A quick guide to terms that have been provisionally deprecated:

reprOf
This term was deprecated in favour of a more comprehensive approach to describing Web content.
UserAgent, Tool
These terms were deprecated in favour of the more generic Software class.
platform
This term was deprecated as it did not seem to be widely accepted and implemented.
message, format
These terms were deprecated in favour of the Dublin Core terms dc:description and dc:format.
Person, name, email, contactInfo
These terms were deprecated in favour of equivalent terms from the FOAF vocabulary.

Working group change plans

The working group is considering several open issues which would lead to extending the current vocabulary before it reaches recommendation.

As well as issues noted in the draft, the following issues are under active consideration:

Evidence

A mechanism to provide further evidence used to make a claim. This could be a copy of the web content analysed for a particular test, or a rule describing how may tests are required to pass some compound test, and pointers to the individual results that together satisfy the rule.

Location

Within Web content, for the use case of testing accessibility, it is very valuable to point to the location(s) that cause the test to pass or fail. This is also true of software interfaces and various other kinds of subject. The working group has agreed in principle to include a mechanism for recording this information in an EARL report, but has not yet developed or found the necessary terms.

HTTP transaction information

There are currently placeholder properties httpRequest and httpResponse for HTTP transaction information. The group expects to develop these further, either themselves or with an existing vocabulary.

Confidence

This is under review by the working group. It is not clear how the currently defined model can be used interoperably, and whether there is an alternative approach that would allow for a more interoperable statement of confidence in some results.

Appendix E: References (Non-Normative)

[RDF]
Resource Description Framework (RDF) Model and Syntax Specification - W3C Recommendation, 22 February 1999.
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
[RDF-PRIMER]
RDF Primer - W3C Recommendation, 10 February 2004.
http://www.w3.org/TR/rdf-primer/
[RDFS]
RDF Vocabulary Description Language 1.0: RDF Schema - W3C Recommendation, 10 February 2004.
http://www.w3.org/TR/rdf-schema/
[RDF-XML-DIFFS]
Why RDF model is different from the XML model - Paper by Tim Berners-Lee, September 1998.
http://www.w3.org/DesignIssues/RDF-XML
[DC]
The Dublin Core Metadata Element Set - DC Recommendation, 20 December 2004.
http://www.dublincore.org/documents/dces/
[DCT]
The Dublin Core Metadata Terms - DC Recommendation, 13 June 2005.
http://www.dublincore.org/documents/dcmi-terms/
[FOAF]
FOAF Vocabulary Specification - Working Draft, 3 June 2005.
http://xmlns.com/foaf/0.1/
[OWL]
OWL Web Ontology Language - W3C Recommendation, 10 February 2004.
http://www.w3.org/TR/owl-features/
[WCAG10]
Web Content Accessibility Guidelines 1.0 - W3C Recommendation, 5 May 1999.
http://www.w3.org/TR/WCAG10/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels - IETF RFC, March 1997.
http://www.ietf.org/rfc/rfc2119.txt

Appendix F: Contributors (Non-Normative)

EARL is the result of the work of many people over the past. The editors would particularly like to thank Wendy Chisholm, Sean B Palmer, and Daniel Dardailler, who edited the first versions of the EARL specifications. The editors apologise for any names left out of this list, and will endeavour to rectify any errors noted in comments.

Contributors to this Working Draft

Shadi Abou-Zahra, Chrisoula Alexandraki, Myriam Arrue, Gabriele Bartolini, Giorgio Brajnik, Wendy Chisholm, Karl Dubost, Dominique Hazael-Massieux, Sandor Herramhof, Carlos Iglesias, Nick Kew, Johannes Koch, Jim Ley, Charles McCathieNevile, and Chris Ridpath.

Contributors to previous Work Drafts

Giorgio Brajnik, Dan Brickley, Karl Dubost, Nick Gibbins, Al Gilman, Dominique Hazael-Massieux, Nadia Heninger, Ian Hickson, Leonard Kasday, Nick Kew, Jim Ley, William Loughborough, John Lutts, Charles McCathieNevile, Libby Miller, Tom Martin, Dave Pawson, Eric Prud'hommeaux, Pierre Queinnec, Chris Ridpath, Romain Roure, Aaron Swartz, Olivier Thoreaux, and Rob Yonaitis.