@prefix : <#> . @prefix earl: . @prefix earldata: . @prefix rdf: . @prefix rdfs: . @prefix daml: . @prefix dc: . @prefix foaf: . @prefix doc: . @prefix rcs: . @prefix n: . @prefix generic: . <> dc:title "EARL (Evaluation And Report Language) 1.0 RDF Schema"; doc:obsoletes ; doc:derivedFrom ; rcs:id "$Id$" . # # # # # # # # # # # # EARL Model # earl:Evaluation a rdfs:Class; rdfs:label "Evaluation"; rdfs:subClassOf rdf:Statement, [ daml:onProperty rdf:subject; daml:toClass earl:Assertion ], [ daml:onProperty rdf:predicate; daml:hasValue earl:assertedBy ], [ daml:onProperty rdf:object; daml:toClass earl:Assertor ]; rdfs:comment """ The class of all EARL evaluations, as asserted in an EARL document. A sub class of rdf:Statement. (An Evaluation is the most basic unit of EARL as it stands. An EARL document will always have at least one Evaluation asserted in it.) """ . earl:Assertor a rdfs:Class; rdfs:label "Assertor"; rdfs:subClassOf [ daml:onProperty earl:platform; daml:toClass earl:TestPlatform ], [ daml:disjointUnionOf (earl:Person earl:Machine) ]; rdfs:comment """ The class of entities making an assertion in EARL (e.g. running the test). This could be anonymous if required. There are two further sub classes of Assertor defined, but they are basically unused. """ . earl:assertedBy a rdf:Property; rdfs:label "assertedBy"; rdfs:comment """ For earl:assertedBy(y,x), in general, the assertor (x) asserts the assertion (y). EARL has specific classes for the domain/range """ . earl:Assertion a rdfs:Class; rdfs:label "Assertion"; rdfs:subClassOf rdf:Statement, [ daml:onProperty earl:assertedBy; daml:toClass earl:Assertor ], [ daml:onProperty rdf:subject; daml:toClass earl:TestSubject ], [ daml:onProperty rdf:predicate; daml:toClass earl:ResultProperty ], [ daml:onProperty rdf:object; daml:toClass earl:TestCase ]; rdfs:comment """ An assertion is a sub class of statement, where the subject is a TestSubject, the predicate a ResultProperty, and the object a TestCase. These could be free standing units - used outside of Evaluation(s) if required. N.B. Assertion is the domain of earl:assertedBy. """ . # earl:TestSubject terms earl:TestSubject a rdfs:Class; rdfs:label "TestSubject"; rdfs:comment """ The class of things which are being evaluated in an EARL evaluation - the things that are the subject of every assertion. This needs to be qualified with some type of information in order to make it unambiguous. You may use an unambiguous property, or unambiguous constellation of properties. """ . earl:WebContent a rdfs:Class; rdfs:label "WebContent"; rdfs:subClassOf earl:TestSubject, [ daml:onProperty earl:reprOf; daml:minCardinality "1"; daml:maxCardinality "1" ]; rdfs:comment """ WebContent is synonymous with "Document Source" in UAAG, and "Representation" in RFC 2616. Anything which is an instance of WebContent must have exactly one reprOf predicate hanging from it. """ . earl:Tool a rdfs:Class; rdfs:label "Tool"; rdfs:comment "This is a tool; a bit of software, perhaps with a desc."; rdfs:subClassOf earl:TestSubject . earl:UserAgent a rdfs:Class; rdfs:label "UserAgent"; rdfs:comment "A user agent"; rdfs:subClassOf earl:TestSubject . (earl:WebContent earl:Tool earl:UserAgent) a daml:Disjoint . earl:reprOf a rdf:Property; rdfs:label "reprOf"; # rdfs:note "a daml:UniqueProperty?" rdfs:domain earl:WebContent; rdfs:range rdfs:Resource; rdfs:comment """ For reprOf(x, y), read that x is a representation of y, possibly derived from an HTTP GET transaction. """ . # earl:ResultProperty terms earl:ResultProperty a rdfs:Class; rdfs:label "ResultProperty"; rdfs:subClassOf rdf:Property; rdfs:comment """ The set of result properties in EARL; they are the range of rdf:predicate for all EARL Assertions. """ . earl:validity a rdf:Property; rdfs:label "validity"; rdfs:comment "The validity state for an EARL ResultProperty."; rdfs:domain earl:ResultProperty; rdfs:range earl:Validity . earl:Validity a rdfs:Class; rdfs:label "Validity"; rdfs:comment "The class of all EARL validity states."; is rdf:type of earl:Pass, earl:Fail, earl:NotApplicable, earl:NotTested, earl:CannotTell . # e.g. earl:passes a earl:ResultProperty; rdfs:label "passes"; earl:validity earl:Pass; earl:confidence earl:Certain . earl:fails a earl:ResultProperty; rdfs:label "fails"; earl:validity earl:Fail; earl:confidence earl:Certain . earl:notApplicableTo a earl:ResultProperty; rdfs:label "notApplicableTo"; earl:validity earl:NotApplicable; earl:confidence earl:Certain . earl:notTestedAgainst a earl:ResultProperty; rdfs:label "notTestedAgainst"; earl:validity earl:NotTested; earl:confidence earl:Certain . earl:cannotTell a earl:ResultProperty; rdfs:label "cannotTell"; earl:validity earl:CannotTell; earl:confidence earl:Certain . earl:suspectAgainst a earl:ResultProperty; rdfs:label "suspectAgainst"; earl:validity earl:Fail; earl:confidence earl:Likely . earl:ValidityProperty is rdf:type of earl:passes, earl:fails, earl:notApplicableTo, earl:notTestedAgainst, earl:cannotTell . earl:confidence a rdf:Property; rdfs:label "confidence"; rdfs:comment "for confidence(x, y), x has the confidence y"; rdfs:domain earl:ResultProperty; rdfs:range earl:ConfidenceLevel . earl:ConfidenceLevel a rdfs:Class; rdfs:label "ConfidenceLevel"; is rdf:type of earl:Certain, earl:Likely, earl:Unlikely . # earl:Assertion terms earl:testMode a rdf:Property; rdfs:label "testMode"; rdfs:comment "The test mode of some EARL assertion"; rdfs:domain earl:Assertion; rdfs:range earl:TestMode . earl:Manual a earl:TestMode; rdfs:label "Manual" . earl:Auto a earl:TestMode; rdfs:label "Auto" . earl:Heuristic a earl:TestMode; rdfs:label "Heuristic" . # earl:TestCase terms earl:id a rdf:Property; rdfs:label "id"; rdfs:domain [ daml:disjointUnionOf (earl:TestCase earl:TestCriteria earl:Exclusion earl:Suite) ]; rdfs:range earl:Id; rdfs:comment "A single guideline, checkpoint, etc." . earl:TestCase a rdfs:Class; rdfs:label "TestCase"; rdfs:comment """ The class of all TestCases. Conceptually, a Test Case is some resource to which another resource can be validated against - something for which it can be demonstrated that it passes or fails against (or otherwise). This may in fact include many things - validation classes, code test cases, or more subjective guidelines such as WCAG. Perhaps this is synonymous with "Class", and we're really just testing class membership? For example, validation is a test of whether a set of characters is in a particular document class. Testing against WCAG is testing for whether or not a document is in the class of accessible documents. Testing against a test file checks whether the code belongs to the "Pass" class created by the test file. """ . earl:suite a rdf:Property; rdfs:label "suite"; rdfs:domain [ daml:disjointUnionOf (earl:TestCase earl:TestCriteria earl:Exclusion) ]; rdfs:range earl:Suite; rdfs:comment """ A suite of checkpoints, guidelines, or any other form of rules that an earl:TestSubject can be evaluated against. e.g. WCAG 1.0 """ . earl:Suite daml:disjointWith earl:Id . earl:testCriteria a rdf:Property; rdfs:label "testCriteria"; rdfs:comment "The testCriteria for a TestCase"; rdfs:domain earl:TestCase; rdfs:range earl:TestCriteria . earl:TestCriteria a rdfs:Class; rdfs:label "TestCriteria"; rdfs:label "TestCriteria"; daml:unionOf ([ daml:onProperty earl:level; daml:minCardinality "1" ] [ daml:onProperty earl:excludes; daml:minCardinality "1" ]) . earl:excludes a rdf:Property; rdfs:label "excludes"; rdfs:comment "for excludes(x, y), TestCriteria x exclude the Exclusion y"; rdfs:domain earl:TestCriteria; rdfs:range earl:Exclusion . earl:level a rdf:Property; rdfs:label "level"; rdfs:domain earl:Exclusion, earl:TestCriteria; rdfs:comment """ This is a generic level of test criteria, for example, the priorities/levels in WCAG. These shouldn't be a string literal. """ . # # # # # # # # # # # # EARL Vocabulary # earl:EARL rdfs:label "EARL (Evaluation And Report Language)"; earl:version "1.0" . # earl:Assertor terms earl:operator a rdf:Property; rdfs:label "operator"; n:definition "for operator(x, y), y is the operator of x"; n:note "This is the operator of a machine (range undefined)"; rdfs:domain [ rdfs:subClassOf earl:Assertor ] . earl:contactInfo a rdf:Property; rdfs:label "contactInfo"; rdfs:domain earl:Assertor; # rdfs:range [ :notDefinedIn <> ]; rdfs:comment """ For contactInfo(x, y), y is some some kind of generic contact information for y. This is a sub classable property. A strict domain is used rather than a restriction so that one may infer that the subject is an Assertor. Not that that information would actually help. """ . earl:email a daml:UnambiguousProperty; rdfs:label "email"; rdfs:subPropertyOf earl:contactInfo; rdfs:seeAlso foaf:mbox; # a machine can have an earl:email, but not foaf:mbox rdfs:domain earl:Assertor; rdfs:range earl:Email; rdfs:comment """ Generally, for earl:email(x, y) x has an email address of y. The URI of the object will normally start with "mailto:", and will not be a literal. This is not a sub property of foaf:mbox! That property can only be applied to people. """ . earl:name a rdf:Property; rdfs:label "name"; n:definition "The common proper name for some earl:Assertor."; n:note "This is related to foaf:name."; rdfs:subPropertyOf foaf:name, rdfs:label; # Uh huh rdfs:domain earl:Assertor; rdfs:range rdfs:Literal . earl:platform a rdf:Property; rdfs:label "platform"; rdfs:comment """ For platform(x, y), y is the platform on which x ran/runs. E.g. the platform on which the test(s) were run, or the general platform on which something runs """ . earl:TestPlatform rdfs:label "TestPlatform"; rdfs:comment "The platform on which the test(s) were run" . earl:Platform rdfs:label "Platform"; rdfs:comment "The general platform on which something runs" . earl:os a rdf:Property; rdfs:label "os"; rdfs:subPropertyOf earl:platform; rdfs:comment """ The Operating System on which an assertion was run, or of which an Assertor uses. """ . earl:date a daml:UniqueProperty, daml:DatatypeProperty; rdfs:label "date"; rdfs:range earldata:Date; # domain undefined rdfs:comment "The date of a resource, with a specific datatype range" . earl:version a daml:UniqueProperty; rdfs:label "version"; rdfs:comment "For earl:version(x, y), read: x is of version y" . earl:format a rdf:Property; rdfs:label "format"; rdfs:domain earl:WebContent; rdfs:range rdfs:Literal; rdfs:comment "The MIME type of the WebContent subject, as a literal." . # Hmm... we should really model a bit more of HTTP earl:snapshot a rdf:Property; rdfs:label "snapshot"; rdfs:domain earl:TestSubject; rdfs:range generic:Fixed; # range is time invariant rdfs:comment """ Points to a snapshot of a serialization of the resource as it was when it was evaluated. """ . # Other Test Case stuff earl:repairInfo a rdf:Property; rdfs:label "repairInfo"; rdfs:comment "for repairInfo(x, y), y is repair information for x" . earl:RepairInfo rdfs:subClassOf [ daml:onProperty earl:expectedResult; daml:toClass rdfs:Literal ], [ daml:onProperty rdfs:comment; daml:toClass rdfs:Literal ] . earl:purpose a rdf:Property; rdfs:label "purpose"; rdfs:comment "For purpose(x, y), y is the (literal node) purpose of x"; rdfs:domain earl:TestCase; rdfs:range rdfs:Literal . earl:expectedResult a rdf:Property; rdfs:label "expectedResult"; rdfs:comment "The expected result of a test case" . earl:operatorInstruction a rdf:Property; rdfs:label "operatorInstructions"; rdfs:domain earl:TestCase; rdfs:range rdfs:Literal; rdfs:comment """ For operatorInstruction(x, y), y is an operator instruction for x. """ .