~~~~~~~~~~~
Note: this version passes the first, basic batch of official OWL Full/RL tests uploaded by Michael Schneider to the OWL Working Group site.
* Bugs:
* if the URI of a predicate did not correspond to a defined namespace, the extra namespace declaration did not appear in the pretty xml output. Typical situation: the user defines a namespace without trailing '' or '/', but uses the prefix nevertheless; this ends up in a URI for, say, a predicate or a type that cannot be represented in XML. The proper approach is then to add a new prefix with 'http://' and use that in the output.
The original XML serialization of RDFLib does that; the PrettyXMLSerialization did not. The pretty XML serialization is based on the one of RDFLib, and has therefore inherited this bug.
* the axiomatic expression for (byte subclass short) was misspelled to (byte subclass byte)
* the axiomatic triples added automatically should say (Thing type :code:`owl:Class`) (and not :code:`rdfs:Class` as before). Also, (Nothing type :code:`owl:Class`) was missing there.
* :code:`rdf:text` changed to :code:`rdf:PlainLiteral` (in the axiomatic triples), as a result of the OWL WG on changing the name.
* missing subclass relationship for dateTimeStamp vs dateTime.
* there was an optimization that added Datatype triples only for those datatypes that appeared as part of a literal in the input graph. However, the rule set requires those triples to be added no matter what. At the moment, this is pending (there are discussions in the group on this).
* the set of triples declaring annotation properties were missing
* error message for asymmetric properties was bogus (has :code:`%p` instead of :code:`%s` in the text).
* there was a leftover error message via exceptions for :code:`owl:Nothing` check.
* rule :code:`scm-eqc2` was missing :-(
* New Features:
* added some support to booleans; essentially introducing a stronger check (according to XSD the :code:`"111"^xsd:boolean` is not a valid boolean values, though RDFLib accepts it as such...).
* triples with a bnode predicate were systematically filtered out when added to a graph. However, incoming ontologies may include statements like '[ owl:inverseOf P]', and processing those through the rule set requires to allow such triples during deduction. Lucklily RDFLib is relaxed on that. So such 'generalized' triples are now allowed during the forward chaining and are filtered out only once, right before serialization.
* some improvements on the datatype handling:
* adding type relationships to super(data)types. For example, if the original graph includes (:code:`<B> rdf:type xsd:short`), then the triple (:code:`<B> rdf:type xsd:integer`), etc, is also added. As an optimization the (:code:`xsd:short rdfs:subClassOf xsd:integer`) triples are not added, but the direct datatyping is done instead.
* adding disjointness information on datatypes on top of the hierarchy. This means that inconsistencies of the sort :code:`<B> ex:prop 123 . <B> ex:prop "1"^^xsd:boolean`. will be detected (integers and booleans must be disjoing per XSD; the explicit type relationships and the disjointness of some data types will trigger the necessary rules).
Note that, mainly the first rule, is really useful when generic nodes are used as datatypes, as opposed to explicit literals.
* added the possibility to set the input format explicitly, and changed the RDFConvert script accordingly (the service is not yet changed...).
* added the possibility to consume standard input.