I continued to improve / extend this plugin and now feel that it's in a shape that allows basic usage. There are still a lot of good suggestions in the issues tagged as enhancement and also the "Constraints" component on the right side is currently of no use, however I think this plugin now offers the functionality I need at least.
Again, I tried to keep each commit small, but grouped them together with individual branches that are based on each other. It should be possible to re-order or isolate specific branches if this PR is too big or contains debatable changes.
First of all, I noticed that no new features of Protégé 5.5.0 are required and therefore reduced the required Protégé version down to 5.0.0 so that this plugin can be used also on older installations.
I simplified the example3 by removing the import of the schema.org ontology.
For my use-case I need to work with the inferred ontology, i.e. take the results of the reasoner into account.
As I use SWRL rules in my use-case I already use the pellet / openllet reasoner. I extended the example3 so that the SWRL rule infers that Bob and Robert are the same individual (both are the father of Alice), however they now violate the PersonShape as Bob has a "typo" in his ssn. This violation is only detected when a reasoner takes the SWRL rule into account.
If the reasoner is not started or out of sync the user is warned, but the validation is still performed.
I added the pellet reasoner as test-dependency with a specific version that works with the owlapi 4.
Jena offers basically two Models: the basic Model for generic RDF files does not process owl:imports statements, however the OntModel does. As SHACL allows owl:imports the OntModel should be used.
I continued to improve / extend this plugin and now feel that it's in a shape that allows basic usage. There are still a lot of good suggestions in the issues tagged as enhancement and also the "Constraints" component on the right side is currently of no use, however I think this plugin now offers the functionality I need at least.
Again, I tried to keep each commit small, but grouped them together with individual branches that are based on each other. It should be possible to re-order or isolate specific branches if this PR is too big or contains debatable changes.
https://github.com/fekaputra/shacl-plugin/compare/master...Locke:master
https://github.com/Locke/shacl-plugin/compare/master...Locke:reasoner
https://github.com/Locke/shacl-plugin/compare/reasoner...Locke:ui-selection
https://github.com/Locke/shacl-plugin/compare/ui-selection...Locke:owl-imports
https://github.com/Locke/shacl-plugin/compare/owl-imports...Locke:ui-editor
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())
so I hope this works as expected.