This pages captures the proposed changes to the current EARL Schema of December 2002, as well as the status of these changes. This page is an on-going work in progress and is subject to change at any time without advance notice. The changes captured in this page should assist the ERT WG in tracking some of the on-going discussions; only changes that are formally accepted by the group (through voting by the WG participants) will become part of the next draft schema.
Table of Contents:
<?xml version='1.0' encoding='ISO-8859-1'?>
<?xml version='1.0' encoding='UTF-8'?>
Changed to UTF-8 for internationalization purposes.
Not reviewed.
<!DOCTYPE rdf:RDF [ <!ENTITY earl 'http://www.w3.org/WAI/ER/EARL/nmg-strawman#'> <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> <!ENTITY rdfs 'http://www.w3.org/TR/1999/PR-rdf-schema-19990303#'> ]>
<!DOCTYPE rdf:RDF [ <!ENTITY earl 'http://www.w3.org/WAI/ER/EARL/nmg-strawman#'> <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> <!ENTITY rdfs 'http://www.w3.org/TR/1999/PR-rdf-schema-19990303#'> <!ENTITY dc 'http://purl.org/dc/elements/1.1/'> <!ENTITY foaf 'http://xmlns.com/foaf/0.1/'> ]>
Added DC and FOAF entities.
Not reviewed.
<rdf:RDF xmlns:earl="&earl;" xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;">
<rdf:RDF xmlns:earl="&earl;" xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xlmns:dc="&dc;" xlmns:foaf="&foaf;">
Added DC and FOAF namespaces.
Not reviewed.
<rdfs:Class rdf:about="&earl;Assertion" rdfs:label="Assertion"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;Assertor" rdfs:label="Assertor"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;ConfidenceLevel" rdfs:label="ConfidenceLevel"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;TestCase" rdfs:label="TestCase"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;TestMode" rdfs:label="TestMode"> <rdfs:subClassOf rdf:resource="&rdf;Resource"> </rdfs:Class> <rdfs:Class rdf:about="&earl;TestResult" rdfs:label="TestResult"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;TestSubject" rdfs:label="TestSubject"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;ValidityLevel" rdfs:label="ValidityLevel"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class>
<rdfs:Class rdf:about="&earl;Assertion" rdfs:label="Assertion"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;Assertor" rdfs:label="Assertor"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;ConfidenceLevel" rdfs:label="ConfidenceLevel"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;TestCase" rdfs:label="TestCase"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;TestMode" rdfs:label="TestMode"> <rdfs:subClassOf rdf:resource="&rdf;Resource"> </rdfs:Class> <rdfs:Class rdf:about="&earl;TestResult" rdfs:label="TestResult"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;TestSubject" rdfs:label="TestSubject"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;ValidityLevel" rdfs:label="ValidityLevel"> <rdfs:subClassOf rdf:resource="&rdfs;Resource"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;Location" rdfs:label="Location"> <rdfs:subClassOf rdf:resource="&rdfs;Container"/> </rdfs:Class>
Added "Location" class to identify the location of the assertion within the subject.
Not reviewed.
<rdfs:Class rdf:about="&earl;Tool" rdfs:label="Tool"> <rdfs:subClassOf rdf:resource="&earl;TestSubject"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;UserAgent" rdfs:label="UserAgent"> <rdfs:subClassOf rdf:resource="&earl;TestSubject"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;WebContent" rdfs:label="WebContent"> <rdfs:subClassOf rdf:resource="&earl;TestSubject"/> </rdfs:Class>
<rdfs:Class rdf:about="&earl;Software" rdfs:label="Software"> <rdfs:subClassOf rdf:resource="&earl;TestSubject"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;WebContent" rdfs:label="WebContent"> <rdfs:subClassOf rdf:resource="&earl;TestSubject"/> </rdfs:Class>
These are built-in subclasses of TestSubject. Developers can add other domain specific subclasses. It seems both "Tool" and "UserAgent" describe software. These can be tested against applicable standards and guidelines such as ATAG or UAAG. Unless these two classes will have different properties, it makes sense to summarize them into the more abstract class of "Software".
Not reviewed.
None.
<rdfs:Class rdf:about="&foaf;Person" rdfs:label="Person"> <rdfs:subClassOf rdf:resource="&earl;Assertor"/> </rdfs:Class> <rdfs:Class rdf:about="&earl;Tool" rdfs:label="Tool"> <rdfs:subClassOf rdf:resource="&earl;Assertor"/> </rdfs:Class>
Even though a "Person" evaluator may use tools to assist carrying out the test and generating EARL, it is different than automated (or semi-automated) evaluations which are more tools-centric. Also describing a "Person" evaluator is different from describing a "Tool". More about the properties of these in section "Properties of Assertor" below.
Not reviewed.
<rdf:Property rdf:about="&earl;mode" rdfs:label="mode"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;TestMode"/> </rdf:Property> <rdf:Property rdf:about="&earl;result" rdfs:label="result"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;TestResult"/> </rdf:Property> <rdf:Property rdf:about="&earl;subject" rdfs:label="subject"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;TestSubject"/> </rdf:Property> <rdf:Property rdf:about="&earl;testcase" rdfs:label="testcase"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;TestCase"/> </rdf:Property> <rdf:Property rdf:about="&earl;assertedBy" rdfs:label="assertedBy"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;Assertor"/> </rdf:Property>
<rdf:Property rdf:about="&rdf;ID" rdfs:label="ID"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&rdf;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;mode" rdfs:label="mode"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;TestMode"/> </rdf:Property> <rdf:Property rdf:about="&earl;result" rdfs:label="result"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;TestResult"/> </rdf:Property> <rdf:Property rdf:about="&earl;subject" rdfs:label="subject"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;TestSubject"/> </rdf:Property> <rdf:Property rdf:about="&earl;testcase" rdfs:label="testcase"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;TestCase"/> </rdf:Property> <rdf:Property rdf:about="&earl;assertedBy" rdfs:label="assertedBy"> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;Assertor"/> </rdf:Property> <rdf:Property rdf:about="&earl;location" rdfs:label="location"> <rdfs:subClassOf rdf:resource="&rdfs;Container"/> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;Location"/> </rdf:Property> <rdf:Property rdf:about="&earl;evidence" rdfs:label="evidence"> <rdfs:subClassOf rdf:resource="&rdfs;Container"/> <rdfs:domain rdf:resource="&earl;Assertion"/> <rdfs:range rdf:resource="&earl;Assertion"/> </rdf:Property>
Added "ID" to ensure each "assertion" is unique throughout a report. Added "location" property to identify the location of the assertion within the subject. Added "evidence" container to allow pointing to other assertions as reasons for the current assertion claim.
Not reviewed.
<rdf:Property rdf:about="&earl;contactInfo" rdfs:label="contactInfo"> <rdfs:domain rdf:resource="&earl;Assertor"/> <rdfs:range rdf:resource="&rdfs;Resource"/> </rdf:Property> <rdf:Property rdf:about="&earl;email" rdfs:label="email"> <rdfs:domain rdf:resource="&earl;Assertor"/> <rdfs:range rdf:resource="&rdfs;Literal"/> <rdfs:subPropertyOf rdf:resource="&earl;contactInfo"/> </rdf:Property> <rdf:Property rdf:about="&earl;name" rdfs:label="name"> <rdfs:domain rdf:resource="&earl;Assertor"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;platform" rdfs:label="platform"> <rdfs:domain rdf:resource="&earl;Assertor"/> <rdfs:range rdf:resource="&rdfs;Resource"/> </rdf:Property>
<rdf:Property rdf:about="&dc;title" rdfs:label="title"> <rdfs:domain rdf:resource="&earl;Tool"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&dc;hasVersion" rdfs:label="hasVersion"> <rdfs:domain rdf:resource="&earl;Tool"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&foaf;name" rdfs:label="name"> <rdfs:domain rdf:resource="&foaf;Person"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&foaf;mbox" rdfs:label="email"> <rdfs:domain rdf:resource="&foaf;Person"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;usingTool" rdfs:label="usingTool"> <rdfs:domain rdf:resource="&foaf;Person"/> <rdfs:range rdf:resource="&earl;Tool"/> </rdf:Property>
Changed identification properties to be more "Tool" or "Person" specific while reusing as much existing vocabulary as possible. Also added a "usingTool" property to indicate which tool(s) an evaluator used during the evaluation. Dropped "platform" property which is not defined beyond being a resource.
Not reviewed.
<rdf:Property rdf:about="&earl;format" rdfs:label="format"> <rdfs:domain rdf:resource="&earl;WebContent"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;reprOf" rdfs:label="reprOf"> <rdfs:domain rdf:resource="&earl;WebContent"/> <rdfs:range rdf:resource="&rdfs;Resource"/> </rdf:Property>
<rdf:Property rdf:about="&dc;hasPart" rdfs:label="hasPart"> <rdfs:domain rdf:resource="&earl;TestSubject"/> <rdfs:range rdf:resource="&rdfs;TestSubject"/> </rdf:Property> <rdf:Property rdf:about="&dc;isPartOf" rdfs:label="isPartOf"> <rdfs:domain rdf:resource="&earl;TestSubject"/> <rdfs:range rdf:resource="&rdfs;TestSubject"/> </rdf:Property> <rdf:Property rdf:about="&dc;date" rdfs:label="date"> <rdfs:domain rdf:resource="&earl;TestSubject"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;reprOf" rdfs:label="reprOf"> <rdfs:domain rdf:resource="&earl;TestSubject"/> <rdfs:range rdf:resource="&rdfs;Resource"/> </rdf:Property> <rdf:Property rdf:about="&dc;format" rdfs:label="format"> <rdfs:domain rdf:resource="&earl;TestSubject"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;http-header" rdfs:label="http-header"> <rdfs:domain rdf:resource="&earl;WebContent"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property>
Both "reprOf" and "format" should apply to any "TestSubject", while "http-header" is specific to "WebContent" subjects. Added "date" to allow time stamping of the subject. Added "hasPart" and "isPartOf" properties to allow relating subjects to each other. Changed "format" to DC.
Not reviewed.
<rdf:Property rdf:about="&earl;validity" rdfs:label="validity"> <rdfs:domain rdf:resource="&earl;TestResult"/> <rdfs:range rdf:resource="&earl;ValidityLevel"/> </rdf:Property> <rdf:Property rdf:about="&earl;message" rdfs:label="message"> <rdfs:domain rdf:resource="&earl;TestResult"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;confidence" rdfs:label="confidence"> <rdfs:domain rdf:resource="&earl;TestResult"/> <rdfs:range rdf:resource="&earl;ConfidenceLevel"/> </rdf:Property>
<rdf:Property rdf:about="&earl;validity" rdfs:label="validity"> <rdfs:domain rdf:resource="&earl;TestResult"/> <rdfs:range rdf:resource="&earl;ValidityLevel"/> </rdf:Property> <rdf:Property rdf:about="&dc;description" rdfs:label="description"> <rdfs:domain rdf:resource="&earl;TestResult"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;confidence" rdfs:label="confidence"> <rdfs:domain rdf:resource="&earl;TestResult"/> <rdfs:range rdf:resource="&earl;ConfidenceLevel"/> </rdf:Property> <rdf:Property rdf:about="&earl;precision" rdfs:label="presicion"> <rdfs:domain rdf:resource="&earl;TestResult"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property>
Added "precision" property for heuristic evaluations that have certainity factors. Changed "earl:message" to "dc:description".
Not reviewed.
None.
<rdf:Property rdf:about="&dc;hasPart" rdfs:label="hasPart"> <rdfs:domain rdf:resource="&earl;TestCase"/> <rdfs:range rdf:resource="&rdfs;TestCase"/> </rdf:Property> <rdf:Property rdf:about="&dc;isPartOf" rdfs:label="isPartOf"> <rdfs:domain rdf:resource="&earl;TestCase"/> <rdfs:range rdf:resource="&rdfs;TestCase"/> </rdf:Property>
Added "hasPart" and "isPartOf" properties to allow relating test cases to each other.
Not reviewed.
None.
<rdf:Property rdf:about="&earl;line" rdfs:label="line"> <rdfs:domain rdf:resource="&earl;Location"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;xpath" rdfs:label="xpath"> <rdfs:domain rdf:resource="&earl;Location"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&earl;element-id" rdfs:label="element-id"> <rdfs:domain rdf:resource="&earl;Location"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property> <rdf:Property rdf:about="&dc;description" rdfs:label="description"> <rdfs:domain rdf:resource="&earl;Location"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdf:Property>
Added some possible location pointers. This section needs heavy refinement work.
Not reviewed.
<earl:TestMode rdf:about="&earl;manual" rdfs:label="manual"> <rdfs:comment>The test was performed by a human.</rdfs:comment> </earl:TestMode> <earl:TestMode rdf:about="&earl;automatic" rdfs:label="automatic"> <rdfs:comment>The test was performed by a tool or machine.</rdfs:comment> </earl:TestMode> <earl:TestMode rdf:about="&earl;heuristic" rdfs:label="heuristic"> <rdfs:comment>The test is derived from other test results.</rdfs:comment> </earl:TestMode> <earl:ValidityLevel rdf:about="&earl;pass" rdfs:label="pass"/> <earl:ValidityLevel rdf:about="&earl;fail" rdfs:label="fail"/> <earl:ValidityLevel rdf:about="&earl;cannotTell" rdfs:label="cannotTell"/> <earl:ValidityLevel rdf:about="&earl;notApplicable" rdfs:label="notApplicable"/> <earl:ValidityLevel rdf:about="&earl;notTested" rdfs:label="notTested"/> <earl:ConfidenceLevel rdf:about="&earl;low" rdfs:label="low"/> <earl:ConfidenceLevel rdf:about="&earl;medium" rdfs:label="medium"/> <earl:ConfidenceLevel rdf:about="&earl;high" rdfs:label="high"/>
Same.
Not reviewed.