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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX earl: <http://www.w3.org/ns/earl#>
PREFIX linkml: <https://w3id.org/linkml/>
PREFIX doap: <http://usefulinc.com/ns/doap#>
PREFIX www: <http://www.w3.org/2002/07/>
PREFIX pointers: <http://www.w3.org/2009/pointers#>
PREFIX ns: <http://www.w3.org/ns/>
PREFIX spec: <http://xmlns.com/foaf/spec/#>
PREFIX schema: <http://schema.org/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX vann: <http://purl.org/vocab/vann/>

ns:earl a owl:Ontology ;
  schema:inLanguage "en" ;
  vann:preferredNamespacePrefix "earl" ;
  vann:preferredNamespaceUri "http://www.w3.org/ns/earl#"^^xsd:anyURI ;
  sh:declare [
    sh:prefix "earl" ;
    sh:namespace "http://www.w3.org/ns/earl#"^^xsd:anyURI
  ] , [
    sh:prefix "linkml" ;
    sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI
  ] , [
    sh:prefix "doap" ;
    sh:namespace "http://usefulinc.com/ns/doap#"^^xsd:anyURI
  ] , [
    sh:prefix "www" ;
    sh:namespace "http://www.w3.org/2002/07/"^^xsd:anyURI
  ] , [
    sh:prefix "pointers" ;
    sh:namespace "http://www.w3.org/2009/pointers#"^^xsd:anyURI
  ] , [
    sh:prefix "ns" ;
    sh:namespace "http://www.w3.org/ns/"^^xsd:anyURI
  ] , [
    sh:prefix "spec" ;
    sh:namespace "http://xmlns.com/foaf/spec/#"^^xsd:anyURI
  ] .

earl:OutcomeValue a owl:Class ;
  rdfs:label "Outcome Value"@en ;
  rdfs:comment "a discrete value that describes a resulting condition from carrying out the test"@en .

earl:Software a owl:Class ;
  rdfs:label "Software"@en ;
  rdfs:comment "any piece of software such as an authoring tool, browser, or evaluation tool"@en ;
  rdfs:subClassOf doap:Project .

earl:TestResult a owl:Class ;
  rdfs:label "Test Result"@en ;
  rdfs:comment "the actual result of performing the test"@en ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty earl:outcome ;
    owl:allValuesFrom earl:OutcomeValue
  ] , [
    a owl:Restriction ;
    owl:onProperty earl:info ;
    owl:allValuesFrom rdfs:Literal
  ] .

earl:TestCase a owl:Class ;
  rdfs:label "Test Case"@en ;
  rdfs:comment "an atomic test, usually one that is a partial test for a requirement"@en ;
  rdfs:subClassOf earl:TestCriterion .

earl:Assertion a owl:Class ;
  rdfs:label "Assertion"@en ;
  rdfs:comment "a statement that embodies the results of a test"@en ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty earl:subject ;
    owl:allValuesFrom earl:TestSubject
  ] , [
    a owl:Restriction ;
    owl:onProperty earl:mode ;
    owl:allValuesFrom earl:TestMode
  ] , [
    a owl:Restriction ;
    owl:onProperty earl:test ;
    owl:allValuesFrom earl:TestCriterion
  ] , [
    a owl:Restriction ;
    owl:onProperty earl:assertedBy ;
    owl:allValuesFrom earl:Assertor
  ] , [
    a owl:Restriction ;
    owl:onProperty earl:result ;
    owl:allValuesFrom earl:TestResult
  ] .

earl:Assertor a owl:Class ;
  rdfs:label "Assertor"@en ;
  rdfs:comment "an entity such as a person, a software tool, an organization, or any other grouping that carries out a test collectively"@en ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty earl:mainAssertor ;
    owl:allValuesFrom earl:Assertor
  ] .

earl:TestCriterion a owl:Class ;
  rdfs:label "Test Criterion"@en ;
  rdfs:comment "a testable statement, usually one that can be passed or failed"@en .

earl:TestRequirement a owl:Class ;
  rdfs:label "Test Requirement"@en ;
  rdfs:comment "a higher-level requirement that is tested by executing one or more sub-tests"@en ;
  rdfs:subClassOf earl:TestCriterion .

earl:TestSubject a owl:Class ;
  rdfs:label "Test Subject"@en ;
  rdfs:comment "the class of things that have been tested against some test criterion"@en .

doap:Project a owl:Class .

pointers:Pointer a owl:Class .

ns:TestResult a owl:Class ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty earl:pointer ;
    owl:allValuesFrom pointers:Pointer
  ] .

www:owlOntology a owl:Class .

earl:subject a owl:ObjectProperty ;
  rdfs:label "Subject"@en ;
  rdfs:comment "test subject of an assertion"@en ;
  rdfs:range earl:TestSubject ;
  rdfs:domain earl:Assertion .

earl:outcome a owl:ObjectProperty ;
  rdfs:label "Outcome"@en ;
  rdfs:comment "outcome of performing the test"@en ;
  rdfs:range earl:OutcomeValue ;
  rdfs:domain earl:TestResult .

earl:pointer a owl:ObjectProperty ;
  rdfs:label "Pointer"@en ;
  rdfs:comment "location within a test subject that are most relevant to a test result"@en ;
  rdfs:range pointers:Pointer ;
  rdfs:domain ns:TestResult .

earl:info a owl:DatatypeProperty ;
  rdfs:label "Info"@en ;
  rdfs:comment "additional warnings or error messages in a human-readable form"@en ;
  rdfs:domain earl:TestResult .

earl:mode a owl:ObjectProperty ;
  rdfs:label "Mode"@en ;
  rdfs:comment "mode in which the test was performed"@en ;
  rdfs:range earl:TestMode ;
  rdfs:domain earl:Assertion .

earl:test a owl:ObjectProperty ;
  rdfs:label "Test"@en ;
  rdfs:comment "test criterion of an assertion"@en ;
  rdfs:range earl:TestCriterion ;
  rdfs:domain earl:Assertion .

earl:mainAssertor a owl:ObjectProperty ;
  rdfs:label "Main Assertor"@en ;
  rdfs:comment "assertor that is primarily responsible for performing the test"@en ;
  rdfs:range earl:Assertor ;
  rdfs:domain earl:Assertor ;
  rdfs:subPropertyOf spec:term_member .

earl:assertedBy a owl:ObjectProperty ;
  rdfs:label "Asserted By"@en ;
  rdfs:comment "assertor of an assertion"@en ;
  rdfs:range earl:Assertor ;
  rdfs:domain earl:Assertion .

earl:result a owl:ObjectProperty ;
  rdfs:label "Result"@en ;
  rdfs:comment "result of an assertion"@en ;
  rdfs:range earl:TestResult ;
  rdfs:domain earl:Assertion .

spec:term_member a owl:ObjectProperty .

earl:CannotTell a owl:Class ;
  rdfs:label "Undetermined"@en ;
  rdfs:comment "the class of outcomes to denote an undetermined outcome"@en ;
  rdfs:subClassOf earl:OutcomeValue ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( earl:cantTell )
  ] .

earl:cantTell a owl:NamedIndividual ;
  rdfs:label "Cannot tell"@en ;
  rdfs:comment "it is unclear if the subject passed or failed the test"@en ;
  a earl:CannotTell .

earl:Fail a owl:Class ;
  rdfs:label "Fail"@en ;
  rdfs:comment "the class of outcomes to denote failing a test"@en ;
  rdfs:subClassOf earl:OutcomeValue ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( earl:failed )
  ] .

earl:failed a owl:NamedIndividual ;
  rdfs:label "Failed"@en ;
  rdfs:comment "the subject failed the test"@en ;
  a earl:Fail .

earl:NotApplicable a owl:Class ;
  rdfs:label "Not applicable"@en ;
  rdfs:comment "the class of outcomes to denote the test is not applicable"@en ;
  rdfs:subClassOf earl:OutcomeValue ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( earl:inapplicable )
  ] .

earl:inapplicable a owl:NamedIndividual ;
  rdfs:label "Inapplicable"@en ;
  rdfs:comment "the test is not applicable to the subject"@en ;
  a earl:NotApplicable .

earl:NotTested a owl:Class ;
  rdfs:label "Not tested"@en ;
  rdfs:comment "the class of outcomes to denote the test has not been carried out"@en ;
  rdfs:subClassOf earl:OutcomeValue ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( earl:untested )
  ] .

earl:untested a owl:NamedIndividual ;
  rdfs:label "Untested"@en ;
  rdfs:comment "the test has not been carried out"@en ;
  a earl:NotTested .

earl:Pass a owl:Class ;
  rdfs:label "Pass"@en ;
  rdfs:comment "the class of outcomes to denote passing a test"@en ;
  rdfs:subClassOf earl:OutcomeValue ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( earl:passed )
  ] .

earl:passed a owl:NamedIndividual ;
  rdfs:label "Passed"@en ;
  rdfs:comment "the subject passed the test"@en ;
  a earl:Pass .

earl:TestMode a owl:Class ;
  rdfs:label "Test Mode"@en ;
  rdfs:comment "describes how a test was carried out"@en ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( earl:undisclosed earl:semiAuto earl:automatic earl:unknownMode earl:manual )
  ] .

earl:undisclosed a owl:NamedIndividual ;
  rdfs:label "Undisclosed"@en ;
  rdfs:comment "where the exact testing process is undisclosed"@en ;
  a earl:TestMode .

earl:semiAuto a owl:NamedIndividual ;
  rdfs:label "Semi-Automatic"@en ;
  rdfs:comment "where the test was partially carried out by software tools, but where human input or judgment was still required to decide or help decide the outcome of the test"@en ;
  a earl:TestMode .

earl:automatic a owl:NamedIndividual ;
  rdfs:label "Automatic"@en ;
  rdfs:comment "where the test was carried out automatically by the software tool and without any human intervention"@en ;
  a earl:TestMode .

earl:unknownMode a owl:NamedIndividual ;
  rdfs:label "Unknown"@en ;
  rdfs:comment "where the testing process is unknown or undetermined"@en ;
  a earl:TestMode .

earl:manual a owl:NamedIndividual ;
  rdfs:label "Manual"@en ;
  rdfs:comment "where the test was carried out by human evaluators"@en ;
  a earl:TestMode .

schema:inLanguage a owl:AnnotationProperty .

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

sh:declare a owl:AnnotationProperty .

sh:prefix a owl:AnnotationProperty .

sh:namespace a owl:AnnotationProperty .
