---------------------------------------------------------------------- Release 3.1.0 ---------------------------------------------------------------------- This version of the API includes various bug fixes and enhancements since version 3.0.0. Changes to the representation of literals: Please note that there is a slight incompatibility between version 3.1.0 and version 3.0.0. This is due to some changes in the way that literals are represented and handled in the API. There was a disparity between how they are described in the OWL 2 specification and how they are represented in version 3.0.0 of the API. The changes bring 3.1.0 inline with the OWL 2 specification. The changes are as follows: OWLStringLiteral and OWLTypedLiteral have been removed and replaced OWLLiteral. In version 3.0.0 OWLLiteral was a super-interface of OWLStringLiteral and OWLTypedLiteral. Clients therefore need to replace occurrences of OWLStringLiteral and OWLTypedLiteral with OWLLiteral. Method calls need not be changed - methods on OWLStringLiteral and OWLTypedLiteral have corresponding methods on OWLLiteral. Note that all literals are now typed. What used to be regarded as OWLStringLiterals are now OWLLiterals with the datatype rdf:PlainLiteral. Although this change introduces a slight backward incompatibility with the previous version of the API we believe that the handling of literals in 3.1.0 is much cleaner and follows the specification more closely. Changes to the OWLReasoner interface: The OWLReasoner interface has been updated. There are now methods which allow for fine-grained control over reasoning tasks. For example, it is now possible to request that a reasoner just classifies the class hierarchy, when in version 3.0.0 the prepare reasoner method caused realisation to occur as well. The prepareReasoner method has been removed from the interface due to the huge amount of confusion it caused (it was not necessary to call this method to get correct results, but the name suggested that it was necessary). Clients should update their code to replace any calls to prepareReasoner with appropriate calls to precomputeInferences. JavaDoc for various methods has been cleaned up. Main Bug Fixes: - Annotations on Declaration axioms were not save. Fixed. - OWLObjectMaxCardinality restrictions incorrectly resulted in a profile violation of the OWL2RL profile. Fixed. - OWLOntology.containsAxiom() failed various round trip tests. Fixed. - OWLObjectPropertyExpression.getInverses() did not include properties that were asserted to be inverses of themselves. Fixed. - Writing large rdf:Lists can cause a stack overflow on saving. Fixed. - System.out is closed when using SystemOutDocumentTarget. Fixed. - An OWLOntologyAlreadyExists exception is thrown when an imports graph contains multiple imports of the same ontology. Fixed. - OWLReasoner.getSubclasses() is missing declarations in the throws list for runtime exceptions that get thrown. Fixed. - Parsing RDF graphs containing blank nodes with NodeIDs is broken. Fixed. - Some methods on OWLOntology return sets of object that change with ontology changes. Fixed. - Double dashes (--) are not escaped in XML comments output by the XMLWriter. Fixed. - The API sometimes prints to System.err. Fixed. - The functional syntax writer writes out annotation assertions twice. Fixed. - Ontologies with DataSomeValuesFrom restrictions are incorrectly considered non-OWL2QL. Fixed. - Ontologies with Functional data properties are incorrectly considered non-OWL2RL. Fixed. - OWL2Datatype.XSD_NAME has the wrong regex pattern. Fixed. - RDF rendering of GCIs with multiple elements is broken. Fixed. - SubObjectPropertyOf axioms with annotations and property chains don't get parsed correctly from RDF. Fixed. - StructuralReasoner sometimes crashes when determining superclasses. Fixed. - SimpleRenderer renders declarations incorrectly. Fixed. - Object property characteristics are not answered correctly. Fixed. - OWLOntology.getReferencingAxioms gives mutable and incorrect results. Fixed. - StructuralReasoner call OWLClassExpression.asOWLClass() on anonymous classes. Fixed. - SKOSVocabulary is not up to date. Fixed. - Regular expression for xsd:double has extra white space. Fixed. - Structural reasoner sometimes misses subclasses of owl:Thing. Fixed. - OWLOntologyManager.getImportsClosure() fails on reload. Fixed. - PrefixOWLOntologyFormat has not methods to remove prefixes. Fixed. - RDF/XML rendering of unicode characters is ugly. Fixed. - Turtle parser does parse shared blank nodes correctly. Fixed. ---------------------------------------------------------------------- Release 3.0.0 ---------------------------------------------------------------------- Version 3.0.0 is incompatible with previous releases. Many interface names have been changed in order to acheive a close alignment with the names used in the OWL 2 Structural Specification and Functional Style Syntax. (See http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/) The opportunity to clean up method names was also taken. ---------------------------------------------------------------------- Release 2.2.0 (17th April 2008) ---------------------------------------------------------------------- Bug Fixes: - The getOntologyURIs method on AutoURIMapper would return physical rather than logic URIs. Fixed. - Namespaces for annotation URIs weren't generated. Fixed. - Removing a subclass axiom from an ontology cause the axiom to be added to the ontology as a GCI. Fixed. - When parsing an ontology, the accept types has been set to include RDF/XML. This means that ontologies can be parsed correctly from servers that are configured to return RDF or HTML depending on the request type. - OWL/XML writer has been modified to write the datatype URI attribute name correctly. Previously the name was written as "Datatype", however it should be "datatypeURI". - OWL/XML parser. Modified the literal handler to parse literals using the correct datatype URI attribute name (was "Datatype" and should have been "datatypeURI"). - The constructor that required a manager in BidirectionalShortFormProviderAdapter did not rebuild the cache. Fixed. - Unqualified cardinality restrictions were rendered out as qualified cardinality restrictions. Fixed. - Saving an ontology would fail if the necessary directories did not exist. Fixed. - Rendering anonymous property inverses in OWL/XML was incorrect. Fixed. - Label and Comment annotations in the functional syntax weren't parsed properly, they were parsed as regular annotations. Fixed. - In the OWLXMLParserHandler, no handler for negative data property assertions was registered. Fixed. - Annotations that have anonymous individuals as values weren't rendered correctly. Fixed. - RDFXMLOntologyStorer and RDFXMLRenderer always used the ontology format that is obtainable from the manager, regardless of whether or not a custom ontology format was specified - fixed. - Rules that contained individual or data value objects couldn't be rendered. Fixed. - Declaration axioms were automatically added for data properties whether an ontology contained declaredAs triples or not. Fixed. - Anonymous properties weren't rendered correcty. Fixed. - RDF rendering for sub property axioms whose sub property is a property chain used an old rendering. The rendering now complies with the latest OWL 2 specification. Ontologies that use the old rendering can still be parsed. - RDF lists were reordered on rendering. Fixed. Enhancements: - Added support for building using ANT - OWL 1.1 namespaces changed to OWL 2. Old ontologies that are written using the owl11 namespace will still load, but will be converted to use the owl2 namespace. - Updated the RDF parser and RDF renderer to support AllDisjointClasses and AllDisjointProperties - Added the ability to save ontologies in Turtle. - Added the ability to load ontologies that are written in Turtle - Added explanation code contributed by Clark & Parsia - Added a KRSS renderer (contributed by Olaf Noppens) - Added a new, more comprehensive KRSS parser (contributed by Olaf Noppens). This parser can parser the version of the KRSS syntax that is used by Racer. - Added the ability to specify a connection timeout for URL connections via a system property (owlapi.connectionTimeOut) - the default value for the timeout is 20 seconds. - Added a method to OWLOntologyManager to clear all registered URI mappers - Added a method to OWLOntologyManager so that imports can be obtained by an imports declaration. - Added a convenience method to OWLOntologyManager to add a set of axioms to an ontology without having to create the AddAxiom changes - Added a makeLoadImportsRequest method on OWLOntologyManager which should be used by parsers and other loaders in order to load imports - Added the ability to set an option for silent missing imports handling on OWLOntologyManager. When this option is set, exceptions are not thrown when imports cannot be found or cannot be loaded. It is possible to set a listeners that gets informed when an import cannot be found, so that the exception doesn't get lost entirely. - Added the ability to add a ontology loader listener to OWLOntologyManager. The listener gets informed when the loading process for an ontology starts and finishes (which ontology is being loaded, from where and whether it was successfully loaded etc.). - Added a method to OWLReasonerFactory to obtain the human readable name of the reasoner that a factory creates. - Added a convenience method to OWLOntology to obtain all referenced entities - Added convenience methods to OWLEntity that check whether the entity is an OWLClass, OWLObjectProperty, OWLDataProperty, OWLIndividual or OWLDatatype. Also added asXXX to obtain an entity in its more specific form. - Added convenience methods to OWLDataFactory for creating disjoint class axioms and equivalent classes axioms. - Added a general purpose renderer interface for OWLObjects - Added an OWLInconsistentOntologyException to the inference module. - Added SKOS core to the list of well known namespaces - Added a SKOS vocabulary enum - Added methods to the OWLOntologyManager interface, so that ontologies can be saved to an output target as well as a URI. Added implementations of OWLOntologyOutputTarget to enable writing directly to OutputStreams and Writers. - Added a StringOutputTarget for writing ontologies into a buffer that can be obtained as a string. - Added some new input sources: StreamInputSource, ReaderInputSource, FileInputSource - RDF Parser. Made the classExpression translator selector more intelligent so that when properties aren't typed as either object or data properties, other triples are examined to make the appropriate choice. - OWLRestrictedDataRangeFacetVocabulary. Added methods to obtain facets by their symbolic name (e.g. >=) - BidirectionalShortFormProvider. Added a method to obtain all short forms cached by the provider. - Added an option to turn tabbing on/off when rendering Manchester Syntax - Added more documentation for the method which adds ontology URI mappers - Improved error handling when loading ontologies: For errors that have nothing to do with parse errors e.g. unknown host exceptions, the factory will rethrow the error at the earliest opportunity rather than trying all parsers. - Updated parser to throw ManchesterOWLSyntaxOntologyParserException which is a more specific type of OWLParserException - Updated the BidirectionalShortFormProviderAdapter with functionality to track ontology changes and update the rendering cache depending on whether entities are referenced or not. - Added a latex renderer for rendering ontology axioms in a latex format - Added the ability to parse ontologies written in ManchesterOWLSyntax - Added URIShortFormProvider as a general purpose interface for providing short forms for URIs. Changed SimpleShortFormProvider to use the SimpleURIShortFormProvider as a base - Made the toString rendering of the default implementation pluggable via the ToStringRenderer singleton class. - Added some convenience methods to the OWLDataFactory to make creating certain types of objects less tedious. Specifically: ObjectIntersectionOf, ObjectUnionOf, ObjectOneOf and DataOneOf can now be created using methods that take a variable number of arguments (OWLDescriptions, OWLIndividuals or OWLConstants as appropriate). Also, added convenience methods that create typed literals directly from Java Strings, ints, doubles, floats and booleans. For example, createOWLTypedConstant(3) will create a typed literal with a lexical value of "3" and a datatype of xsd:integer. Added convenice methods for creating entity annotations without manually having to create OWLAnnotation objects. - Added a getAxiomType method on to the OWLAxiom interface for convenience. - Added functionality to the debugging module for ordering explanations - Added generics to the inferred axiom generator API - Added a new constructor to OWLOntologyNamespaceManager so that it is possible to override the ontology format that is used as a hint when generating namespaces. - Added a dlsyntax renderer module that can renderer axioms etc. in the traditional dlsyntax using unicode for the dlsyntax symbols. - Modified the RDFXMLNamespaceManager to select the minimal amount of entities for which namespaces need to be generated. Namespaces are only generated for classes in OWLClassAssertionAxioms, and properties in OWLObjectPropertyAssertionAxioms and OWLDataPropertyAssertionAxioms. This basically corresponds to the places where valid QNames are needed for entities. - Added code to add declarations for "dangling entities". If an RDF graph contains and ClsA has not been referenced by any other axioms then this would have been dropped by the parser - this has been changed so that declaration axioms are added to the ontology in such cases. (Hopefully, the OWL 1.1 spec will be updated to do something like this in the mapping to RDF graphs). - Added a utility class, AxiomSubjectProvider, which given an axiom returns an object which is regarded to be the "subject" of the axioms. For example given SubClassOf(ClsA ClsB), ClsA is regarded as being the subject. - Modified the ontology URI short form provider to provide nicer looking short forms. - Added a convenience method to get the individuals that have been asserted to be an instance of an OWLClass. - Commons lang is no longer used in the API because it had been replaced with a lightweight utility class in order to escape strings. - Removed the fragments module and replaced it with the profiles module. The EL++ profile is currently implemented. - Added support for extended visitors that can return objects in the visit method. - Turned off logging in the RDF parser classes by default.