@base . @prefix rdf: . @prefix dc: . @prefix dcterms: . @prefix owl: . @prefix prov: . @prefix rdfs: . @prefix rlog: . @prefix rut: <> . @prefix spin: . @prefix xml: . @prefix xsd: . @prefix ns1: . a dcterms:LicenseDocument . <> dc:creator "Dimitris Kontokostas"@en, "Jens Lehmann"@en, "Patrick Westphal"@en, "Roland Cornelissen"@en, "Sebastian Hellmann"@en, "Sören Auer"@en ; dc:date "2013-10-01"^^xsd:date ; dc:description , , """The RDFUnit ontology describes concepts used in RDFUnit, a test driven RDF Validation framework that can run automatically generated (based on a schema) and manually generated test cases against an endpoint. It's best described in \"NLP data cleansing based on Linguistic Ontology constraints\" (ESWC 2014) p5-7, http://jens-lehmann.org/files/2014/eswc_rdfunit_nlp.pdf, includes the ontology diagram."""@en ; dc:issued "2013-10-01"^^xsd:date ; dc:modified "2014-01-10"^^xsd:date ; dc:rights "This ontology is licensed under Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0) and CC-BY (http://creativecommons.org/licenses/by/3.0/)"@en ; dcterms:license , ; dcterms:title "Test-Driven Data Validation Ontology"@en ; ns1:changes ; ns1:preferredNamespacePrefix "rut" ; ns1:preferredNamespaceUri "http://rdfunit.aksw.org/ns/core#" ; a owl:Ontology ; rdfs:comment """The RDFUnit ontology describes concepts used in RDFUnit, a test driven RDF Validation framework that can run automatically generated (based on a schema) and manually generated test cases against an endpoint. It's best described in \"NLP data cleansing based on Linguistic Ontology constraints\" (ESWC 2014) p5-7, http://jens-lehmann.org/files/2014/eswc_rdfunit_nlp.pdf, includes the ontology diagram."""@en ; rdfs:isDefinedBy ; rdfs:label "Test-Driven RDF Validation Ontology"@en ; rdfs:seeAlso ; owl:versionInfo "0.4.1" . rut:AggregatedTestCaseResult a owl:Class ; rdfs:comment "Aggregated results of a single TestCase execution"@en ; rdfs:label "AggregatedTestCaseResult"@en ; rdfs:subClassOf rut:StatusTestCaseResult, [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:resultCount ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:resultPrevalence ] . rut:Application a rut:TestAppliesTo, owl:NamedIndividual ; rdfs:comment "Application: When the tests are specific to an application only"@en ; rdfs:label "Application"@en . rut:AutoGenerated a rut:TestGenerationType, owl:NamedIndividual ; rdfs:comment "AutoGenerated: This test was created automatically"@en ; rdfs:label "AutoGenerated"@en . rut:Binding a owl:Class ; rdfs:comment "Binding of a pattern Parameter to a value"@en ; rdfs:label "Binding"@en ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:parameter ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:bindingValue ] . rut:Class a rut:ParameterConstraint, owl:NamedIndividual ; rdfs:comment "The parameter is restricted to a Class."@en ; rdfs:label "Class"@en . rut:Dataset a rut:TestAppliesTo, owl:NamedIndividual ; rdfs:comment "Dataset: When the tests apply to a dataset only (i.e. a SPARQL Endpoint)"@en ; rdfs:label "Dataset"@en . rut:EnrichedSchema a rut:TestAppliesTo, owl:NamedIndividual ; rdfs:comment "EnrichedSchema: When the tests apply to an ontology / vocabulary enriched with external (semi-)automatic approaches"@en ; rdfs:label "EnrichedSchema"@en . rut:ExtendedTestCaseResult a owl:Class ; rdfs:comment "An extended TestCaseResult that includes additional information: spin:violationRoot (offending resource), spin:violationPath (offending property), spin:violationValue (offending value), rut:errorPropertyContext (property also involved in the offense), and error classification, source and type. These are provided through rut:ResultAnotation"@en ; rdfs:label "ExtendedTestCaseResult"@en ; rdfs:subClassOf rut:RLOGTestCaseResult, spin:ConstraintViolation, [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty spin:violationRoot ] . rut:ManualTestCase a owl:Class ; rdfs:comment "A test case where the SPARQL is defined manually"@en ; rdfs:label "ManualTestCase"@en ; rdfs:subClassOf rut:TestCase, [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:sparqlWhere ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:sparqlPrevalence ] . rut:ManuallyGenerated a rut:TestGenerationType, owl:NamedIndividual ; rdfs:comment "ManuallyGenerated: This test was created manually"@en ; rdfs:label "ManuallyGenerated"@en . rut:None a rut:ParameterConstraint, owl:NamedIndividual ; rdfs:comment "The parameter can be anything, even a free variable (?var)"@en ; rdfs:label "None"@en . rut:Operator a rut:ParameterConstraint, owl:NamedIndividual ; rdfs:comment "The parameter can be an operator."@en ; rdfs:label "Operator"@en . rut:Parameter a owl:Class ; rdfs:comment "A pattern parameter. Has dct:identifier equal to the %%parameter%% placeholder. rut:parameterConstraint and rut:constraintPattern determine the possible values"@en ; rdfs:label "Parameter"@en ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty dcterms:identifier ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:parameterConstraint ], [ a owl:Restriction ; owl:maxCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:constraintPattern ] . rut:ParameterConstraint a owl:Class ; rdfs:comment "What can be substituted for a parameter, one of None (means anything), Operator, Resource, Property, Class"@en ; rdfs:label "ParameterConstraint"@en . rut:Pattern a owl:Class ; rdfs:comment "Data Quality Test Pattern (DQTP): a query with embedded %%parameter's%% and a corresponding list of rut:parameter's"@en ; rdfs:label "Pattern"@en ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty dcterms:identifier ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:sparqlWherePattern ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:sparqlPrevalencePattern ], [ a owl:Restriction ; owl:minCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:parameter ] . rut:PatternBasedTestCase a owl:Class ; rdfs:comment "A test case that is based on a Pattern instantiated with Bindings for each Parameter"@en ; rdfs:label "PatternBasedTestCase"@en ; rdfs:subClassOf rut:TestCase, [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:basedOnPattern ], [ a owl:Restriction ; owl:minCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:binding ] . rut:Property a rut:ParameterConstraint, owl:NamedIndividual ; rdfs:comment "The parameter is restricted to a property."@en ; rdfs:label "Property"@en . rut:RLOGTestCaseResult a owl:Class ; rdfs:comment "A TestCaseResult at the level of an individual rlog:resource (the resource that was tested), with rlog:message and rlog:level"@en ; rdfs:label "RLOGTestCaseResult"@en ; rdfs:subClassOf rlog:Entry, rut:TestCaseResult, [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rlog:resource ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rlog:message ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rlog:level ] . rut:Resource a rut:ParameterConstraint, owl:NamedIndividual ; rdfs:comment "The pattern can be a resource."@en ; rdfs:label "Resource"@en . rut:ResultAnnotation a owl:Class ; rdfs:comment "Used by a TestCase, TestAutoGenerator or Pattern to add properties to an ExtendedTestCaseResult."@en ; rdfs:label "ResultAnnotation"@en . rut:ResultStatus a owl:Class ; rdfs:comment "Result Status. One of Success, Fail, Timeout, Error"@en ; rdfs:label "ResultStatus"@en . rut:ResultStatusError a rut:ResultStatus, owl:NamedIndividual ; rdfs:comment "ResultStatusError: the test raised an error (eg HTTP error code)"@en ; rdfs:label "ResultStatusError"@en . rut:ResultStatusFail a rut:ResultStatus, owl:NamedIndividual ; rdfs:comment "ResultStatusFail: the test failed. rut:testCaseLogLevel further specifies the rlog:Level"@en ; rdfs:label "ResultStatusFail"@en . rut:ResultStatusSuccess a rut:ResultStatus, owl:NamedIndividual ; rdfs:comment "ResultStatusSuccess: the test succeeded"@en ; rdfs:label "ResultStatusSuccess"@en . rut:ResultStatusTimeout a rut:ResultStatus, owl:NamedIndividual ; rdfs:comment "ResultStatusTimeout: the test timed out"@en ; rdfs:label "ResultStatusTimeout"@en . rut:Schema a rut:TestAppliesTo, owl:NamedIndividual ; rdfs:comment "Schema: When the tests apply to an ontology / vocabulary"@en ; rdfs:label "Schema"@en . rut:StatusTestCaseResult a owl:Class ; rdfs:comment """The status and log level of a single TestCaseResult. TODO: Why is rut:testCaseLogLevel mandatory, doesn't it apply only when resultStatus=Fail? It's optional in rut:TestCase"""@en ; rdfs:label "StatusTestCaseResult"@en ; rdfs:subClassOf rut:TestCaseResult, [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:resultStatus ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty dcterms:description ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:testCaseLogLevel ] . rut:TestAppliesTo a owl:Class ; rdfs:comment "What does a test case apply to: Schema, EnrichedSchema, Dataset or Application"@en ; rdfs:label "TestAppliesTo"@en . rut:TestCase a owl:Class ; rdfs:comment "Superclass of all test cases. Defines properties that all cases should have, but concrete implementation occurs on subclasses."@en ; rdfs:label "TestCase"@en ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty dcterms:description ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:appliesTo ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:generated ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:source ], [ a owl:Restriction ; owl:minCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:references ] . rut:TestCaseDependency a owl:Class ; rdfs:comment "A dependency between two test cases"@en ; rdfs:label "TestCaseDependency"@en . rut:TestCaseResult a owl:Class ; rdfs:comment "The result of a TestExecution. Each result links to the TestCase (rut:testCase) it originated from, and to the TestExecution (prov:wasGeneratedBy) it is part of"@en ; rdfs:label "TestCaseResult"@en ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty prov:wasGeneratedBy ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:testCase ] . rut:TestExecution a owl:Class ; rdfs:comment "Holds the TestCaseResults of a TestSuite execution against a dataset. The results are linked to TestExecution by prov:wasGeneratedBy"@en ; rdfs:label "TestExecution"@en ; rdfs:subClassOf prov:Activity, [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty prov:startedAtTime ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty prov:endedAtTime ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:source ] . rut:TestGenerationType a owl:Class ; rdfs:comment "How a test case was created: Automatically generated or Manually made"@en ; rdfs:label "TestGenerationType"@en . rut:TestGenerator a owl:Class ; rdfs:comment "Generates TestCases based on a Pattern and a SPARQL query that instantiates the pattern Parameters"@en ; rdfs:label "TestGenerator"@en ; rdfs:subClassOf [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:sparqlGenerator ], [ a owl:Restriction ; owl:cardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty rut:basedOnPattern ] . rut:TestSuite a owl:Class ; rdfs:comment "A suite of TestCases, linked to it using prov:hadMember"@en ; rdfs:label "TestSuite"@en ; rdfs:subClassOf prov:Collection, [ a owl:Restriction ; owl:minCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty prov:hadMember ] . rut:annotationProperty a owl:ObjectProperty ; rdfs:comment "Property to add to ExtendedTestCaseResult, eg spin:violationPath, spin:violationValue, rut:errorPropertyContext"@en ; rdfs:domain rut:ResultAnnotation ; rdfs:label "annotationProperty"@en ; rdfs:range rdf:Property . rut:annotationValue a rdf:Property ; rdfs:comment "Value to add to ExtendedTestCaseResult. Either constant (eg rlog:WARN) or a string designating the query '?variable' or pattern '%%parameter%%' to use"@en ; rdfs:domain rut:ResultAnnotation ; rdfs:label "annotationValue"@en . rut:appliesTo a owl:ObjectProperty ; rdfs:comment "What does a test case apply to: Schema, EnrichedSchema, Dataset or Application"@en ; rdfs:domain rut:TestCase ; rdfs:label "appliesTo"@en ; rdfs:range rut:TestAppliesTo . rut:basedOnPattern a owl:ObjectProperty ; rdfs:comment "The Pattern instantiated by a PatternBasedTestCase or a TestGenerator"@en ; rdfs:label "basedOnPattern"@en ; rdfs:range rut:Pattern . rut:binding a owl:ObjectProperty ; rdfs:comment "Binding of a pattern Parameter to a value"@en ; rdfs:domain rut:PatternBasedTestCase ; rdfs:label "binding"@en ; rdfs:range rut:Binding . rut:bindingValue a rdf:Property ; rdfs:comment "the value provided for the bound Parameter"@en ; rdfs:domain rut:Binding ; rdfs:label "bindingValue"@en . rut:constraintPattern a owl:DatatypeProperty ; rdfs:comment "Regexp that further qualifies a rut:parameterConstraint, e.g. '<|<=|>|>=|=|!=' for a rut:Operator"@en ; rdfs:domain rut:Parameter ; rdfs:label "constraintPattern"@en ; rdfs:range xsd:string . rut:dependencyCondition a owl:ObjectProperty ; rdfs:comment "The rut:ResultStatus of the dependencyFrom case that triggers this dependency"@en ; rdfs:domain rut:TestCaseDependency ; rdfs:label "dependencyCondition"@en ; rdfs:range rut:ResultStatus . rut:dependencyExecute a owl:DatatypeProperty ; rdfs:comment """Whether to execute the dependencyTo case. If a case has multiple dependencies, it is executed only if all dependencyCondition's are satisfied, and all dependencyExecute's are true. TODO: IS THIS TRUE? Else: Only useful while debugging test suites"""@en ; rdfs:domain rut:TestCaseDependency ; rdfs:label "dependencyExecute"@en ; rdfs:range xsd:boolean . rut:dependencyFrom a owl:ObjectProperty ; rdfs:comment "Test case that preconditions the execution of another test case"@en ; rdfs:domain rut:TestCaseDependency ; rdfs:label "dependencyFrom"@en ; rdfs:range rut:TestCase . rut:dependencyTo a owl:ObjectProperty ; rdfs:comment "Test case whose execution depends on another test case"@en ; rdfs:domain rut:TestCaseDependency ; rdfs:label "dependencyTo"@en ; rdfs:range rut:TestCase . rut:errorClassification a owl:ObjectProperty ; rdfs:comment "High-level classification of the error. Usually a skos:Concept"@en ; rdfs:domain rut:ExtendedTestCaseResult ; rdfs:label "errorClassification"@en ; rdfs:subPropertyOf dcterms:subject . rut:errorPropertyContext a owl:ObjectProperty ; rdfs:comment "Property(ies) that also contributed to the offense (e.g. dbo:deathDate when spin:violationPath is dbo:birthDate)."@en ; rdfs:domain rut:ExtendedTestCaseResult ; rdfs:label "errorPropertyContext"@en ; rdfs:range rdf:Property . rut:errorSource a owl:ObjectProperty ; rdfs:comment "Source of the error, eg data parsing, data publishing, mapping, pre processing, post processing (if known beforehand). Usually a skos:Concept"@en ; rdfs:domain rut:ExtendedTestCaseResult ; rdfs:label "errorSource"@en ; rdfs:subPropertyOf dcterms:subject . rut:errorType a owl:ObjectProperty ; rdfs:comment "More specific error type, eg missing property, redundant property, inaccurate property. Usually a skos:Concept"@en ; rdfs:domain rut:ExtendedTestCaseResult ; rdfs:label "errorType"@en ; rdfs:subPropertyOf dcterms:subject . rut:generated a owl:ObjectProperty ; rdfs:comment "How the test was created: Automatically generated or Manually made."@en ; rdfs:domain rut:TestCase ; rdfs:label "generated"@en ; rdfs:range rut:TestGenerationType . rut:parameter a owl:ObjectProperty ; rdfs:comment "List of Parameters for the Pattern"@en ; rdfs:label "parameter"@en ; rdfs:range rut:Parameter . rut:parameterConstraint a owl:ObjectProperty ; rdfs:comment "What can be substituted for the parameter, one of None (means anything), Operator, Resource, Property, Class"@en ; rdfs:domain rut:Parameter ; rdfs:label "parameterConstraint"@en ; rdfs:range rut:ParameterConstraint . rut:references a owl:ObjectProperty ; rdfs:comment "The Classes and Properties involved in the described test case."@en ; rdfs:domain rut:TestCase ; rdfs:label "references"@en . rut:resultAnnotation a owl:ObjectProperty ; rdfs:comment "ResultAnnotation to apply to all results produced by a TestCase, TestAutoGenerator, or Pattern"@en ; rdfs:label "resultAnnotation"@en ; rdfs:range rut:ResultAnnotation . rut:resultCount a owl:DatatypeProperty ; rdfs:comment "The number of results having the given rut:resultStatus in StatusTestCaseResult execution. -1 means there was a timeout and -2 an error."@en ; rdfs:domain rut:Result ; rdfs:label "resultCount"@en ; rdfs:range xsd:integer . rut:resultPrevalence a owl:DatatypeProperty ; rdfs:comment "The total COUNT of instances tested by a TestCase execution. -1 means there was a timeout and -2 an error."@en ; rdfs:domain rut:AggregatedTestCaseResult ; rdfs:label "resultPrevalence"@en ; rdfs:range xsd:integer . rut:resultStatus a owl:ObjectProperty ; rdfs:comment "result status. One of Success, Fail, Timeout, Error"@en ; rdfs:label "resultStatus"@en ; rdfs:range rut:ResultStatus . rut:source a owl:ObjectProperty ; rdfs:comment "A schema (ontology), dataset or application that this test case was created for"@en ; rdfs:label "source"@en . rut:sparqlGenerator a owl:DatatypeProperty ; rdfs:comment "SPARQL SELECT query that instantiates test cases based on a Pattern. Must return variables named the same as the Pattern's parameters, plus a ?DESCRIPTION"@en ; rdfs:domain rut:TestGenerator ; rdfs:label "sparqlGenerator"@en ; rdfs:range xsd:string . rut:sparqlPrevalence a owl:DatatypeProperty ; rdfs:comment "A SPARQL query to COUNT the number of instances being tested"@en ; rdfs:domain rut:ManualTestCase ; rdfs:label "sparqlPrevalence"@en ; rdfs:range xsd:string . rut:sparqlPrevalencePattern a owl:DatatypeProperty ; rdfs:comment "A sparql query to COUNT the number of instances being tested. May reuse %%parameter's%% from rut:sparqlWherePattern. May be empty but should be present (TODO: why?)"@en ; rdfs:domain rut:Pattern ; rdfs:label "sparqlPrevalencePattern"@en ; rdfs:range xsd:string . rut:sparqlWhere a owl:DatatypeProperty ; rdfs:comment """The WHERE part of a SPARQL query. Must be enclosed in brackets {} and bind the following variables: ?resource: the instance (URI) where the constraint violation occurs; ?message: a logging message."""@en ; rdfs:domain rut:ManualTestCase ; rdfs:label "sparqlWhere"@en ; rdfs:range xsd:string . rut:sparqlWherePattern a owl:DatatypeProperty ; rdfs:comment "The WHERE part of a sparql query with %%parameter%% placeholders. Must bind variables ?resource and ?message (see rut:sparqlWhere)"@en ; rdfs:domain rut:Pattern ; rdfs:label "sparqlWherePattern"@en ; rdfs:range xsd:string . rut:testCase a owl:ObjectProperty ; rdfs:comment "The TestCase that this TestCaseResult originated from"@en ; rdfs:label "testCase"@en ; rdfs:range rut:TestCase . rut:testCaseLogLevel a owl:ObjectProperty ; rdfs:comment """rlog:Level that this TestCase will return in case of failure, or StatusTestCaseResult has recorded. Analogous to rlog:level, which applies to rlog:Entry and rut:RLOGTestCaseResult"""@en ; rdfs:label "testCaseLogLevel"@en ; rdfs:range rlog:Level . rut:testSuite a owl:ObjectProperty ; rdfs:comment """Links an ontology to a TestSuite for validating data adhering to that ontology. Usually each TestCase in the suite will have rut:appliesTo rut:Schema (or rut:EnrichedSchema), and link back to the ontology using rut:source"""@en ; rdfs:domain owl:Ontology ; rdfs:label "testSuite"@en ; rdfs:range rut:TestSuite . rut:testsError a owl:DatatypeProperty ; rdfs:comment "Total tests that raised an error in a TestExecution"@en ; rdfs:domain rut:TestExecution ; rdfs:label "testsError"@en ; rdfs:range xsd:nonNegativeInteger . rut:testsFailed a owl:DatatypeProperty ; rdfs:comment "Total tests that failed in a TestExecution"@en ; rdfs:domain rut:TestExecution ; rdfs:label "testsFailed"@en ; rdfs:range xsd:nonNegativeInteger . rut:testsRun a owl:DatatypeProperty ; rdfs:comment "Total tests run in a TestExecution"@en ; rdfs:domain rut:TestExecution ; rdfs:label "testsRun"@en ; rdfs:range xsd:nonNegativeInteger . rut:testsSucceeded a owl:DatatypeProperty ; rdfs:comment "Total tests that succedded in a TestExecution"@en ; rdfs:domain rut:TestExecution ; rdfs:label "testsSucceeded"@en ; rdfs:range xsd:nonNegativeInteger . rut:testsTimeout a owl:DatatypeProperty ; rdfs:comment "Total tests that timed out in a TestExecution"@en ; rdfs:domain rut:TestExecution ; rdfs:label "testsTimeout"@en ; rdfs:range xsd:nonNegativeInteger . a dcterms:LicenseDocument .