rework OWLObjectImpl.equals and OWLObjectImpl.hashCode

add note about OWLObjectImpl.hashCode being a source of errors in mutable objects and hashtables

includes an implementation of equals for OWLFacetRestriction that previously relied on the equals implementation in OWLObjectImpl that was broken by design, as it was only ever supposed to be a stub

fixed the bug for the future by ensuring that any class which overrides OWLObjectImpl overrides .equals and that they still have access to the stub equals implementation using super.owlObjectImplEquals(other) to avoid recoding it

fixed the hashcode implementation if objects are mutable, which they definitely are, as previously the hashcode on the first call to hashCode stayed even if the state changed, which would have caused very hard to find bugs

expand logic in OWLObjectImpl.equals and make owlObjectImplEquals non-abstract so it can be called from immediate subclasses

add calls to super.owlObjectImplEquals at the end of calls where previously there were calls to .equals at the start

should be more efficient this way as the most specific information, ie, the most specific interface is being checked straight after the null and this equals checks

fix bug in OWLObjectInverseOfImpl

remove some details from OWLFacetRestrictionImpl

remove another equality test that was added in the previous change that broke something
3516742 : consolidate RDF related classes into a single location
3521488 : switch to java.util.ServiceLoader for ParserFactory implementations

single location for OntologyFormat classes so they can be discovered

implement OntologyStorerFactoryRegistry and change references to formats

move TurtleOntologyFormat that was missed before

move default ontology format

add slf4j-api and logging configuration to api and apibinding so that during tests, service loading failures are displayed

add missing compile scope dependencies that aren't being passed through by owlapi-apibinding with runtime dependency scopes

update assembly plugin and add metaInf-services descriptor handler to merge services files in distribution

make dlsyntax a runtime dependency of owlapi-apibinding

constrain to only catch Error's that jump out of the KRSS parser

add test for OWLOntologyStorerFactoryRegistry

add note in AbstractServiceLoader to print the number of loaded services to the log

remove unnecessary circular reference between OWLOntologyFormat and PrefixOWLOntologyFormat

as... methods are actually simpler done as casts, as are instanceof calls

add specific getKey method to OWLOntologyFormat

fix tests

close output stream

reduce logging

fix hashcode in DefaultOntologyFormat

fix registry test tearDown

check if test ontology loaded properly by checking its axiom count

this has been failing tests with obscure errors due to relative comparisons that assume the ontology always loads properly

lower debugging level

allow cases with only annotations

remove explicit classloader from serviceloader call as it causes tests to fail in my openjdk-7 install

remove tests and references to the static instance

fix RDF/XML and OWLXML bug where OWLXML was being used to parse RDF/XML without error due to the lack of ordering for parsers in the SPI implementation

lower debug level

OWLManager changes

add new OWLManager method to enable use of custom ontology storer registries

extend ParsableOWLOntologyFactory to allow custom parser registries to be used

avoid NullPointerException and return Collections.emptyList() instead

implement OWLReasonerFactoryRegistry

make ontology storer factory registry test immune to changes in the SPI dependencies by clearing the registry before each run

move new OBOOntologyFormat direct dependencies into owlapi-api module

fix ConcurrentMap logic in AbstractServiceLoader

use OWLOntologyManagerFactoryRegistry instead of OWLManager

OWLOntologyManagerFactoryRegistry is a service provider interface front to track OWLManagerFactory instances using META-INF/services property files which can in turn provide OWLManager instances.

fix message

note in OWLReasonerFactoryRegistry that static instance is not mandatory

add compareTo for OWLOntologyFormat based on key string compareTo

make formats backwards compatible for instanceof, equals, and compareTo

work on compatibility so new interfaces are geared towards o.s.o.formats.*

move OWLManager from apibinding to impl to match its dependencies

move OWLFunctionalSyntaxFactory from apibinding to functional

uses service provider interface now, so the previous hard requirement on OWLManager is not present

api module now a runtime dependency for apibinding, as the tests are compiled using the runtime scope

remove metainf-services dependency in apibinding as OWLManager is gone

add SPI for concrete subclasses of OWLOntologyFormat along with Registry

Factory classes are needed as OWLOntologyFormat instances are allowed to be mutable, and all uses of OWLOntologyFormat so far is using "new XYZOntologyFormat()"

add RioRDFOntologyFormat and NTriplesOntologyFormat

migrate RDFXMLOntologyFormat and TurtleOntologyFormat so they are backwards compatible and can be used with the rio storer and parser in future

reform AbstractServiceLoader.get to explicitly use .equals instead of either .equals or .hashcode based on the implementation
convert OWLOntologyManagerImpl.autoGeneratedURICounter to use AtomicInteger
convert tests to junit-4
3536150 : fix bug with ontologyIRI and versionIRI loading ontology multiple times

before the patch, TypeOntologyHandler and TPVersionIRIHandler both overwrite existing values in the OWLOntologyID for the ontology

after the patch, TypeOntologyHandler and TPVersionIRIHandler both only set the values of ontologyIRI and versionIRI in the OWLOntologyID if they did not exist previously, so the first setting wins, instead of the current scenario where the last setting sometimes wins...

work on another case where the ontologyIRI in the ontologyID does not match the ontology document, and it is desirable to keep the ontologyIRI in the ontologyID instead of replacing it with the one in the document

only code addition so far is changing ontologyIRIs to be a List so that insertion order is preserved
3536150 : add RuntimeException hack to make getOntology consistent with createOntology
3535332 : ignore uncommon UTF8-BOM case
3535332 : ignoring turtle blank node test that can randomly fail if nodes are processed in a different order

root cause for failure is a misunderstanding of the RDF specification w.r.t blank nodes, as their identifiers mean nothing and cannot be persisted. If you want persistent identifiers using URI/IRIs
3535332 : ignore LiteralWithNewLineTestCase that is broken in Sesame Rio RDF/XML parser right now

see http://www.openrdf.org/issues/browse/SES-879
3535332 : add PrimerTurtleRoundTrippingTestCase

fix syntax of primer.turtle.rdf that is of unknown origin, as it doesn't match the number of triples from either the primer turtle or the primer rdf

switch to using a version of the primer document that sesame serialised after being given the RDF/XML version of the primer RDF/XML example

switch to a turtle version derived from the original rdfxml, primer.rdfxml.xml contains one less axiom than the original turtle

add the original rdf/xml primer, which includes one rdf triple that is not in the primer.rdfxml.xml file
3535332 : make RDFLiteral class cope with empty language strings as if they didn't have a language, without changing the output of getLang, just changing hasLang
3535332 : expose the errors variable in RDFOntologyFormat
3535332 : use AtomicInteger for getErrorEntity for threadsafety
3535332 : owlapi-rio

single test on RioRenderer that completes without exception

add meta-inf/services support to Rio OntologyStorerFactories

add RioRenderer tests for empty ontologies to RDF/XML Turtle NTriples

fix blank node identifier generation

add tests based on koala.owl resource

extend RioRendererTest to parse back in the results and check the statements and namespaces that were recognised in each case

sesame-rio-api is all that is needed by owlapi-rio at compile time

users supply the implementations at runtime and they are picked up by either Rio.createWriter or Rio.createParser as applicable

initial compiling version of RioParser, with OWLRDFConsumer as RDFHandler

add simple test for RioParser that verifies that some axioms are being generated by RioParser

tests are verified to be broken, so turn off META-INF/services detection of factories for now

adjust test to match the number of axioms parsed by current RDFXMLParser

convert internal RDFParser and TurtleParser bnode counts to AtomicInteger

add logging to try to determine where the parser errors are coming from

add debugging to OWLRDFConsumer

temporarily ignore part of the RioParserTest

implement getDefaultMIMEType using RDFFormat constants

add meta-inf/services annotations for factories

implement tests for OWLOntologyFormatFactoryRegistryTest

avoid hardcoding the RDFFormat references as far as possible

add logging before error is thrown

add a renderedNodes HashSet to RioRenderer to prevent circular references breaking the algorithm

also add logging output to track the actual number of nodes passing through RioRenderer

broke more tests, will check them out further in the morning

remove one part of the broken branch, but branch still broken

add more tests for RioUtils

resort to keeping track of the actual statements to avoid recursion, as keeping track of the nodes does not work due to the strange behaviour of getGraph().getSortedTriplesForSubject(node, true) returning different sets of triples at different times

more modifications, but RioParser is still broken

ignore broken test for now

more changes to RioRenderer, including adding pendingNodes check back in

more work trying to debug RioParser

converted Map to ConcurrentMap in OWLRDFConsumer to take advantage of any multi-threaded access that may occur

add notes about strange situations with canHandleStreaming calling handle

call startModel and endModel in RioOWLRDFConsumerAdapter

enable the rio storer and parser factories and disable the inbuilt ones

support parsing of prefixes in owlapi-rio

create RioParser interface to enable easy debugging as all of the notes say RioParserImpl, without the actual format, otherwise

minor change in AbstractOWLOntologyStorer

use given manager consistently instead of using the one inside the ontology, just incase they are different

fix RioOntologyStorer so it can be reused safely if people do not setRdfHandler, however, if they do setRdfHandler they likely know what they are doing

fix test broken by addition of testDefault in addition to testRDFXML

rewrite test assertion that assumed a particular xml serialisation, as the Rio RDF/XML writer may output the predicate using xmlns=" instead of reusing the input namespace

ignore tests for Turtle test files that do not appear to be valid and hence they fail the parse stage, which happens before any of the tests are executed

explain why testDefault is separate from testRDFXML

link default into RDFXML test

fix test broken by addition of testDefault, as testRDFXML was ignored before

ignore more tests for testDefault

cleanup some more test cases

fix grammar in comment

ignore testDefault in other cases

rename isAxiom and addAxiom functions to match their meaning and use

remove unnecessary suppress warning annotation

make logic easier to read

fix RDFResourceBlankNode.toString() so it doesn't duplicate "_:" at the start of the string if not necessary

this seems to have changed the PrimerTurtleRoundTrippingTestCase.testTurtle result

remove .contains("genid") from anonymous node detector

add notes about the reason for difficulties now as based in the misunderstanding that blank/anonymous nodes are equivalent to IRIs

various minor changes and notes about places where the meaning of some rdf concepts are difficult to work with

experimentally add comparators to guarantee the sort order for triples each time they go through RioParserImpl

cleanup

use a single valueComparator for each statementComparator

remove call to statement equality incase it takes context into account for some implementations of Statement

adapter change

comment

remove excess logging and switch to log4j configuration that shows line numbers and files to identify locations

convert system.out to a logger message

add warning in strict mode when implicit types are not added when they would otherwise have been added
3535332 : make rio a runtime dependency of apibinding
3535332 : make NoQNameTestCase work with owlapi-rio that throws a different exception