<%@page %> <%-- This file is the text of the working draft. It excludes the stuff before the TOC; the TOC; and the tests themselves. TODO for making editors PR - delete proposed.zip - delete proposed appendix --%> <%=head(1,"introduction","Introduction")%>

As part of the definition of the Web Ontology Language (OWL) the Web Ontology Working Group provides a set of test cases. This document presents those test cases. They are intended to provide examples for, and clarification of, the normative definition of OWL found in <%=ref("OWL Semantics and Abstract Syntax")%> to which this document is subsidiary.

This document is one component of the description of OWL, the Web Ontology Language, being produced by the W3C Web Ontology Working Group. The Document Roadmap section of the <%=ref("OWL Overview")%> describes each of the different parts and how they fit together.

This document describes the various types of test used and the format in which the tests are presented. Alternative formats of the test collection are provided. These are intended to be suitable for use by OWL developers in test harnesses, possibly as part of a test driven development process, such as Extreme Programming <%=ref("XP")%>. The format of the Manifest files used as part of these alternative formats is described.

<%--

This document describes the process for conflict resolution and errata related to these tests.

--%>

In the non-normative appendices, this document also describes the process for creation and approval of these tests.

<%--

Further appendices show further proposed tests.

--%> <%=head(2,"scope","Conformance and Scope")%>

Various conformance levels are defined in this document in terms of <%=ref("OWL Semantics and Abstract Syntax")%>.

However, the test cases do not constitute a conformance test suite for OWL, since they are silent on several important issues. This document cannot be considered a complete specification of OWL.

The tests illustrate issue resolutions, and illustrate the use and meaning of the terms in the OWL namespace.

There are other miscellaneous tests: some arising in the literature, and in preexisting systems; others intending to show the difficulty of complete implementations of OWL Full.

<%=head(1,"deliverables","Deliverables (Normative)")%>

The deliverables included as part of the test cases are:

Note: Other files can be found under the top URL of the Web site which are not part of the deliverable.

<%=head(2,"normativity","Normative Status")%>

Of the deliverables the only normative tests are those included in this document. All other deliverables are informative. Moreover, the recommendation document is informative except for the conformance statements, the test data (specified in RDF/XML <%=ref("RDF Syntax")%>), and the supporting documentation.

<%--
--%> <%=head(2,"extraCredit","Extra Credit Tests")%>

The Web Ontology Working Group has seen adequate implementation experience of most of the tests in this document. Some, however, are particularly difficult to implement efficiently. These are labelled as extra credit tests. Such tests indicate the semantics of OWL, but may use features that are not sufficiently widely implemented to provide good interoperability.

A general case of extra credit tests is that all OWL Full nonentailments and consistency tests are extra credit tests. This is because typical OWL Full implementations prove entailments but cannot prove nonentailments.

Extra credit tests are labelled with "EC" within this document and with status EXTRACREDIT in the manifest files.

The name indicates that there is no expectation that any implementation will successfully run such tests and any that do gain extra credit.

<%--
--%> <%=head(1,"testTypes","Test Types (Normative)")%>

Each test consists of one or more RDF/XML documents and a Manifest file. Tests of one document indicate some property of that document when viewed as an OWL knowledge base. Tests of two or more documents indicate a relationship between the two documents when viewed as OWL knowledge bases.

The Manifest file is named <%=named("Manifest")%> (The NNN is replaced by the test number). It contains metadata (in RDF) indicating the test type, and describing the test.

The metadata also indicates the language levels appropriate for each test and each document in each test. For each RDF/XML document, one language level is indicated, being OWL Lite, OWL DL or OWL Full, as given by the syntactic rules in <%=ref("OWL Semantics and Abstract Syntax")%>. For semantic tests, one or two language levels are indicated. If the language level OWL Full is indicated for a semantic test, then the test holds according to the RDF-Compatible Model-Theoretic Semantics in <%=ref("OWL Semantics and Abstract Syntax")%>. If the language level OWL Lite or OWL DL is indicated for a semantic test, then the test holds according to the Direct Model-Theoretic Semantics in <%=ref("OWL Semantics and Abstract Syntax")%>. If the language level OWL Lite is indicated for a semantic test, then the test only uses features within the OWL Lite sublanguage.

Some of the tests require that certain datatypes are, or are not, supported in the datatype map <%=ref("OWL Semantics and Abstract Syntax")%>. These are indicated with the test. Other datatypes which are used in the test are also indicated: the test applies whether or not these are supported in the datatype map . The datatypes xsd:integer, xsd:string from <%=ref("XML Schema Datatypes")%> are not indicated, even when used or required, since they must be supported.

<%=head(2,"testBadOwl","Tests for Incorrect Use of OWL Namespace")%>

These tests use one document. It is named <%=named("bad")%>. This document includes a use of the OWL namespace with a local name that is not defined by the OWL recommendation. An OWL Syntax checker SHOULD give a warning.

Note: These tests are intended to help migration from DAML+OIL <%=ref("DAML+OIL")%>, since the local names chosen are defined in the DAML+OIL namespace.

<%=head(2,"testEntailment","Entailment Tests")%>

These tests use two documents. One is named <%=named("premises")%>, the other is named <%=named("conclusions")%>. The conclusions are entailed by the premises. Such entailment is defined by the OWL semantics <%=ref("OWL Semantics and Abstract Syntax")%>, (see also OWL Full entailment).

<%=head(2,"testNonEntailment","Non-Entailment Tests")%>

These tests use two documents. One is named <%=named("premises")%>, the other is named <%=named("nonconclusions")%>. The nonconclusions are not entailed by the premises. Such entailment is defined by the OWL semantics <%=ref("OWL Semantics and Abstract Syntax")%>, (see also OWL Full entailment).

Exceptionally, test imports-002 includes a third document.

<%=head(2,"testTrue","True Tests")%>

These tests use one document. It is named <%=named("conclusions")%>. The conclusions follow from the OWL semantics <%=ref("OWL Semantics and Abstract Syntax")%>. These tests are a special case of the entailment tests in which the premises are empty.

<%=head(2,"testOWLforOWL","OWL for OWL Tests")%>

These tests use one document. It is named <%=named("conclusions")%>. These are a special case of true tests. The conclusions follow from the OWL Full semantics <%=ref("OWL Semantics and Abstract Syntax")%>. The tests are intended to illustrate how OWL Full can be used to describe its own properties and classes.

<%=head(2,"testConsistency","Consistency Tests")%>

These tests use one document. It is named <%=named("consistent")%>. The document is consistent as defined by the OWL Semantics <%=ref("OWL Semantics and Abstract Syntax")%>, (see also OWL Full consistency).

<%=head(2,"testInconsistency","Inconsistency Tests")%>

These tests use one document. It is named <%=named("inconsistent")%>. The document is not consistent as defined by the OWL semantics <%=ref("OWL Semantics and Abstract Syntax")%>, (see also OWL Full consistency).

<%=head(2,"testImportEntailment","Import Entailment Tests")%>

These tests use more than two documents. One is named <%=named("premises")%>, another is named <%=named("conclusions")%>, the rest have names like supportNNN-A.rdf. The support documents are in the imports closure of the premises document. The conclusions are entailed by the imports closure of the premises. Such entailment is defined by the OWL semantics <%=ref("OWL Semantics and Abstract Syntax")%>, (see also OWL Full entailment).

<%=head(2,"testImportLevel","Import Level Tests")%>

These tests use two documents. One is named <%=named("imports")%>, the other is named <%=named("main")%>. These tests indicate the interaction between owl:imports and the sublanguage levels of the main document.

<%=head(1,"conformance","Conformance (Normative)")%> <%=head(2,"docConformance","Document Conformance")%> <%=head(3,"syntaxConformance","Syntactic Conformance")%>

An OWL Full document is any RDF/XML document <%=ref("RDF Syntax")%>.

An OWL DL document is an OWL Full document such that the imports closure <%=ref("OWL Semantics and Abstract Syntax")%> of the corresponding RDF graph <%=ref("RDF Concepts")%> is an OWL DL ontology in RDF graph form.

An OWL Lite document is an OWL Full document such that the imports closure <%=ref("OWL Semantics and Abstract Syntax")%> of the corresponding RDF graph <%=ref("RDF Concepts")%> is an OWL Lite ontology in RDF graph form.

<%=head(3,"consistencyConformance","Semantic Conformance")%> <%-- OLD TEXT

An OWL document is consistent with respect to a datatype theory <%=ref("OWL Semantics and Abstract Syntax")%>, if and only if there exists some model of the document that is consistent with the constraints specified by the relevant model theory (see <%=ref("OWL Semantics and Abstract Syntax")%>: OWL Lite and OWL DL, OWL Full).

--%>

An OWL Lite or OWL DL document D is OWL DL consistent with respect to a datatype map T if and only if there is some abstract OWL interpretation I with respect to T such that I satisfies an abstract ontology O corresponding to D, in which O has a separated vocabulary; (see <%=ref("OWL Semantics and Abstract Syntax")%>).

An OWL Full document D is OWL Full consistent with respect to a datatype map T, if and only if there is some OWL Full interpretation I with respect to T such that I satisfies all the RDF graphs in some imports closed collection containing an RDF graph corresponding to D.

<%=head(2,"checkerConformance","Document Checker Conformance")%>

This section uses the words MUST, MUST NOT, SHOULD and MAY as in <%=ref("RFC 2119")%>.

<%=head(3,"syntaxChecker","Syntax Checker")%>

An OWL syntax checker takes a document as input, and returns one word being one of Lite, DL, Full, Other.

The return value MUST conform with the following:

Lite
The input document is an OWL Lite document.
DL
The input document is an OWL DL document but not an OWL Lite document.
Full
The input document is an OWL Full document but not an OWL DL document.
Other
The input document is not an OWL Full document.

In addition, an OWL Syntax Checker SHOULD report a warning if the RDF graph <%=ref("RDF Concepts")%> corresponding to the document uses any URI references starting with the prefix http://www.w3.org/2002/07/owl# except those found in the <%=ref("RDF Schema for OWL")%>.

An OWL syntax checker SHOULD report network errors occurring during the computation of the imports closure.

<%=head(3,"consistencyChecker","Consistency Checker")%>

An OWL consistency checker takes a document as input, and returns one word being Consistent, Inconsistent, or Unknown.

An OWL consistency checker SHOULD report network errors occurring during the computation of the imports closure.

An OWL consistency checker MUST provide a means to determine the datatypes supported by its datatype map, <%=ref("OWL Semantics and Abstract Syntax")%>; for example, by listing them in its supporting documentation.

An OWL consistency checker MUST provide a means to determine the model theory <%=ref("OWL Semantics and Abstract Syntax")%>, it uses (either the Direct Model-Theoretic Semantics or the RDF-Compatible Model-Theoretic Semantics); for example, in its supporting documentation.

An OWL consistency checker MUST be sound: it MUST return Consistent only when the input document is consistent and Inconsistent only when the input document is not consistent, with respect to the datatype map of the checker.

If an input document uses datatypes that are not supported by the datatype map of an OWL consistency checker then it MAY report a warning.

An OWL consistency checker is complete and terminating, if, given sufficient (but finite) resources (CPU cycles and memory) and the absence of network errors, it will always return either Consistent or Inconsistent. It has been shown that for OWL Lite and DL it is possible to construct a complete and terminating consistency checker (the languages are decidable), and that for OWL full it is not possible to construct a complete and terminating consistency checker (the language is undecidable, <%=ref("Practical Reasoning")%>).

The datatype map of an OWL consistency checker MUST minimally support at least xsd:integer, xsd:string from <%=ref("XML Schema Datatypes")%>.

An OWL consistency checker SHOULD NOT return Unknown. Unknown, while sometimes needed, is not a desired response.

Four different conformance classes of OWL consistency checker are defined.

An OWL Lite consistency checker is an OWL consistency checker that takes an OWL Lite document as input, and uses the Direct Model-Theoretic Semantics.

An OWL DL consistency checker is an OWL consistency checker that takes an OWL DL document as input and uses the Direct Model-Theoretic Semantics.

An OWL Full consistency checker is an OWL consistency checker that takes an OWL Full document as input and uses the RDF-Compatible Model-Theoretic Semantics.

The datatype map of an OWL Full consistency checker MUST also support rdf:XMLLiteral from <%=ref("RDF Concepts")%>, see <%=ref("RDF Semantics")%>.

A complete OWL Lite consistency checker is an OWL Lite consistency checker that is complete and terminating.

Note: An OWL Full consistency checker may indicate that an OWL DL document is inconsistent, while an OWL DL consistency checker indicates that the same document is consistent, (for example: compare test Thing-005 with Thing-004 or compare AnnotationProperty-001 with AnnotationProperty-002). Every OWL DL consistency checker is also an OWL Lite consistency checker.

<%-- This requirement also clarifies that techniques essential <%=ref("Patent Policy")%> in non-trivial consistency checkers are normative in this recommendation. --%> <%--

A complete and terminating OWL DL consistency checker is an OWL consistency checker that is complete and terminating.

--%>

Note: <%-- decisive OWL DL consistency checkers and --%> A complete OWL Lite consistency checker MAY return Unknown for an OWL Lite document in the case where a resource limit has been exceeded.

Note: The usage of the word 'complete' in this section follows the conventions of the description logic community. In some other communities the word 'complete' is used in a weaker sense, refering to the detection of inconsistency by logical inference systems.

<%=head(1,"running","Testing an OWL Implementation (Informative)")%> <%=head(2,"runningSyntaxChecker","OWL Syntax Checkers")%>

An OWL syntax checker when presented with any of the test files must return the indicated result. <%----%> This includes the extra credit tests. <%----%>

<%=head(2,"runningConsistencyChecker","OWL Consistency Checker")%>

An OWL consistency checker can be tested using appropriate consistency and inconsistency tests. Appropriate tests are those of an appropriate level and for which the checker has appropriate datatype support. The level of the test indicates the semantic theory being used, which may differ from the level of the file. For example, test Thing-004 contains an OWL DL file which is consistent as an OWL DL consistency test, but inconsistent as an OWL Full consistency test.

An OWL consistency checker has appropriate datatype support for a test if both:

An OWL Lite consistency checker with appropriate datatype support, when presented with a file from an OWL Lite consistency test, must return Consistent or Unknown.

An OWL DL consistency checker with appropriate datatype support, when presented with a file from an OWL DL or OWL Lite consistency test, must return Consistent or Unknown.

An OWL Full consistency checker with appropriate datatype support, when presented with a file from an OWL Full consistency test, must return Consistent or Unknown.

The corresponding inconsistency tests must return Inconsistent or Unknown.

A complete OWL Lite consistency checker <%--or a complete and terminating OWL DL consistency checker --%> should not return Unknown on the OWL Lite consistency or inconsistency tests, regardless of the use of unsupported datatypes.

<%--
--%>

The above constraints also apply to extra credit tests. Consistency checkers that return the correct answer (i.e. not Unknown) gain the extra credit.

<%--
--%> <%=head(1,"manifest","Manifest Files (Informative)")%>

The Manifest file follows the RDF schema developed for the RDF Test Cases <%=ref("RDF Tests")%>.

This is augmented by a few new properties and types which are declared in the OWL Test Ontology, found at http://www.w3.org/2002/03owlt/testOntology.

Specifically each test has its own Manifest file, and is identified from the URI reference formed from the Manifest file's URL with a fragment test.

The test has one rdf:type explicit, and this is one of:

otest:NotOwlFeatureTest
A test for the incorrect use of the OWL namespace name.
otest:PositiveEntailmentTest
An entailment test.
otest:NegativeEntailmentTest
A non-entailment test.
otest:TrueTest
A true test.
otest:OWLforOWLTest
An OWL for OWL test.
otest:ConsistencyTest
A consistency test.
otest:InconsistencyTest
An inconsistency test.
otest:ImportEntailmentTest
An import entailment test.
otest:ImportLevelTest
An import level test.

Where otest is bound to http://www.w3.org/2002/03owlt/testOntology# and rtest is bound to http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#.

The name of the original author of the test is shown using a dc:creator property, see <%=ref("Dublin Core")%>.

A description of the test is given (using XHTML markup <%=ref("XHTML")%>) as the value of the rtest:description property.

An issue, if any, from the OWL Issues list <%=ref("OWL Issues")%>, is the value of a rtest:issue property.

An appropriate language feature, from the OWL namespace, if any, is the value of the otest:feature property.

The input documents with the test data are found as the value of the rtest:inputDocument property or as the value of both the rtest:premiseDocument and the rtest:conclusionDocument. The support files for import entailment tests, import level tests and test imports-002 are found as the values of otest:importedPremiseDocument.

The conformance levels associated with both files and tests are given with the otest:level property. The value for each document is one of otest:Full, otest:DL, otest:Lite or otest:Other. Each test is explicitly associated with one or two levels. If it is associated with otest:Lite then it is implicitly suitable for otest:DL.

The datatypes used in the test are given with the otest:usedDatatype property or with one of its subproperties: otest:supportedDatatype or otest:notSupportedDatatype. These indicate that the test is only valid when the datatype is supported or not supported respectively by the datatype map being used.

<%--
--%>

The rtest:status of the test reflects the process of appendix A. It is given as one of the following levels:

APPROVED
This indicates that the test has been approved by the Web Ontology Working Group, and that implementors are expected to implement such functionality.
EXTRACREDIT
This indicates that the test has been approved by the Web Ontology Working Group, but that implementors are not expected to implement such functionality.
PROPOSED
This indicates that the test is awaiting approval.
OBSOLETED
The test, which was proposed or approved, has ceased to be appropriate.
REJECTED
The Web Ontology Working Group rejected the test (not used).
<%--
--%> <%@ include file="tests0.jsp" %> <% if (editorsDraft) { %> <%=head(1,"editorialIssues","Editorial Issues (Informative)")%>

The existence of an issue in this section does not constitute a promise that this will be addressed before the Proposed Recommendation.

<%=head(2,"editorialIssuesMachine","Arising from Automated Checking")%>

Most of these issues will be ignored.

<%=approved.getErrors()%> <%=Manifest.loader.getErrors()%>

<% } %>
<% { Map subIndex; %> <%=head(1,"testIndex","Index")%> <%--

This index does not differentiate between approved and proposed tests.

--%> <%=head(2,"testIndexFunction","Index of OWL Feature Tests")%> <% subIndex = featureIndex; %> <%@ include file="subIndex.jsp" %> <%=head(2,"testIndexIssue","Index of OWL Issue Tests")%> <% subIndex = issueIndex; %> <%@ include file="subIndex.jsp" %> <%=head(2,"testIndexMisc","Index of Miscellaneous Tests")%> <% subIndex = miscIndex; %> <%@ include file="subIndex.jsp" %> <%=head(2,"testIndexDL","Index of Description Logic Tests")%> <% subIndex = dlIndex; %> <%@ include file="subIndex.jsp" %> <%=head(2,"testIndexExtra","Index of Extra Credit Tests")%> <% subIndex = extraIndex; %> <%@ include file="subIndex.jsp" %> <% } %>

<%=head(1,"acknowledgments","Acknowledgments (Informative)")%>

Jeremy Carroll thanks Oreste Signore, his host at the W3C Office in Italy and Istituto di Scienza e Tecnologie dell'Informazione "Alessandro Faedo", part of the Consiglio Nazionale delle Ricerche, where Jeremy is a visiting researcher.

The following people have contributed tests to this document: <% { String a[] = Manifest.authors(); for (int i=0;i <%=a[i]%>, <% } } %> and the editors.

Ian Horrocks contributed to the conformance section of this document.

Sandro Hawke created the tests results page, that has been a great help during the Candidate Recommendation phase.

We thank those who gave test reports and other feedback during the Candidate Recommendation: Ken Baclawski, Sean Bechhofer, Ian Dickinson, Michael Grove, Sandro Hawke, Ian Horrocks, Minsu Jang, Gary Ng, Mehrdad Omidvari, Bijan Parsia, Peter F. Patel-Schneider, Dave Reynolds, Rob Shearer, Evren Sirin, Charles White and Youyong Zou. We also thank the many others who helped develop the systems which produced these reports.

This document is the result of extensive discussions within the Web Ontology Working Group as a whole. The partipants in this Working Group included: Yasser alSafadi, Jean-François Baget, James Barnette, Sean Bechhofer, Jonathan Borden, Stephen Buswell, Jeremy Carroll, Dan Connolly, Peter Crowther, Jonathan Dale, Jos De Roo, David De Roure, Mike Dean, Larry Eshelman, Jérôme Euzenat, Tim Finin, Nicholas Gibbins, Sandro Hawke, Patrick Hayes, Jeff Heflin, Ziv Hellman, James Hendler, Bernard Horan, Masahiro Hori, Ian Horrocks, Jane Hunter, Rüdiger Klein, Natasha Kravtsova, Ora Lassila, Deborah McGuinness, Enrico Motta, Leo Obrst, Mehrdad Omidvari, Martin Pike, Marwan Sabbouh, Guus Schreiber, Noboru Shimizu, Michael K. Smith, John Stanton, Lynn Andrea Stein, Herman ter Horst, David Trastour, Frank van Harmelen, Bernard Vatant, Raphael Volz, Evan Wallace, Christopher Welty, Charles White, Frederik Brysse, Francesco Iannuzzelli, Massimo Marchiori, Michael Sintek and John Yanosy.

<%=head(1,"changes-since-PR","Changes Since Proposed Recommendation")%>

This section gives the changes between this document and the OWL Test Cases Proposed Recommendation.

The term datatype map is used instead of the term datatype theory, for consistency with the OWL and RDF Semantics. This occurred a number of times, including in the descriptions of tests miscellaneous-204, miscellaneous-205 and I5.8-012. The last of these consequentially required other minor rephrasing.

Updated references to RDF and OWL documents.

Added a paragraph near end of section 4.2.2, clarifying that a datatype map of an OWL Full consistency checker, (being a datatype map from RDF Semantics) "MUST" contain an entry for rdf:XMLLiteral. This makes explicit a requirement that was already implicit in the PR document. Also clarified that the datatype map in the definition of an OWL Full consistent document is as defined in RDF Semantics, by changing the link.

Consequentially, made explicit reference to RDF Semantics (this reference was implicit in the OWL Test Proposed Recommendation).

Corrected an error in the metadata of test miscellaneous-205 which is not applicable for OWL Full, since rdf:XMLLiteral is a required datatype for OWL Full. This change is visible as the deletion of the word "Full" from the header of the test.

This error in the OWL Test Candidate and Proposed Recommendation appears to have been relatively benign:

<% if (editorsDraft) { %> <% } %> <%=head(1,"references","References")%>