[GitHub] incubator-rya pull request #206: RYA-292 Added owl:intersectionOf inference.

2017-08-18 Thread jessehatfield
Github user jessehatfield commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/206#discussion_r134081316
  
--- Diff: 
sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java 
---
@@ -416,22 +425,131 @@ private void 
refreshHasValueRestrictions(Map restrictions) throws
 }
 }
 
-private static Vertex getVertex(Graph graph, Object id) {
-Iterator it = graph.vertices(id.toString());
+private void refreshIntersectionOf() throws QueryEvaluationException {
+final Map> intersectionsProp = new 
HashMap<>();
+
+// First query for all the owl:intersectionOf's.
+// If we have the following intersectionOf:
+// :A owl:intersectionOf[:B, :C]
+// It will be represented by triples following a pattern similar 
to:
+// <:A> owl:intersectionOf _:bnode1 .
+//  _:bnode1 rdf:first <:B> .
+//  _:bnode1 rdf:rest _:bnode2 .
+// _:bnode2 rdf:first <:C> .
+// _:bnode2 rdf:rest rdf:nil .
+ryaDaoQueryWrapper.queryAll(null, OWL.INTERSECTIONOF, null, new 
RyaDaoStatementIterHandler() {
+@Override
+public void handleStatementIter(final Statement st1) throws 
Exception {
+final Resource type = st1.getSubject();
+// head will point to a type that is part of the 
intersection.
+URI head = (URI) st1.getObject();
+if (!intersectionsProp.containsKey(type)) {
+intersectionsProp.put(type, new 
ArrayList());
+}
+final Set intersection = new HashSet<>();
+// Go through and find all bnodes that are part of the 
defined
+// intersection.
+while (!RDF.NIL.equals(head)) {
+// rdf.first will point to a type item that is in the
+// intersection.
+ryaDaoQueryWrapper.queryFirst(head, RDF.FIRST, null, 
new RyaDaoStatementIterHandler() {
+@Override
+public void handleStatementIter(final Statement 
st2) throws Exception{
+// The object found in the query represents a 
type
+// that should be included in the intersection.
+final URI obj2 = (URI) st2.getObject();
+intersection.add(obj2);
+}
+});
+final List headHolder = new ArrayList<>(1);
+// rdf.rest will point to the next bnode that's part 
of the
+// intersection.
+ryaDaoQueryWrapper.queryFirst(head, RDF.REST, null, 
new RyaDaoStatementIterHandler() {
+@Override
+public void handleStatementIter(final Statement 
st3) throws Exception {
+// This object is the next bnode head to look 
for.
+final URI obj3 = (URI) st3.getObject();
+headHolder.add(obj3);
+}
+});
+// As long as we get a new head there are more bnodes 
that
+// are part of the intersection. Keep going until we 
reach
+// rdf.nil.
+if (!headHolder.isEmpty()) {
+head = headHolder.get(0);
+} else {
+head = RDF.NIL;
+}
+}
+// Add this intersection for this type. There may be more
+// intersections for this type so each type has a list of
+// intersection sets.
+intersectionsProp.get(type).add(intersection);
+}
+});
+
+for (final Map.Entry> entry : 
intersectionsProp.entrySet()) {
+final Resource type = entry.getKey();
+final List intersectionList = entry.getValue();
+final Set otherTypes = new HashSet<>();
+// Combine all of a type's intersections together.
+for (final Set intersection : intersectionList) {
+otherTypes.addAll(intersection);
+}
+for (final Resource other : otherTypes) {
+// :A intersectionOf[:B, :C] implies that
+// :A subclassOf :B
+// :A subclassOf :C
+// So add each type that's part of the intersection to the
+// 

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

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-292:


Github user jessehatfield commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/206#discussion_r134081316
  
--- Diff: 
sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java 
---
@@ -416,22 +425,131 @@ private void 
refreshHasValueRestrictions(Map restrictions) throws
 }
 }
 
-private static Vertex getVertex(Graph graph, Object id) {
-Iterator it = graph.vertices(id.toString());
+private void refreshIntersectionOf() throws QueryEvaluationException {
+final Map> intersectionsProp = new 
HashMap<>();
+
+// First query for all the owl:intersectionOf's.
+// If we have the following intersectionOf:
+// :A owl:intersectionOf[:B, :C]
+// It will be represented by triples following a pattern similar 
to:
+// <:A> owl:intersectionOf _:bnode1 .
+//  _:bnode1 rdf:first <:B> .
+//  _:bnode1 rdf:rest _:bnode2 .
+// _:bnode2 rdf:first <:C> .
+// _:bnode2 rdf:rest rdf:nil .
+ryaDaoQueryWrapper.queryAll(null, OWL.INTERSECTIONOF, null, new 
RyaDaoStatementIterHandler() {
+@Override
+public void handleStatementIter(final Statement st1) throws 
Exception {
+final Resource type = st1.getSubject();
+// head will point to a type that is part of the 
intersection.
+URI head = (URI) st1.getObject();
+if (!intersectionsProp.containsKey(type)) {
+intersectionsProp.put(type, new 
ArrayList());
+}
+final Set intersection = new HashSet<>();
+// Go through and find all bnodes that are part of the 
defined
+// intersection.
+while (!RDF.NIL.equals(head)) {
+// rdf.first will point to a type item that is in the
+// intersection.
+ryaDaoQueryWrapper.queryFirst(head, RDF.FIRST, null, 
new RyaDaoStatementIterHandler() {
+@Override
+public void handleStatementIter(final Statement 
st2) throws Exception{
+// The object found in the query represents a 
type
+// that should be included in the intersection.
+final URI obj2 = (URI) st2.getObject();
+intersection.add(obj2);
+}
+});
+final List headHolder = new ArrayList<>(1);
+// rdf.rest will point to the next bnode that's part 
of the
+// intersection.
+ryaDaoQueryWrapper.queryFirst(head, RDF.REST, null, 
new RyaDaoStatementIterHandler() {
+@Override
+public void handleStatementIter(final Statement 
st3) throws Exception {
+// This object is the next bnode head to look 
for.
+final URI obj3 = (URI) st3.getObject();
+headHolder.add(obj3);
+}
+});
+// As long as we get a new head there are more bnodes 
that
+// are part of the intersection. Keep going until we 
reach
+// rdf.nil.
+if (!headHolder.isEmpty()) {
+head = headHolder.get(0);
+} else {
+head = RDF.NIL;
+}
+}
+// Add this intersection for this type. There may be more
+// intersections for this type so each type has a list of
+// intersection sets.
+intersectionsProp.get(type).add(intersection);
+}
+});
+
+for (final Map.Entry> entry : 
intersectionsProp.entrySet()) {
+final Resource type = entry.getKey();
+final List intersectionList = entry.getValue();
+final Set otherTypes = new HashSet<>();
+// Combine all of a type's intersections together.
+for (final Set intersection : intersectionList) {
+otherTypes.addAll(intersection);
+}
+for (final Resource other : otherTypes) {
+// :A 

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

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-292:


Github user jessehatfield commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/206#discussion_r134081075
  
--- Diff: 
sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java 
---
@@ -621,22 +631,189 @@ private void 
refreshHasValueRestrictions(Map restrictions) throws
 }
 }
 
-private static Vertex getVertex(Graph graph, Object id) {
-Iterator it = graph.vertices(id.toString());
+private void refreshIntersectionOf() throws QueryEvaluationException {
+final Map> intersectionsProp = new 
HashMap<>();
+
+// First query for all the owl:intersectionOf's.
+// If we have the following intersectionOf:
+// :A owl:intersectionOf[:B, :C]
+// It will be represented by triples following a pattern similar 
to:
+// <:A> owl:intersectionOf _:bnode1 .
+//  _:bnode1 rdf:first <:B> .
+//  _:bnode1 rdf:rest _:bnode2 .
+// _:bnode2 rdf:first <:C> .
+// _:bnode2 rdf:rest rdf:nil .
+ryaDaoQueryWrapper.queryAll(null, OWL.INTERSECTIONOF, null, new 
RDFHandlerBase() {
+@Override
+public void handleStatement(final Statement statement) throws 
RDFHandlerException {
+final Resource type = statement.getSubject();
+// head will point to a type that is part of the 
intersection.
+final URI head = (URI) statement.getObject();
+if (!intersectionsProp.containsKey(type)) {
+intersectionsProp.put(type, new 
ArrayList());
+}
+
+// head should point to a list of items that forms the
+// intersection.
+try {
+final Set intersection = new 
LinkedHashSet<>(getList(head));
+if (!intersection.isEmpty()) {
+// Add this intersection for this type. There may 
be more
+// intersections for this type so each type has a 
list of
+// intersection sets.
+intersectionsProp.get(type).add(intersection);
+}
+} catch (final QueryEvaluationException e) {
+throw new RDFHandlerException("Error getting 
intersection list.", e);
+}
+}
+});
+
+intersections.clear();
+for (final Entry> entry : 
intersectionsProp.entrySet()) {
+final Resource type = entry.getKey();
+final List intersectionList = entry.getValue();
+final Set otherTypes = new HashSet<>();
+// Combine all of a type's intersections together.
+for (final Set intersection : intersectionList) {
+otherTypes.addAll(intersection);
+}
+for (final Resource other : otherTypes) {
+// :A intersectionOf[:B, :C] implies that
+// :A subclassOf :B
+// :A subclassOf :C
+// So add each type that's part of the intersection to the
+// subClassOf graph.
+addSubClassOf(type, other);
+for (final Set intersection : intersectionList) {
+if (!intersection.contains(other)) {
+addIntersection(intersection, other);
+}
+}
+}
+
+final List typeStatements = new ArrayList<>();
+ryaDaoQueryWrapper.queryAll(type, OWL.INTERSECTIONOF, null, 
new RDFHandlerBase() {
+@Override
+public void handleStatement(final Statement statement) 
throws RDFHandlerException {
+typeStatements.add(statement);
+}
+});
+
+final Set superClasses = getSuperClasses((URI) type);
+for (final Set intersection : intersectionList) {
+addIntersection(intersection, type);
+for (final URI superClass : superClasses) {
+// Add intersections to super classes if applicable.
+// IF:
+// :A intersectionOf[:B, :C]
+// AND
+// :A subclassOf :D
+// Then we can infer:
+// 

[GitHub] incubator-rya pull request #206: RYA-292 Added owl:intersectionOf inference.

2017-08-18 Thread jessehatfield
Github user jessehatfield commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/206#discussion_r134081075
  
--- Diff: 
sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java 
---
@@ -621,22 +631,189 @@ private void 
refreshHasValueRestrictions(Map restrictions) throws
 }
 }
 
-private static Vertex getVertex(Graph graph, Object id) {
-Iterator it = graph.vertices(id.toString());
+private void refreshIntersectionOf() throws QueryEvaluationException {
+final Map> intersectionsProp = new 
HashMap<>();
+
+// First query for all the owl:intersectionOf's.
+// If we have the following intersectionOf:
+// :A owl:intersectionOf[:B, :C]
+// It will be represented by triples following a pattern similar 
to:
+// <:A> owl:intersectionOf _:bnode1 .
+//  _:bnode1 rdf:first <:B> .
+//  _:bnode1 rdf:rest _:bnode2 .
+// _:bnode2 rdf:first <:C> .
+// _:bnode2 rdf:rest rdf:nil .
+ryaDaoQueryWrapper.queryAll(null, OWL.INTERSECTIONOF, null, new 
RDFHandlerBase() {
+@Override
+public void handleStatement(final Statement statement) throws 
RDFHandlerException {
+final Resource type = statement.getSubject();
+// head will point to a type that is part of the 
intersection.
+final URI head = (URI) statement.getObject();
+if (!intersectionsProp.containsKey(type)) {
+intersectionsProp.put(type, new 
ArrayList());
+}
+
+// head should point to a list of items that forms the
+// intersection.
+try {
+final Set intersection = new 
LinkedHashSet<>(getList(head));
+if (!intersection.isEmpty()) {
+// Add this intersection for this type. There may 
be more
+// intersections for this type so each type has a 
list of
+// intersection sets.
+intersectionsProp.get(type).add(intersection);
+}
+} catch (final QueryEvaluationException e) {
+throw new RDFHandlerException("Error getting 
intersection list.", e);
+}
+}
+});
+
+intersections.clear();
+for (final Entry> entry : 
intersectionsProp.entrySet()) {
+final Resource type = entry.getKey();
+final List intersectionList = entry.getValue();
+final Set otherTypes = new HashSet<>();
+// Combine all of a type's intersections together.
+for (final Set intersection : intersectionList) {
+otherTypes.addAll(intersection);
+}
+for (final Resource other : otherTypes) {
+// :A intersectionOf[:B, :C] implies that
+// :A subclassOf :B
+// :A subclassOf :C
+// So add each type that's part of the intersection to the
+// subClassOf graph.
+addSubClassOf(type, other);
+for (final Set intersection : intersectionList) {
+if (!intersection.contains(other)) {
+addIntersection(intersection, other);
+}
+}
+}
+
+final List typeStatements = new ArrayList<>();
+ryaDaoQueryWrapper.queryAll(type, OWL.INTERSECTIONOF, null, 
new RDFHandlerBase() {
+@Override
+public void handleStatement(final Statement statement) 
throws RDFHandlerException {
+typeStatements.add(statement);
+}
+});
+
+final Set superClasses = getSuperClasses((URI) type);
+for (final Set intersection : intersectionList) {
+addIntersection(intersection, type);
+for (final URI superClass : superClasses) {
+// Add intersections to super classes if applicable.
+// IF:
+// :A intersectionOf[:B, :C]
+// AND
+// :A subclassOf :D
+// Then we can infer:
+// intersectionOf[:B, :C] subclassOf :D
+for (final Statement statement : typeStatements) {
+final Resource intersectionOfBnode = (Resource) 
statement.getObject();
+

[jira] [Closed] (RYA-295) Implement owl:allValuesFrom inference

2017-08-18 Thread Caleb Meier (JIRA)

 [ 
https://issues.apache.org/jira/browse/RYA-295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Caleb Meier closed RYA-295.
---
   Resolution: Fixed
Fix Version/s: 3.2.11

> Implement owl:allValuesFrom inference
> -
>
> Key: RYA-295
> URL: https://issues.apache.org/jira/browse/RYA-295
> Project: Rya
>  Issue Type: Sub-task
>  Components: sail
>Reporter: Jesse Hatfield
>Assignee: Jesse Hatfield
> Fix For: 3.2.11
>
>
> An *{{owl:allValuesFrom}}* restriction defines the set of resources for 
> which, given a particular predicate and other type, every value of that 
> predicate is a member of that type. Note that there may be no values at all.
> For example, the ontology may state that resources of type {{:Person}} have 
> all values from {{:Person}} for type {{:parent}}: that is, a person's parents 
> are all people as well. Therefore, a pattern of the form {{?x rdf:type 
> :Person}} should be expanded to:
> {noformat}
> { ?y rdf:type :Person .
>   ?y :parent ?x }
> UNION
> { ?x rdf:type :Person }
> {noformat}
> i.e. we can infer {{?x}}'s personhood from the fact that child {{?y}} is 
> known to satisfy the restriction.
> Notes:
> -We can infer "x is a person, therefore all of x's parents are people". But 
> we can't infer "all of x's parents are people, therefore x is a person", 
> because of the open world semantics: we don't know that the parents given by 
> the data are in fact all of x's parents. (If there were also a cardinality 
> restriction and we could presume consistency, then we could infer this in the 
> right circumstances, but this is outside the scope of basic allValuesFrom 
> support.) This differs with most other property restriction rules in that we 
> can't infer that an object belongs to the class defined by the restriction, 
> but rather use the fact that an object is already known to belong in that 
> class in order to infer something about its neighbors in the graph (the types 
> of the values).
> -The example above could be applied recursively, but to implement this as a 
> simple query rewrite we'll need to limit recursion depth (and interactions 
> with other rules, for the same reasons).



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


[jira] [Closed] (RYA-337) Batch Queries to MongoDB

2017-08-18 Thread Caleb Meier (JIRA)

 [ 
https://issues.apache.org/jira/browse/RYA-337?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Caleb Meier closed RYA-337.
---
   Resolution: Fixed
Fix Version/s: 3.2.11

> Batch Queries to MongoDB
> 
>
> Key: RYA-337
> URL: https://issues.apache.org/jira/browse/RYA-337
> Project: Rya
>  Issue Type: Improvement
>  Components: dao
>Reporter: Aaron Mihalik
>Assignee: Aaron Mihalik
> Fix For: 3.2.11
>
>
> Currently the MongoDB DAO sends one query at a time to Mongo.  Instead, the 
> DAO should send a batch of queries and perform a client side hash join (like 
> the Accumulo DAO)



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


[jira] [Commented] (RYA-295) Implement owl:allValuesFrom inference

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-295:


Github user asfgit closed the pull request at:

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


> Implement owl:allValuesFrom inference
> -
>
> Key: RYA-295
> URL: https://issues.apache.org/jira/browse/RYA-295
> Project: Rya
>  Issue Type: Sub-task
>  Components: sail
>Reporter: Jesse Hatfield
>Assignee: Jesse Hatfield
>
> An *{{owl:allValuesFrom}}* restriction defines the set of resources for 
> which, given a particular predicate and other type, every value of that 
> predicate is a member of that type. Note that there may be no values at all.
> For example, the ontology may state that resources of type {{:Person}} have 
> all values from {{:Person}} for type {{:parent}}: that is, a person's parents 
> are all people as well. Therefore, a pattern of the form {{?x rdf:type 
> :Person}} should be expanded to:
> {noformat}
> { ?y rdf:type :Person .
>   ?y :parent ?x }
> UNION
> { ?x rdf:type :Person }
> {noformat}
> i.e. we can infer {{?x}}'s personhood from the fact that child {{?y}} is 
> known to satisfy the restriction.
> Notes:
> -We can infer "x is a person, therefore all of x's parents are people". But 
> we can't infer "all of x's parents are people, therefore x is a person", 
> because of the open world semantics: we don't know that the parents given by 
> the data are in fact all of x's parents. (If there were also a cardinality 
> restriction and we could presume consistency, then we could infer this in the 
> right circumstances, but this is outside the scope of basic allValuesFrom 
> support.) This differs with most other property restriction rules in that we 
> can't infer that an object belongs to the class defined by the restriction, 
> but rather use the fact that an object is already known to belong in that 
> class in order to infer something about its neighbors in the graph (the types 
> of the values).
> -The example above could be applied recursively, but to implement this as a 
> simple query rewrite we'll need to limit recursion depth (and interactions 
> with other rules, for the same reasons).



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


[GitHub] incubator-rya pull request #201: RYA-295 owl:allValuesFrom inference

2017-08-18 Thread asfgit
Github user asfgit closed the pull request at:

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


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-337) Batch Queries to MongoDB

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-337:


Github user asfgit closed the pull request at:

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


> Batch Queries to MongoDB
> 
>
> Key: RYA-337
> URL: https://issues.apache.org/jira/browse/RYA-337
> Project: Rya
>  Issue Type: Improvement
>  Components: dao
>Reporter: Aaron Mihalik
>Assignee: Aaron Mihalik
>
> Currently the MongoDB DAO sends one query at a time to Mongo.  Instead, the 
> DAO should send a batch of queries and perform a client side hash join (like 
> the Accumulo DAO)



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


[GitHub] incubator-rya pull request #204: RYA-337 Adding batch queries to MongoDB. Cl...

2017-08-18 Thread asfgit
Github user asfgit closed the pull request at:

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


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-295) Implement owl:allValuesFrom inference

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-295:


Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/415/



> Implement owl:allValuesFrom inference
> -
>
> Key: RYA-295
> URL: https://issues.apache.org/jira/browse/RYA-295
> Project: Rya
>  Issue Type: Sub-task
>  Components: sail
>Reporter: Jesse Hatfield
>Assignee: Jesse Hatfield
>
> An *{{owl:allValuesFrom}}* restriction defines the set of resources for 
> which, given a particular predicate and other type, every value of that 
> predicate is a member of that type. Note that there may be no values at all.
> For example, the ontology may state that resources of type {{:Person}} have 
> all values from {{:Person}} for type {{:parent}}: that is, a person's parents 
> are all people as well. Therefore, a pattern of the form {{?x rdf:type 
> :Person}} should be expanded to:
> {noformat}
> { ?y rdf:type :Person .
>   ?y :parent ?x }
> UNION
> { ?x rdf:type :Person }
> {noformat}
> i.e. we can infer {{?x}}'s personhood from the fact that child {{?y}} is 
> known to satisfy the restriction.
> Notes:
> -We can infer "x is a person, therefore all of x's parents are people". But 
> we can't infer "all of x's parents are people, therefore x is a person", 
> because of the open world semantics: we don't know that the parents given by 
> the data are in fact all of x's parents. (If there were also a cardinality 
> restriction and we could presume consistency, then we could infer this in the 
> right circumstances, but this is outside the scope of basic allValuesFrom 
> support.) This differs with most other property restriction rules in that we 
> can't infer that an object belongs to the class defined by the restriction, 
> but rather use the fact that an object is already known to belong in that 
> class in order to infer something about its neighbors in the graph (the types 
> of the values).
> -The example above could be applied recursively, but to implement this as a 
> simple query rewrite we'll need to limit recursion depth (and interactions 
> with other rules, for the same reasons).



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


[jira] [Closed] (RYA-283) Incorporate Batch Operations into Fluo Workflow

2017-08-18 Thread Caleb Meier (JIRA)

 [ 
https://issues.apache.org/jira/browse/RYA-283?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Caleb Meier closed RYA-283.
---
   Resolution: Fixed
Fix Version/s: 3.2.10

> Incorporate Batch Operations into Fluo Workflow
> ---
>
> Key: RYA-283
> URL: https://issues.apache.org/jira/browse/RYA-283
> Project: Rya
>  Issue Type: Bug
>Affects Versions: 3.2.10
>Reporter: Caleb Meier
>Assignee: Caleb Meier
> Fix For: 3.2.10
>
>
> The BatchObserver framework that is currently under development needs to be 
> integrated with Fluo.  That is, wherever results are added to Fluo from an 
> iterator, or whenever results are deleted within an iteration, Fluo should 
> instead delegate that task to the BatchObserver.  This will ensure that Fluo 
> will not throw an OutOfMemory exception in the event that it attempts to 
> process an extremely large transaction.



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


[GitHub] incubator-rya pull request #198: Rya 283

2017-08-18 Thread asfgit
Github user asfgit closed the pull request at:

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


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] incubator-rya issue #206: RYA-292 Added owl:intersectionOf inference.

2017-08-18 Thread asfgit
Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/414/



---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


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

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-292:


Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/414/



> 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)


[jira] [Closed] (RYA-282) Add nested Query Support to Fluo

2017-08-18 Thread Caleb Meier (JIRA)

 [ 
https://issues.apache.org/jira/browse/RYA-282?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Caleb Meier closed RYA-282.
---
   Resolution: Fixed
Fix Version/s: 3.2.10

> Add nested Query Support to Fluo
> 
>
> Key: RYA-282
> URL: https://issues.apache.org/jira/browse/RYA-282
> Project: Rya
>  Issue Type: New Feature
>Affects Versions: 3.2.10
>Reporter: Caleb Meier
>Assignee: Caleb Meier
> Fix For: 3.2.10
>
>
> We need to add the ability to Fluo to incrementally update nested queries.  
> That is, queries of the form select ?x ?y { select ?x ?y ?z { ... } }.  This 
> is particularly useful if we want to filter on aggregation results or use 
> aggregation results in a construct query.



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


[GitHub] incubator-rya pull request #192: Rya 282 nested query

2017-08-18 Thread asfgit
Github user asfgit closed the pull request at:

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


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] incubator-rya pull request #153: RYA-250 Smart URI avoiding data duplication

2017-08-18 Thread meiercaleb
Github user meiercaleb commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/153#discussion_r134025772
  
--- Diff: 
extras/indexing/src/main/java/org/apache/rya/indexing/entity/storage/mongo/MongoEntityStorage.java
 ---
@@ -242,4 +283,84 @@ private static Bson makeExplicitTypeFilter(final 
RyaURI typeId) {
 
 return Stream.of(dataTypeFilter, valueFilter);
 }
+
+private boolean detectDuplicates(final Entity entity) throws 
EntityStorageException {
+boolean hasDuplicate = false;
+if (duplicateDataDetector.isDetectionEnabled()) {
+// Grab all entities that have all the same explicit types as 
our
+// original Entity.
+final List comparisonEntities = 
searchHasAllExplicitTypes(entity.getExplicitTypeIds());
+
+// Now that we have our set of potential duplicates, compare 
them.
+// We can stop when we find one duplicate.
+for (final Entity compareEntity : comparisonEntities) {
+try {
+hasDuplicate = 
duplicateDataDetector.compareEntities(entity, compareEntity);
+} catch (final SmartUriException e) {
+throw new EntityStorageException("Encountered an error 
while comparing entities.", e);
+}
+if (hasDuplicate) {
+break;
+}
+}
+}
+return hasDuplicate;
+}
+
+/**
+ * Searches the Entity storage for all Entities that contain all the
+ * specified explicit type IDs.
+ * @param explicitTypeIds the {@link ImmutableList} of {@link RyaURI}s 
that
+ * are being searched for.
+ * @return the {@link List} of {@link Entity}s that have all the 
specified
+ * explicit type IDs. If nothing was found an empty {@link List} is
+ * returned.
+ * @throws EntityStorageException
+ */
+private List searchHasAllExplicitTypes(final 
ImmutableList explicitTypeIds) throws EntityStorageException {
+final List hasAllExplicitTypesEntities = new ArrayList<>();
+if (!explicitTypeIds.isEmpty()) {
+// Grab the first type from the explicit type IDs.
+final RyaURI firstType = explicitTypeIds.get(0);
+
+// Check if that type exists anywhere in storage.
+final List subjects = new ArrayList<>();
+Optional type;
+try {
+if (mongoTypeStorage == null) {
+mongoTypeStorage = new MongoTypeStorage(mongo, 
ryaInstanceName);
+}
+type = mongoTypeStorage.get(firstType);
+} catch (final TypeStorageException e) {
+throw new EntityStorageException("Unable to get entity 
type: " + firstType, e);
+}
+if (type.isPresent()) {
+// Grab the subjects for all the types we found matching 
"firstType"
+final ConvertingCursor cursor = 
search(Optional.empty(), type.get(), Collections.emptySet());
--- End diff --

Instead of getting all of the TypedEntities in the database with the given 
Type, you should call the method Event.makeTypedEntity(...) for each typeId.  
Then use the Type and Property map of each TypedEntity to query the DB.  This 
will provide a more constrained query that uses the actual property values.  
Finally, I think that you should add a compareTypedEntities method to your 
DuplicateDataDetector so that you can then apply it to compare the returned 
TypedEntities with the TypedEntity that you created from the original Entity.  
This eliminates the need the re-query the DB to get the Entities that each 
TypedEntity is derived from.
Also, comparing all TypedEntities derived from a given Entity with all 
other TypeEntities in the database provides a stricter notion of duplicate data 
detection.  For example, if an Entity contains the Types People and Employee 
with associated properties, then the approach I'm describing would compare the 
People TypedEntity and the Employee TypedEntity with all other People and 
Employee TypedEntities in the DB.  None of those TypedEntities could be 
duplicates in order for the Entity to be deemed a non-duplicate.  As it's 
currently implemented, if an Employee TypedEntity was ingested and derived from 
an Entity whose sole type was Employee, then an Entity with Type Person and 
Employee would not be considered a duplicate even if the Employee properties 
were exactly the same!  So in effect, I think we should detect if any 
TypedEntites derived from an Entity are duplicate to avoid duplicating 
TypedEntities (I think that these are more meaningful and concrete than 
Entities, which are e
 

[jira] [Commented] (RYA-250) Smart URI avoid data duplication

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-250:


Github user meiercaleb commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/153#discussion_r134025772
  
--- Diff: 
extras/indexing/src/main/java/org/apache/rya/indexing/entity/storage/mongo/MongoEntityStorage.java
 ---
@@ -242,4 +283,84 @@ private static Bson makeExplicitTypeFilter(final 
RyaURI typeId) {
 
 return Stream.of(dataTypeFilter, valueFilter);
 }
+
+private boolean detectDuplicates(final Entity entity) throws 
EntityStorageException {
+boolean hasDuplicate = false;
+if (duplicateDataDetector.isDetectionEnabled()) {
+// Grab all entities that have all the same explicit types as 
our
+// original Entity.
+final List comparisonEntities = 
searchHasAllExplicitTypes(entity.getExplicitTypeIds());
+
+// Now that we have our set of potential duplicates, compare 
them.
+// We can stop when we find one duplicate.
+for (final Entity compareEntity : comparisonEntities) {
+try {
+hasDuplicate = 
duplicateDataDetector.compareEntities(entity, compareEntity);
+} catch (final SmartUriException e) {
+throw new EntityStorageException("Encountered an error 
while comparing entities.", e);
+}
+if (hasDuplicate) {
+break;
+}
+}
+}
+return hasDuplicate;
+}
+
+/**
+ * Searches the Entity storage for all Entities that contain all the
+ * specified explicit type IDs.
+ * @param explicitTypeIds the {@link ImmutableList} of {@link RyaURI}s 
that
+ * are being searched for.
+ * @return the {@link List} of {@link Entity}s that have all the 
specified
+ * explicit type IDs. If nothing was found an empty {@link List} is
+ * returned.
+ * @throws EntityStorageException
+ */
+private List searchHasAllExplicitTypes(final 
ImmutableList explicitTypeIds) throws EntityStorageException {
+final List hasAllExplicitTypesEntities = new ArrayList<>();
+if (!explicitTypeIds.isEmpty()) {
+// Grab the first type from the explicit type IDs.
+final RyaURI firstType = explicitTypeIds.get(0);
+
+// Check if that type exists anywhere in storage.
+final List subjects = new ArrayList<>();
+Optional type;
+try {
+if (mongoTypeStorage == null) {
+mongoTypeStorage = new MongoTypeStorage(mongo, 
ryaInstanceName);
+}
+type = mongoTypeStorage.get(firstType);
+} catch (final TypeStorageException e) {
+throw new EntityStorageException("Unable to get entity 
type: " + firstType, e);
+}
+if (type.isPresent()) {
+// Grab the subjects for all the types we found matching 
"firstType"
+final ConvertingCursor cursor = 
search(Optional.empty(), type.get(), Collections.emptySet());
--- End diff --

Instead of getting all of the TypedEntities in the database with the given 
Type, you should call the method Event.makeTypedEntity(...) for each typeId.  
Then use the Type and Property map of each TypedEntity to query the DB.  This 
will provide a more constrained query that uses the actual property values.  
Finally, I think that you should add a compareTypedEntities method to your 
DuplicateDataDetector so that you can then apply it to compare the returned 
TypedEntities with the TypedEntity that you created from the original Entity.  
This eliminates the need the re-query the DB to get the Entities that each 
TypedEntity is derived from.
Also, comparing all TypedEntities derived from a given Entity with all 
other TypeEntities in the database provides a stricter notion of duplicate data 
detection.  For example, if an Entity contains the Types People and Employee 
with associated properties, then the approach I'm describing would compare the 
People TypedEntity and the Employee TypedEntity with all other People and 
Employee TypedEntities in the DB.  None of those TypedEntities could be 
duplicates in order for the Entity to be deemed a non-duplicate.  As it's 
currently implemented, if an Employee TypedEntity was ingested and derived from 
an Entity whose sole type was Employee, then an Entity with Type Person and 
Employee would not be considered a duplicate even if the Employee properties 
were exactly 

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

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-292:


Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/413/



> 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)


[GitHub] incubator-rya issue #206: RYA-292 Added owl:intersectionOf inference.

2017-08-18 Thread asfgit
Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/413/



---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-250) Smart URI avoid data duplication

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-250:


Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/412/



> Smart URI avoid data duplication
> 
>
> Key: RYA-250
> URL: https://issues.apache.org/jira/browse/RYA-250
> Project: Rya
>  Issue Type: Task
>  Components: dao
>Affects Versions: 3.2.10
>Reporter: Eric White
>Assignee: Eric White
> Fix For: 3.2.10
>
>
> Implement Smart URI methods for avoiding data duplication.



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


[GitHub] incubator-rya issue #153: RYA-250 Smart URI avoiding data duplication

2017-08-18 Thread asfgit
Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/412/



---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-295) Implement owl:allValuesFrom inference

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-295:


Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/411/Build
 result: FAILURE[...truncated 222.12 KB...][INFO] 
[INFO] 
Total time: 05:50 min[INFO] Finished at: 2017-08-18T16:08:52+00:00[INFO] Final 
Memory: 114M/3031M[INFO] 
[ERROR] 
Failed to execute goal 
org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on 
project rya.sail: Compilation failure: Compilation failure:[ERROR] 
/home/jenkins/jenkins-slave/workspace/incubator-rya-master-with-optionals-pull-requests/sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java:[998,5]
 illegal start of expression[ERROR] 
/home/jenkins/jenkins-slave/workspace/incubator-rya-master-with-optionals-pull-requests/sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java:[998,63]
 ';' expected[ERROR] 
/home/jenkins/jenkins-slave/workspace/incubator-rya-master-with-optionals-pull-requests/sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java:[998,82]
 ';' expected[ERROR] 
/home/jenkins/jenkins-slave/workspace/incubator-rya-master-with-optionals-pull-requests/sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java:[1024,2]
 reached end of file while parsing[ERROR] -> [Help 1][ERROR] [ERROR] To see the 
full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run 
Maven using the -X switch to enable full debug logging.[ERROR] [ERROR] For more 
information about the errors and possible solutions, please read the following 
articles:[ERROR] [Help 1] 
http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the 
command[ERROR]   mvn  -rf :rya.sailchannel stoppedSetting status of 
89747b21f680643216466158dcb779940822cc93 to FAILURE with url 
https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/411/
 and message: 'FAILURE 'Using context: Jenkins: clean package -Pgeoindexing



> Implement owl:allValuesFrom inference
> -
>
> Key: RYA-295
> URL: https://issues.apache.org/jira/browse/RYA-295
> Project: Rya
>  Issue Type: Sub-task
>  Components: sail
>Reporter: Jesse Hatfield
>Assignee: Jesse Hatfield
>
> An *{{owl:allValuesFrom}}* restriction defines the set of resources for 
> which, given a particular predicate and other type, every value of that 
> predicate is a member of that type. Note that there may be no values at all.
> For example, the ontology may state that resources of type {{:Person}} have 
> all values from {{:Person}} for type {{:parent}}: that is, a person's parents 
> are all people as well. Therefore, a pattern of the form {{?x rdf:type 
> :Person}} should be expanded to:
> {noformat}
> { ?y rdf:type :Person .
>   ?y :parent ?x }
> UNION
> { ?x rdf:type :Person }
> {noformat}
> i.e. we can infer {{?x}}'s personhood from the fact that child {{?y}} is 
> known to satisfy the restriction.
> Notes:
> -We can infer "x is a person, therefore all of x's parents are people". But 
> we can't infer "all of x's parents are people, therefore x is a person", 
> because of the open world semantics: we don't know that the parents given by 
> the data are in fact all of x's parents. (If there were also a cardinality 
> restriction and we could presume consistency, then we could infer this in the 
> right circumstances, but this is outside the scope of basic allValues>From 
> support.) This differs with most other property restriction rules in that we 
> can't infer that an object belongs to the class defined by the restriction, 
> but rather use the fact that an object is already known to belong in that 
> class in order to infer something about its neighbors in the graph (the types 
> of the values).
> -The example above could be applied recursively, but to implement this as a 
> simple query rewrite we'll need to limit recursion depth (and interactions 
> with other rules, for the same reasons).



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


[GitHub] incubator-rya issue #201: RYA-295 owl:allValuesFrom inference

2017-08-18 Thread asfgit
Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/411/Build
 result: FAILURE[...truncated 222.12 KB...][INFO] 
[INFO] 
Total time: 05:50 min[INFO] Finished at: 2017-08-18T16:08:52+00:00[INFO] Final 
Memory: 114M/3031M[INFO] 
[ERROR] 
Failed to execute goal 
org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on 
project rya.sail: Compilation failure: Compilation failure:[ERROR] 
/home/jenkins/jenkins-slave/workspace/incubator-rya-master-with-optionals-pull-requests/sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java:[998,5]
 illegal start of expression[ERROR] 
/home/jenkins/jenkins-slave/workspace/incubator-rya-master-with-optionals-pull-requests/sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java:[998,63]
 ';' expected[ERROR
 ] 
/home/jenkins/jenkins-slave/workspace/incubator-rya-master-with-optionals-pull-requests/sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java:[998,82]
 ';' expected[ERROR] 
/home/jenkins/jenkins-slave/workspace/incubator-rya-master-with-optionals-pull-requests/sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java:[1024,2]
 reached end of file while parsing[ERROR] -> [Help 1][ERROR] [ERROR] To see the 
full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run 
Maven using the -X switch to enable full debug logging.[ERROR] [ERROR] For more 
information about the errors and possible solutions, please read the following 
articles:[ERROR] [Help 1] 
http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the 
command[ERROR]   mvn  -rf :rya.sailchannel stoppedSetting status of 
89747b21f680643216466158dcb779940822cc93 to FAILURE w
 ith url 
https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/411/
 and message: 'FAILURE 'Using context: Jenkins: clean package -Pgeoindexing



---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-337) Batch Queries to MongoDB

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-337:


Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/410/



> Batch Queries to MongoDB
> 
>
> Key: RYA-337
> URL: https://issues.apache.org/jira/browse/RYA-337
> Project: Rya
>  Issue Type: Improvement
>  Components: dao
>Reporter: Aaron Mihalik
>Assignee: Aaron Mihalik
>
> Currently the MongoDB DAO sends one query at a time to Mongo.  Instead, the 
> DAO should send a batch of queries and perform a client side hash join (like 
> the Accumulo DAO)



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


[GitHub] incubator-rya issue #204: RYA-337 Adding batch queries to MongoDB. Closes #2...

2017-08-18 Thread asfgit
Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/410/



---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] incubator-rya pull request #200: Added Access-Control-Allow-Origin * header ...

2017-08-18 Thread Ejgood21
Github user Ejgood21 closed the pull request at:

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


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-337) Batch Queries to MongoDB

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-337:


Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133984224
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/iter/RyaStatementBindingSetCursorIterator.java
 ---
@@ -44,20 +48,21 @@
 
 public class RyaStatementBindingSetCursorIterator implements 
CloseableIteration, RyaDAOException> {
 private static final Logger log = 
Logger.getLogger(RyaStatementBindingSetCursorIterator.class);
+
+private static final int QUERY_BATCH_SIZE = 50;
--- End diff --

Empirical testing... To support the "show me the first 10" or "first 100" 
type queries.  I noticed that if we left this at 1000, then the "show me the 
first 10" or "first 100" type queries were very slow.  However, the "show me 
all" (where all = 30k), we equally as quick using 50 or 1000.


> Batch Queries to MongoDB
> 
>
> Key: RYA-337
> URL: https://issues.apache.org/jira/browse/RYA-337
> Project: Rya
>  Issue Type: Improvement
>  Components: dao
>Reporter: Aaron Mihalik
>Assignee: Aaron Mihalik
>
> Currently the MongoDB DAO sends one query at a time to Mongo.  Instead, the 
> DAO should send a batch of queries and perform a client side hash join (like 
> the Accumulo DAO)



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


[GitHub] incubator-rya pull request #204: RYA-337 Adding batch queries to MongoDB. Cl...

2017-08-18 Thread amihalik
Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133984224
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/iter/RyaStatementBindingSetCursorIterator.java
 ---
@@ -44,20 +48,21 @@
 
 public class RyaStatementBindingSetCursorIterator implements 
CloseableIteration, RyaDAOException> {
 private static final Logger log = 
Logger.getLogger(RyaStatementBindingSetCursorIterator.class);
+
+private static final int QUERY_BATCH_SIZE = 50;
--- End diff --

Empirical testing... To support the "show me the first 10" or "first 100" 
type queries.  I noticed that if we left this at 1000, then the "show me the 
first 10" or "first 100" type queries were very slow.  However, the "show me 
all" (where all = 30k), we equally as quick using 50 or 1000.


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-337) Batch Queries to MongoDB

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-337:


Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133983577
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBQueryEngine.java ---
@@ -140,72 +121,35 @@ public MongoDBRdfConfiguration getConf() {
 public CloseableIteration batchQuery(
 final Collection stmts, MongoDBRdfConfiguration 
conf)
 throws RyaDAOException {
-if (conf == null) {
-conf = configuration;
-}
-final Long maxResults = conf.getLimit();
-final Set queries = new HashSet();
-
-try {
-for (final RyaStatement stmt : stmts) {
-queries.add( strategy.getQuery(stmt));
- }
+final Map queries = new HashMap<>();
 
-// TODO not sure what to do about regex ranges?
-final RyaStatementCursorIterator iterator = new 
RyaStatementCursorIterator(getCollection(conf), queries,
-strategy, configuration.getAuthorizations());
-
-if (maxResults != null) {
-iterator.setMaxResults(maxResults);
-}
-return iterator;
-} catch (final Exception e) {
-throw new RyaDAOException(e);
+for (final RyaStatement stmt : stmts) {
+queries.put(stmt, new MapBindingSet());
 }
 
+return new 
RyaStatementCursorIterator(queryWithBindingSet(queries.entrySet(), conf));
 }
+
 @Override
 public CloseableIterable query(final RyaQuery ryaQuery)
 throws RyaDAOException {
-final Set queries = new HashSet();
-
-try {
-queries.add( strategy.getQuery(ryaQuery));
-
-// TODO not sure what to do about regex ranges?
-// TODO this is gross
-final RyaStatementCursorIterable iterator = new 
RyaStatementCursorIterable(
-new NonCloseableRyaStatementCursorIterator(new 
RyaStatementCursorIterator(getCollection(getConf()),
-queries, strategy, 
configuration.getAuthorizations(;
-
-return iterator;
-} catch (final Exception e) {
-throw new RyaDAOException(e);
-}
+return query(new 
BatchRyaQuery(Collections.singleton(ryaQuery.getQuery(;
 }
+
 @Override
 public CloseableIterable query(final BatchRyaQuery 
batchRyaQuery)
 throws RyaDAOException {
- try {
- final Set queries = new HashSet();
-for (final RyaStatement statement : 
batchRyaQuery.getQueries()){
-queries.add( strategy.getQuery(statement));
+final Map queries = new HashMap<>();
--- End diff --

done


> Batch Queries to MongoDB
> 
>
> Key: RYA-337
> URL: https://issues.apache.org/jira/browse/RYA-337
> Project: Rya
>  Issue Type: Improvement
>  Components: dao
>Reporter: Aaron Mihalik
>Assignee: Aaron Mihalik
>
> Currently the MongoDB DAO sends one query at a time to Mongo.  Instead, the 
> DAO should send a batch of queries and perform a client side hash join (like 
> the Accumulo DAO)



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


[GitHub] incubator-rya pull request #204: RYA-337 Adding batch queries to MongoDB. Cl...

2017-08-18 Thread amihalik
Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133983577
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBQueryEngine.java ---
@@ -140,72 +121,35 @@ public MongoDBRdfConfiguration getConf() {
 public CloseableIteration batchQuery(
 final Collection stmts, MongoDBRdfConfiguration 
conf)
 throws RyaDAOException {
-if (conf == null) {
-conf = configuration;
-}
-final Long maxResults = conf.getLimit();
-final Set queries = new HashSet();
-
-try {
-for (final RyaStatement stmt : stmts) {
-queries.add( strategy.getQuery(stmt));
- }
+final Map queries = new HashMap<>();
 
-// TODO not sure what to do about regex ranges?
-final RyaStatementCursorIterator iterator = new 
RyaStatementCursorIterator(getCollection(conf), queries,
-strategy, configuration.getAuthorizations());
-
-if (maxResults != null) {
-iterator.setMaxResults(maxResults);
-}
-return iterator;
-} catch (final Exception e) {
-throw new RyaDAOException(e);
+for (final RyaStatement stmt : stmts) {
+queries.put(stmt, new MapBindingSet());
 }
 
+return new 
RyaStatementCursorIterator(queryWithBindingSet(queries.entrySet(), conf));
 }
+
 @Override
 public CloseableIterable query(final RyaQuery ryaQuery)
 throws RyaDAOException {
-final Set queries = new HashSet();
-
-try {
-queries.add( strategy.getQuery(ryaQuery));
-
-// TODO not sure what to do about regex ranges?
-// TODO this is gross
-final RyaStatementCursorIterable iterator = new 
RyaStatementCursorIterable(
-new NonCloseableRyaStatementCursorIterator(new 
RyaStatementCursorIterator(getCollection(getConf()),
-queries, strategy, 
configuration.getAuthorizations(;
-
-return iterator;
-} catch (final Exception e) {
-throw new RyaDAOException(e);
-}
+return query(new 
BatchRyaQuery(Collections.singleton(ryaQuery.getQuery(;
 }
+
 @Override
 public CloseableIterable query(final BatchRyaQuery 
batchRyaQuery)
 throws RyaDAOException {
- try {
- final Set queries = new HashSet();
-for (final RyaStatement statement : 
batchRyaQuery.getQueries()){
-queries.add( strategy.getQuery(statement));
+final Map queries = new HashMap<>();
--- End diff --

done


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] incubator-rya pull request #204: RYA-337 Adding batch queries to MongoDB. Cl...

2017-08-18 Thread amihalik
Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133983396
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBQueryEngine.java ---
@@ -140,72 +121,35 @@ public MongoDBRdfConfiguration getConf() {
 public CloseableIteration batchQuery(
 final Collection stmts, MongoDBRdfConfiguration 
conf)
 throws RyaDAOException {
-if (conf == null) {
-conf = configuration;
-}
-final Long maxResults = conf.getLimit();
-final Set queries = new HashSet();
-
-try {
-for (final RyaStatement stmt : stmts) {
-queries.add( strategy.getQuery(stmt));
- }
+final Map queries = new HashMap<>();
 
-// TODO not sure what to do about regex ranges?
-final RyaStatementCursorIterator iterator = new 
RyaStatementCursorIterator(getCollection(conf), queries,
-strategy, configuration.getAuthorizations());
-
-if (maxResults != null) {
-iterator.setMaxResults(maxResults);
-}
-return iterator;
-} catch (final Exception e) {
-throw new RyaDAOException(e);
+for (final RyaStatement stmt : stmts) {
+queries.put(stmt, new MapBindingSet());
 }
 
+return new 
RyaStatementCursorIterator(queryWithBindingSet(queries.entrySet(), conf));
 }
+
 @Override
 public CloseableIterable query(final RyaQuery ryaQuery)
 throws RyaDAOException {
-final Set queries = new HashSet();
-
-try {
-queries.add( strategy.getQuery(ryaQuery));
-
-// TODO not sure what to do about regex ranges?
-// TODO this is gross
-final RyaStatementCursorIterable iterator = new 
RyaStatementCursorIterable(
-new NonCloseableRyaStatementCursorIterator(new 
RyaStatementCursorIterator(getCollection(getConf()),
-queries, strategy, 
configuration.getAuthorizations(;
-
-return iterator;
-} catch (final Exception e) {
-throw new RyaDAOException(e);
-}
+return query(new 
BatchRyaQuery(Collections.singleton(ryaQuery.getQuery(;
--- End diff --

done


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-337) Batch Queries to MongoDB

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-337:


Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133983396
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBQueryEngine.java ---
@@ -140,72 +121,35 @@ public MongoDBRdfConfiguration getConf() {
 public CloseableIteration batchQuery(
 final Collection stmts, MongoDBRdfConfiguration 
conf)
 throws RyaDAOException {
-if (conf == null) {
-conf = configuration;
-}
-final Long maxResults = conf.getLimit();
-final Set queries = new HashSet();
-
-try {
-for (final RyaStatement stmt : stmts) {
-queries.add( strategy.getQuery(stmt));
- }
+final Map queries = new HashMap<>();
 
-// TODO not sure what to do about regex ranges?
-final RyaStatementCursorIterator iterator = new 
RyaStatementCursorIterator(getCollection(conf), queries,
-strategy, configuration.getAuthorizations());
-
-if (maxResults != null) {
-iterator.setMaxResults(maxResults);
-}
-return iterator;
-} catch (final Exception e) {
-throw new RyaDAOException(e);
+for (final RyaStatement stmt : stmts) {
+queries.put(stmt, new MapBindingSet());
 }
 
+return new 
RyaStatementCursorIterator(queryWithBindingSet(queries.entrySet(), conf));
 }
+
 @Override
 public CloseableIterable query(final RyaQuery ryaQuery)
 throws RyaDAOException {
-final Set queries = new HashSet();
-
-try {
-queries.add( strategy.getQuery(ryaQuery));
-
-// TODO not sure what to do about regex ranges?
-// TODO this is gross
-final RyaStatementCursorIterable iterator = new 
RyaStatementCursorIterable(
-new NonCloseableRyaStatementCursorIterator(new 
RyaStatementCursorIterator(getCollection(getConf()),
-queries, strategy, 
configuration.getAuthorizations(;
-
-return iterator;
-} catch (final Exception e) {
-throw new RyaDAOException(e);
-}
+return query(new 
BatchRyaQuery(Collections.singleton(ryaQuery.getQuery(;
--- End diff --

done


> Batch Queries to MongoDB
> 
>
> Key: RYA-337
> URL: https://issues.apache.org/jira/browse/RYA-337
> Project: Rya
>  Issue Type: Improvement
>  Components: dao
>Reporter: Aaron Mihalik
>Assignee: Aaron Mihalik
>
> Currently the MongoDB DAO sends one query at a time to Mongo.  Instead, the 
> DAO should send a batch of queries and perform a client side hash join (like 
> the Accumulo DAO)



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


[jira] [Commented] (RYA-337) Batch Queries to MongoDB

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-337:


Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133983122
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBQueryEngine.java ---
@@ -86,22 +84,10 @@ public MongoDBRdfConfiguration getConf() {
 public CloseableIteration query(
 final RyaStatement stmt, MongoDBRdfConfiguration conf)
 throws RyaDAOException {
-if (conf == null) {
-conf = configuration;
-}
-final Long maxResults = conf.getLimit();
-final Set queries = new HashSet();
-final DBObject query = strategy.getQuery(stmt);
-queries.add(query);
-final MongoDatabase db = 
mongoClient.getDatabase(conf.getMongoDBName());
-final MongoCollection collection = 
db.getCollection(conf.getTriplesCollectionName());
-final RyaStatementCursorIterator iterator = new 
RyaStatementCursorIterator(collection, queries, strategy,
-conf.getAuthorizations());
-
-if (maxResults != null) {
-iterator.setMaxResults(maxResults);
-}
-return iterator;
+Entry entry = new 
AbstractMap.SimpleEntry<>(stmt, new MapBindingSet());
--- End diff --

done


> Batch Queries to MongoDB
> 
>
> Key: RYA-337
> URL: https://issues.apache.org/jira/browse/RYA-337
> Project: Rya
>  Issue Type: Improvement
>  Components: dao
>Reporter: Aaron Mihalik
>Assignee: Aaron Mihalik
>
> Currently the MongoDB DAO sends one query at a time to Mongo.  Instead, the 
> DAO should send a batch of queries and perform a client side hash join (like 
> the Accumulo DAO)



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


[jira] [Commented] (RYA-337) Batch Queries to MongoDB

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-337:


Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133983248
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBQueryEngine.java ---
@@ -111,25 +97,20 @@ public MongoDBRdfConfiguration getConf() {
 if (conf == null) {
--- End diff --

done


> Batch Queries to MongoDB
> 
>
> Key: RYA-337
> URL: https://issues.apache.org/jira/browse/RYA-337
> Project: Rya
>  Issue Type: Improvement
>  Components: dao
>Reporter: Aaron Mihalik
>Assignee: Aaron Mihalik
>
> Currently the MongoDB DAO sends one query at a time to Mongo.  Instead, the 
> DAO should send a batch of queries and perform a client side hash join (like 
> the Accumulo DAO)



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


[GitHub] incubator-rya pull request #204: RYA-337 Adding batch queries to MongoDB. Cl...

2017-08-18 Thread amihalik
Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133983248
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBQueryEngine.java ---
@@ -111,25 +97,20 @@ public MongoDBRdfConfiguration getConf() {
 if (conf == null) {
--- End diff --

done


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[GitHub] incubator-rya pull request #204: RYA-337 Adding batch queries to MongoDB. Cl...

2017-08-18 Thread amihalik
Github user amihalik commented on a diff in the pull request:

https://github.com/apache/incubator-rya/pull/204#discussion_r133983122
  
--- Diff: 
dao/mongodb.rya/src/main/java/org/apache/rya/mongodb/MongoDBQueryEngine.java ---
@@ -86,22 +84,10 @@ public MongoDBRdfConfiguration getConf() {
 public CloseableIteration query(
 final RyaStatement stmt, MongoDBRdfConfiguration conf)
 throws RyaDAOException {
-if (conf == null) {
-conf = configuration;
-}
-final Long maxResults = conf.getLimit();
-final Set queries = new HashSet();
-final DBObject query = strategy.getQuery(stmt);
-queries.add(query);
-final MongoDatabase db = 
mongoClient.getDatabase(conf.getMongoDBName());
-final MongoCollection collection = 
db.getCollection(conf.getTriplesCollectionName());
-final RyaStatementCursorIterator iterator = new 
RyaStatementCursorIterator(collection, queries, strategy,
-conf.getAuthorizations());
-
-if (maxResults != null) {
-iterator.setMaxResults(maxResults);
-}
-return iterator;
+Entry entry = new 
AbstractMap.SimpleEntry<>(stmt, new MapBindingSet());
--- End diff --

done


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Closed] (RYA-299) Implement rdfs:range inference

2017-08-18 Thread Caleb Meier (JIRA)

 [ 
https://issues.apache.org/jira/browse/RYA-299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Caleb Meier closed RYA-299.
---
   Resolution: Fixed
Fix Version/s: 3.2.10

> Implement rdfs:range inference
> --
>
> Key: RYA-299
> URL: https://issues.apache.org/jira/browse/RYA-299
> Project: Rya
>  Issue Type: Sub-task
>  Components: sail
>Reporter: Jesse Hatfield
>Assignee: Jesse Hatfield
> Fix For: 3.2.10
>
>
> If a predicate has an *{{rdfs:range}}* of some class, than the object of any 
> triple including that predicate belongs to the class.
> If the ontology states that {{:advisor}} has the range of {{:Professor}}, 
> then the inference engine should rewrite queries of the form {{?x rdf:type 
> :Professor}} to check for resources which are anyone's {{:advisor}} (as well 
> as any specifically stated to have type {{:Professor}} ).



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


[jira] [Closed] (RYA-298) Implement rdfs:domain inference

2017-08-18 Thread Caleb Meier (JIRA)

 [ 
https://issues.apache.org/jira/browse/RYA-298?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Caleb Meier closed RYA-298.
---
Resolution: Fixed

> Implement rdfs:domain inference
> ---
>
> Key: RYA-298
> URL: https://issues.apache.org/jira/browse/RYA-298
> Project: Rya
>  Issue Type: Sub-task
>  Components: sail
>Reporter: Jesse Hatfield
>Assignee: Jesse Hatfield
>
> If a predicate has an *{{rdfs:domain}}* of some class, than the subject of 
> any triple including that predicate belongs to the class.
> If the ontology states that {{:advisor}} has the domain of {{:Person}}, then 
> the inference engine should rewrite queries of the form {{?x rdf:type 
> :Person}} to check for resources which have any {{:advisor}} (as well as any 
> specifically stated to have type {{:Person}} ).



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


[jira] [Commented] (RYA-298) Implement rdfs:domain inference

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-298:


Github user asfgit closed the pull request at:

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


> Implement rdfs:domain inference
> ---
>
> Key: RYA-298
> URL: https://issues.apache.org/jira/browse/RYA-298
> Project: Rya
>  Issue Type: Sub-task
>  Components: sail
>Reporter: Jesse Hatfield
>Assignee: Jesse Hatfield
>
> If a predicate has an *{{rdfs:domain}}* of some class, than the subject of 
> any triple including that predicate belongs to the class.
> If the ontology states that {{:advisor}} has the domain of {{:Person}}, then 
> the inference engine should rewrite queries of the form {{?x rdf:type 
> :Person}} to check for resources which have any {{:advisor}} (as well as any 
> specifically stated to have type {{:Person}} ).



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


[GitHub] incubator-rya pull request #197: RYA-298, RYA-299 Domain/range inference.

2017-08-18 Thread asfgit
Github user asfgit closed the pull request at:

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


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---


[jira] [Commented] (RYA-250) Smart URI avoid data duplication

2017-08-18 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on RYA-250:


Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/409/Failed
 Tests: 2incubator-rya-master-with-optionals-pull-requests/org.apache.rya:rya.indexing:
 2org.apache.rya.indexing.statement.metadata.MongoStatementMetadataNodeTest.simpleQueryWithoutBindingSetInvalidPropertyorg.apache.rya.indexing.statement.metadata.MongoStatementMetadataNodeTest.simpleQueryWithBindingSetCollection



> Smart URI avoid data duplication
> 
>
> Key: RYA-250
> URL: https://issues.apache.org/jira/browse/RYA-250
> Project: Rya
>  Issue Type: Task
>  Components: dao
>Affects Versions: 3.2.10
>Reporter: Eric White
>Assignee: Eric White
> Fix For: 3.2.10
>
>
> Implement Smart URI methods for avoiding data duplication.



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


[GitHub] incubator-rya issue #153: RYA-250 Smart URI avoiding data duplication

2017-08-18 Thread asfgit
Github user asfgit commented on the issue:

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

Refer to this link for build results (access rights to CI server needed): 

https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/409/Failed
 Tests: 2incubator-rya-master-with-optionals-pull-requests/org.apache.rya:rya.indexing:
 2org.apache.rya.indexing.statement.metadata.MongoStatementMetadataNodeTest.simpleQueryWithoutBindingSetInvalidPropertyorg.apache.rya.indexing.statement.metadata.MongoStatementMetadataNodeTest.simpleQueryWithBindingSetCollection



---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---