GitHub user jessehatfield opened a pull request:
https://github.com/apache/incubator-rya/pull/184
RYA-297 Added owl:equivalentClass inference
If A and B are equivalent classes, then A is a subclass of B and B is a
subclass of A. Handled the same way as owl:equivalentProperty.
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
## Description
Modified InferenceEngine to add equivalentClass information to the subclass
graph. (Semantics: for two classes to be equivalent means that they represent
the same set, while for one class to be a subclass of another means that it
represents a subset. Therefore to say that two classes are equivalent is
identical to saying that each is a subclass of the other.) Pulled the query
logic into a helper function because the same basic pattern is used for
subclass, subproperty, equivalent property, and now equivalent class relations.
Because subClassOf inference is already supported, this means no new
visitor is required.
Slightly edited one line in SubClassOfVisitor to avoid adding the same
subclass relation to the FixedStatementPattern twice, which would otherwise be
possible: equivalent classes are mutual subclasses of each other, creating a
cycle in the subclass graph. and allowing findParents to return a set
containing the original node. Therefore, instead of always adding a statement
corresponding to the original type, just add the original type to the set
returned by findParents, which will do nothing if it was already included. This
is identical to the logic in SubPropertyOfVisitor.
### Tests
Added two tests to InferenceEngineTest, one for classes and one for
properties, to verify that the inference engine builds the expected
subclass/subproperty graph given an ontology involving sub- and equivalent-
relations. Added a test to InferenceIT that inserts schema and instance data,
then runs a query that depends on the application of subclass and equivalent
class inference.
### Links
[Jira](https://issues.apache.org/jira/browse/RYA-297)
### Checklist
- [ ] Code Review
- [ ] Squash Commits
#### People To Reivew
@meiercaleb
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jessehatfield/incubator-rya
RYA-297-equivalentClass-inference
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/incubator-rya/pull/184.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #184
----
commit df49b04386c6e0ccb92757f31f1865c913eb85d3
Author: Jesse Hatfield <[email protected]>
Date: 2017-07-25T21:08:31Z
RYA-297 Added owl:equivalentClass inference
If A and B are equivalent classes, then A is a subclass of B and B is a
subclass of A. Handled the same way as owl:equivalentProperty.
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---