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

    https://github.com/apache/incubator-rya/pull/206#discussion_r133565201
  
    --- Diff: 
sail/src/main/java/org/apache/rya/rdftriplestore/inference/InferenceEngine.java 
---
    @@ -220,163 +229,163 @@ public void refreshGraph() throws 
InferenceEngineException {
                     }
                 }
                 inverseOfMap = invProp;
    -            
    -            ValueFactory vf = ValueFactoryImpl.getInstance();
    -            iter = RyaDAOHelper.query(ryaDAO, null, 
    -                           
vf.createURI("http://www.w3.org/2002/07/owl#propertyChainAxiom";),
    -                           null, conf);
    -            Map<URI,URI> propertyChainPropertiesToBNodes = new 
HashMap<URI, URI>();
    -            propertyChainPropertyToChain = new HashMap<URI, List<URI>>();
    +
    +            final ValueFactory vf = ValueFactoryImpl.getInstance();
    +            iter = RyaDAOHelper.query(ryaDAO, null,
    +                    
vf.createURI("http://www.w3.org/2002/07/owl#propertyChainAxiom";),
    +                    null, conf);
    +            final Map<URI,URI> propertyChainPropertiesToBNodes = new 
HashMap<>();
    +            propertyChainPropertyToChain = new HashMap<>();
                 try {
    -                   while (iter.hasNext()){
    -                           Statement st = iter.next();
    -                           
propertyChainPropertiesToBNodes.put((URI)st.getSubject(), (URI)st.getObject());
    -                   }
    +                while (iter.hasNext()){
    +                    final Statement st = iter.next();
    +                    
propertyChainPropertiesToBNodes.put((URI)st.getSubject(), (URI)st.getObject());
    +                }
                 } finally {
                     if (iter != null) {
                         iter.close();
                     }
                 }
                 // now for each property chain bNode, get the indexed list of 
properties associated with that chain
    -            for (URI propertyChainProperty : 
propertyChainPropertiesToBNodes.keySet()){
    -                   URI bNode = 
propertyChainPropertiesToBNodes.get(propertyChainProperty);
    -                   // query for the list of indexed properties
    -                   iter = RyaDAOHelper.query(ryaDAO, bNode, 
vf.createURI("http://www.w3.org/2000/10/swap/list#index";),
    -                                   null, conf);
    -                   TreeMap<Integer, URI> orderedProperties = new 
TreeMap<Integer, URI>();
    -                   // TODO refactor this.  Wish I could execute sparql
    -                   try {
    -                           while (iter.hasNext()){
    -                             Statement st = iter.next();
    -                             String indexedElement = 
st.getObject().stringValue();
    -                             System.out.println(indexedElement);
    -                             CloseableIteration<Statement, 
QueryEvaluationException>  iter2 = RyaDAOHelper.query(ryaDAO, 
vf.createURI(st.getObject().stringValue()), RDF.FIRST,
    -                                           null, conf);
    -                             String integerValue = "";
    -                             Value anonPropNode = null;
    -                             Value propURI = null;
    -                             if (iter2 != null){
    -                                     while (iter2.hasNext()){
    -                                             Statement iter2Statement = 
iter2.next();
    -                                             integerValue = 
iter2Statement.getObject().stringValue();
    -                                             break;
    -                                     }
    -                                     iter2.close();
    -                             }
    -                             iter2 = RyaDAOHelper.query(ryaDAO, 
vf.createURI(st.getObject().stringValue()), RDF.REST,
    -                                   null, conf);
    -                             if (iter2 != null){
    -                                     while (iter2.hasNext()){
    -                                             Statement iter2Statement = 
iter2.next();
    -                                             anonPropNode = 
iter2Statement.getObject();
    -                                             break;
    -                                     }
    -                                     iter2.close();
    -                                     if (anonPropNode != null){
    -                                             iter2 = 
RyaDAOHelper.query(ryaDAO, vf.createURI(anonPropNode.stringValue()), RDF.FIRST,
    -                                                   null, conf);
    -                                             while (iter2.hasNext()){
    -                                             Statement iter2Statement = 
iter2.next();
    -                                             propURI = 
iter2Statement.getObject();
    -                                             break;
    -                                     }
    -                                     iter2.close();
    -                                     }
    -                             }
    -                             if (!integerValue.isEmpty() && propURI!=null) 
{
    -                                     try {
    -                                     int indexValue = 
Integer.parseInt(integerValue);
    -                                     URI chainPropURI = 
vf.createURI(propURI.stringValue());
    -                                     orderedProperties.put(indexValue, 
chainPropURI);
    -                                     }
    -                                     catch (Exception ex){
    -                                             // TODO log an error here
    -                                             
    -                                     }
    -                             }
    -                           }
    -                   } finally{
    -                           if (iter != null){
    -                                   iter.close();
    -                           }
    -                   }
    -                   List<URI> properties = new ArrayList<URI>();
    -                   for (Map.Entry<Integer, URI> entry : 
orderedProperties.entrySet()){
    -                           properties.add(entry.getValue());
    -                   }
    -                   propertyChainPropertyToChain.put(propertyChainProperty, 
properties);
    +            for (final URI propertyChainProperty : 
propertyChainPropertiesToBNodes.keySet()){
    +                final URI bNode = 
propertyChainPropertiesToBNodes.get(propertyChainProperty);
    +                // query for the list of indexed properties
    +                iter = RyaDAOHelper.query(ryaDAO, bNode, 
vf.createURI("http://www.w3.org/2000/10/swap/list#index";),
    +                        null, conf);
    +                final TreeMap<Integer, URI> orderedProperties = new 
TreeMap<Integer, URI>();
    +                // TODO refactor this.  Wish I could execute sparql
    +                try {
    +                    while (iter.hasNext()){
    +                      final Statement st = iter.next();
    +                      final String indexedElement = 
st.getObject().stringValue();
    +                      log.info(indexedElement);
    +                      CloseableIteration<Statement, 
QueryEvaluationException>  iter2 = RyaDAOHelper.query(ryaDAO, 
vf.createURI(st.getObject().stringValue()), RDF.FIRST,
    +                                null, conf);
    +                      String integerValue = "";
    +                      Value anonPropNode = null;
    +                      Value propURI = null;
    +                      if (iter2 != null){
    +                          while (iter2.hasNext()){
    +                              final Statement iter2Statement = 
iter2.next();
    +                              integerValue = 
iter2Statement.getObject().stringValue();
    +                              break;
    +                          }
    +                          iter2.close();
    +                      }
    +                      iter2 = RyaDAOHelper.query(ryaDAO, 
vf.createURI(st.getObject().stringValue()), RDF.REST,
    +                              null, conf);
    +                      if (iter2 != null){
    +                          while (iter2.hasNext()){
    +                              final Statement iter2Statement = 
iter2.next();
    +                              anonPropNode = iter2Statement.getObject();
    +                              break;
    +                          }
    +                          iter2.close();
    +                          if (anonPropNode != null){
    +                              iter2 = RyaDAOHelper.query(ryaDAO, 
vf.createURI(anonPropNode.stringValue()), RDF.FIRST,
    +                                        null, conf);
    +                              while (iter2.hasNext()){
    +                                  final Statement iter2Statement = 
iter2.next();
    +                                  propURI = iter2Statement.getObject();
    +                                  break;
    +                              }
    +                              iter2.close();
    +                          }
    +                      }
    +                      if (!integerValue.isEmpty() && propURI!=null) {
    +                          try {
    +                              final int indexValue = 
Integer.parseInt(integerValue);
    +                              final URI chainPropURI = 
vf.createURI(propURI.stringValue());
    +                              orderedProperties.put(indexValue, 
chainPropURI);
    +                          }
    +                          catch (final Exception ex){
    +                              // TODO log an error here
    +
    +                          }
    +                      }
    +                    }
    +                } finally{
    +                    if (iter != null){
    +                        iter.close();
    +                    }
    +                }
    +                final List<URI> properties = new ArrayList<URI>();
    +                for (final Map.Entry<Integer, URI> entry : 
orderedProperties.entrySet()){
    +                    properties.add(entry.getValue());
    +                }
    +                propertyChainPropertyToChain.put(propertyChainProperty, 
properties);
                 }
    -            
    +
                 // could also be represented as a list of properties (some of 
which may be blank nodes)
    -            for (URI propertyChainProperty : 
propertyChainPropertiesToBNodes.keySet()){
    -                   List<URI> existingChain = 
propertyChainPropertyToChain.get(propertyChainProperty);
    -                   // if we didn't get a chain, try to get it through 
following the collection
    -                   if ((existingChain == null) || existingChain.isEmpty()) 
{
    -                           
    -                     CloseableIteration<Statement, 
QueryEvaluationException>  iter2 = RyaDAOHelper.query(ryaDAO, 
propertyChainPropertiesToBNodes.get(propertyChainProperty), RDF.FIRST,
    -                                   null, conf);
    -                     List<URI> properties = new ArrayList<URI>();
    -                     URI previousBNode = 
propertyChainPropertiesToBNodes.get(propertyChainProperty);
    -                     if (iter2.hasNext()) {
    -                             Statement iter2Statement = iter2.next();
    -                             Value currentPropValue = 
iter2Statement.getObject();
    -                             while ((currentPropValue != null) && 
(!currentPropValue.stringValue().equalsIgnoreCase(RDF.NIL.stringValue()))){
    -                             if (currentPropValue instanceof URI){
    -                                     iter2 = RyaDAOHelper.query(ryaDAO, 
vf.createURI(currentPropValue.stringValue()), RDF.FIRST,
    -                                           null, conf);
    -                                     if (iter2.hasNext()){
    -                                             iter2Statement = iter2.next();
    -                                             if 
(iter2Statement.getObject() instanceof URI){
    -                                                     
properties.add((URI)iter2Statement.getObject());
    -                                             }
    -                                     }
    -                                     // otherwise see if there is an 
inverse declaration
    -                                     else {
    -                                             iter2 = 
RyaDAOHelper.query(ryaDAO, vf.createURI(currentPropValue.stringValue()), 
OWL.INVERSEOF,
    -                                                   null, conf);
    -                                             if (iter2.hasNext()){
    -                                                     iter2Statement = 
iter2.next();
    -                                                     if 
(iter2Statement.getObject() instanceof URI){
    -                                                             
properties.add(new InverseURI((URI)iter2Statement.getObject()));
    -                                                     }
    -                                             }
    -                                     }
    -                                             // get the next prop pointer
    -                                             iter2 = 
RyaDAOHelper.query(ryaDAO, previousBNode, RDF.REST,
    -                                                   null, conf);
    -                                             if (iter2.hasNext()){
    -                                             iter2Statement = iter2.next();
    -                                             previousBNode = 
(URI)currentPropValue;
    -                                             currentPropValue = 
iter2Statement.getObject();
    -                                     }
    -                                             else {
    -                                                     currentPropValue = 
null;
    -                                             }
    -                             }
    -                             else {
    -                               currentPropValue = null;
    -                             }
    -                                     
    -                             }
    -                   propertyChainPropertyToChain.put(propertyChainProperty, 
properties);
    -                     }
    -                   }
    +            for (final URI propertyChainProperty : 
propertyChainPropertiesToBNodes.keySet()){
    +                final List<URI> existingChain = 
propertyChainPropertyToChain.get(propertyChainProperty);
    +                // if we didn't get a chain, try to get it through 
following the collection
    +                if ((existingChain == null) || existingChain.isEmpty()) {
    +
    +                    CloseableIteration<Statement, 
QueryEvaluationException>  iter2 = RyaDAOHelper.query(ryaDAO, 
propertyChainPropertiesToBNodes.get(propertyChainProperty), RDF.FIRST,
    +                          null, conf);
    +                    final List<URI> properties = new ArrayList<URI>();
    +                    URI previousBNode = 
propertyChainPropertiesToBNodes.get(propertyChainProperty);
    +                  if (iter2.hasNext()) {
    --- 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.
---

Reply via email to