You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@rya.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/08/15 15:32:00 UTC

[jira] [Commented] (RYA-292) Implement owl:intersectionOf inference

    [ https://issues.apache.org/jira/browse/RYA-292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16127389#comment-16127389 ] 

ASF GitHub Bot commented on RYA-292:
------------------------------------

GitHub user ejwhite922 opened a pull request:

    https://github.com/apache/incubator-rya/pull/206

    RYA-292 Added owl:intersectionOf inference.

    ## Description
    Inference applies owl:intersectionOf semantics for queries including statement patterns of the form "?x rdf:type :DefinedClass".
    
    The owl:intersectionOf property links a class to a list of class descriptions. An owl:intersectionOf statement describes a class for which the class extension contains precisely those individuals that are members of the class extension of all class descriptions in the list. 
    
    The InferenceEngine, at refresh time, stores information about owl:intersectionOf. It stores a mapping of each type that has an intersection to its list of intersection sets (since each type can have multiple intersections) These mapped definitions can then be accessed by the method: getIntersectionsImplying(Resource).  Also, :A owl:intersectionOf(:B, :C) implies that :A subClassOf :B and :A subClassOf :C so members of the intersection are added to the subClassOf graph.
    
    IntersectionOfVisitor processes statement patterns of the form "?x rdf:type :T2", and if :T2 is the value type for any owl:intersectionOf restriction according to the inference engine, it replaces the statement pattern with a union: of 1) that same statement pattern (in case the type is explicitly asserted or can be inferred by some other rule); and 2) a nested join tree of all the combined intersections for that type.
    
    RdfCloudTripleStoreConnection calls the visitor along with the other inference logic. Because the original statement pattern is preserved as one branch of the union, other visitors can still apply if there are other ways to derive the type.
    
    Added a simple example of a query that relies on this inference to MongoRyaDirectExample.
    
    ### Tests
    Unit tests
    
    ### Links
    [Jira](https://issues.apache.org/jira/browse/RYA-292)
    
    ### Checklist
    - [ ] Code Review
    - [ ] Squash Commits
    
    #### People To Review
    @jessehatfield 
    @meiercaleb 
    @isper3at 
    @pujav65 


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/ejwhite922/incubator-rya RYA-292_IntersectionOfInference

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-rya/pull/206.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 #206
    
----
commit f1d90f7f2e8d073fe3457f2dec89eec9675abe73
Author: eric.white <er...@parsons.com>
Date:   2017-08-02T21:52:10Z

    RYA-292 Added owl:intersectionOf inference.

----


> Implement owl:intersectionOf inference
> --------------------------------------
>
>                 Key: RYA-292
>                 URL: https://issues.apache.org/jira/browse/RYA-292
>             Project: Rya
>          Issue Type: Sub-task
>          Components: sail
>            Reporter: Jesse Hatfield
>            Assignee: Eric White
>
> An *{{owl:intersectionOf}}* expression defines the set of resources who belong to all of a particular set of classes.
> A basic implementation, if the ontology states that {{:Mother}} is the intersection of {{:Parent}} and {{:Woman}}, should cause the inference engine to:
> 1. Rewrite query patterns {{?x rdf:type :Mother}} (the intersection type) to check for resources that have both types {{:Parent}} and {{:Woman}} (as well as check for resources that are explicitly stated to be {{:Mother}} s)
> 2. Rewrite query patterns {{?y rdf:type :Parent}} (one of the intersecting sets) to check for resources that are stated to be either {{:Mother}} or {{:Parent}} , since belonging to the intersection type implies membership in the component types. (Equivalent logic applies to {{Woman}} )



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)