robot
robot copied to clipboard
Updating to OWLAPI 4.5.22
Resolves owlapi#1004
- [ ]
docs/have been added/updated - [ ] tests have been added/updated
- [ ]
mvn verifysays all tests pass - [ ]
mvn sitesays all JavaDocs correct - [ ]
CHANGELOG.mdhas been updated
Changes Summary:
- Backward compatibility checking maven plugin (
com.github.siom79.japicmp)ignoreMissingClassesByRegularExpressionsparameter added inrobot-core/pom.xml. Owlapi 4.5.22 uses a newer version of the rio-api:sesame-rio-api-2.7.16.jar -> rdf4j-rio-api-2.4.2.jar.Plugin is raising"Could not load 'org.openrdf.rio.RDFHandlerException'"exception, but that class renamed toorg.eclipse.rdf4j.rio.RDFHandlerExceptionnow. - Owlapi Manchester syntax parsing logic changed to prevent illegal punning: owlapi#851.
Property punning between properties is illegal, but punning of a property name and class name or individual name is allowed.QuotedEntityChecker.getOWLDataProperty,getOWLObjectPropertyandgetOWLClasswas causing illegal punning exception when called without a reference ontology. Added if controls to prevent exception. - Axiom annotations using undeclared annotation properties are now getting parsed in 4.5.22 (inferring type from usage), updated the test files accordingly. Example case:
oboInOwl:date_retrievednot declared in edit.owl - DLExpressivityChecker.Construct changed in the new owlapi, accordingly OntologyMetrics and MeasureOperationTest updated
Ready to merge?
I would like the latest ROBOT and Protege to use the same OWLAPI version. They are working on a new Protege release here: https://github.com/protegeproject/protege/issues/1072. That seems to be going well, but I'd like to wait and see for a bit longer.
OWL API 4.5.24 has been released and Protege 5.6.0 will use this version.
https://github.com/INCATools/ontology-development-kit/issues/770#issuecomment-1383131724
OWL API 4.5.24 has been released with the fix (the tag is not yet visible on GitHub, but the artifact is available on Maven Central). I’ve rebuilt the 5.6.0-beta-2 release of Protégé with the new version.
Updated current PR accordingly.
@hkir-dev I want to merge this, but I'm still uncomfortable with the large number of changes to the examples: I don't understand all the new <owl:Axiom>s.
Why am I so nervous? We've worked very, very hard to build trust with our users, and I don't want to jeopardize that. This OWLAPI update is going to cause significant churn in git diffs. We'll communicate that as clearly as possible to our users, but essentially we'll be asking people to just ignore the big diffs and trust that we haven't broken their stuff.
The examples are the core of our automated test suite. They're what convinces me that we aren't breaking things. So I need to fully understand all the changes.
- I understand the changes to the code -- they're small and look good
- I understand why
xsd:stringdatatypes are disappearing from the examples, and that's good - I don't understand where all the
<owl:Axiom>s are coming from, or why they're necessary
Are you testing that OBO-format output is including axiom annotations properly? If so, could we just update a few of the tests, and not all of them?
If all these new <owl:Axioms> come from new behaviour in the OWLAPI, then there's something major that I don't understand.
Just to save our Slack discussion: There is an OWLAPI behaviour change regarding this issue: https://github.com/owlcs/owlapi/issues/875 OWLAPI was used to ignore axiom annotations if the annotation property is not declared. Now, with the new version, it automatically declares the property and persists the related axiom annotations. It seems that some of our test files have such undeclared properties and with the new OWLAPI release these axioms are starting to reappear in the output files. We need to test in detail to ensure all those axioms are valid.
Thanks @hkir-dev for all your work on this. I updated the examples in #1085, and created a new PR #1086 to apply your changes more cleanly.