Author: mir
Date: Tue Nov  2 14:42:00 2010
New Revision: 1030067

URL: http://svn.apache.org/viewvc?rev=1030067&view=rev
Log:
CLEREZZA-348: unnecessary mappings no longer added

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Jena2TriaUtil.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Tria2JenaUtil.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.facade/src/main/java/org/apache/clerezza/rdf/jena/facade/JenaGraph.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Jena2TriaUtil.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Jena2TriaUtil.java?rev=1030067&r1=1030066&r2=1030067&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Jena2TriaUtil.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Jena2TriaUtil.java
 Tue Nov  2 14:42:00 2010
@@ -42,9 +42,9 @@ public class Jena2TriaUtil {
                this.tria2JenaBNodes = tria2JenaBNodes;
        }
 
-       private BNode convertJenaNode2TriaBlankNode(Node node) {
+       private BNode convertJenaNode2TriaBlankNode(Node node, boolean 
createBNode) {
                BNode result = tria2JenaBNodes.get(node);
-               if (result == null) {
+               if (result == null && createBNode) {
                        result = new BNode();
                        tria2JenaBNodes.put(node,result);
                }
@@ -80,7 +80,7 @@ public class Jena2TriaUtil {
         */
        public UriRef convertJenaUri2UriRef(Node node) {
                if (node == null) {
-                       return null;
+                       throw new IllegalArgumentException("null argument not 
allowed");
                }
                return new UriRef(node.getURI());
        }
@@ -91,11 +91,21 @@ public class Jena2TriaUtil {
         * @return BNode if it is a Blank Node, UriRef if it is a URI and 
Literal if it is a literal.
         */
        public Resource convertJenaNode2Resource(Node node) {
+               return convertJenaNode2Resource(node, false);
+       }
+
+       /**
+        * Converts a jena node to a resource. If covertBNode is true, then a 
new
+        * BNode is created for a blank node if no mapping already exists.
+        * @param node
+        * @return BNode if it is a Blank Node, UriRef if it is a URI and 
Literal if it is a literal.
+        */
+       public Resource convertJenaNode2Resource(Node node, boolean 
createBNode) {
                if (node == null) {
-                       return null;
+                       throw new IllegalArgumentException("null argument not 
allowed");
                }
                if (node.isBlank()) {
-                       return convertJenaNode2TriaBlankNode(node);
+                       return convertJenaNode2TriaBlankNode(node, createBNode);
                }
                if (node.isURI()) {
                        return convertJenaUri2UriRef(node);
@@ -107,16 +117,31 @@ public class Jena2TriaUtil {
        }
 
        /**
-        * Converts a node to a BNode if it is a Blank Node otherwise to a 
UriRef
+        * Converts a node to a BNode if it is a Blank Node otherwise to a 
UriRef.
+        * If node is a BNode and no mapping to a Blank Node exists, then null 
is
+        * returned, otherwise the existing mapping.
+        *
         * @param node
         * @return BNode if it is a Blank Node otherwise a UriRef
         */
        public NonLiteral convertNonLiteral(Node node) {
+               return convertNonLiteral(node, false);
+       }
+
+       /**
+        * Converts a node to a BNode if it is a Blank Node otherwise to a 
UriRef.
+        * If covertBNode is true, then a new BNode is created for a blank node 
if
+        * no mapping already exists.
+        *
+        * @param node
+        * @return BNode if it is a Blank Node otherwise a UriRef
+        */
+       public NonLiteral convertNonLiteral(Node node, boolean createBNode) {
                if (node == null) {
-                       return null;
+                       throw new IllegalArgumentException("null argument not 
allowed");
                }
                if (node.isBlank()) {
-                       return convertJenaNode2TriaBlankNode(node);
+                       return convertJenaNode2TriaBlankNode(node, createBNode);
                }
                if (node.isURI()) {
                        return convertJenaUri2UriRef(node);
@@ -125,9 +150,16 @@ public class Jena2TriaUtil {
        }
 
        public Triple convertTriple(com.hp.hpl.jena.graph.Triple triple) {
-               NonLiteral subject = convertNonLiteral(triple.getSubject());
+               return convertTriple(triple, false);
+       }
+
+       public Triple convertTriple(com.hp.hpl.jena.graph.Triple triple, 
boolean createBnodes) {
+               NonLiteral subject = convertNonLiteral(triple.getSubject(), 
createBnodes);
                UriRef predicate = convertJenaUri2UriRef(triple.getPredicate());
-               Resource object = convertJenaNode2Resource(triple.getObject());
+               Resource object = convertJenaNode2Resource(triple.getObject(), 
createBnodes);
+               if (subject == null || object == null) {
+                       return null;
+               }
                return new TripleImpl(subject, predicate, object);
        }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Tria2JenaUtil.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Tria2JenaUtil.java?rev=1030067&r1=1030066&r2=1030067&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Tria2JenaUtil.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.commons/src/main/java/org/apache/clerezza/rdf/jena/commons/Tria2JenaUtil.java
 Tue Nov  2 14:42:00 2010
@@ -41,17 +41,17 @@ public class Tria2JenaUtil {
                this.tria2JenaBNodes = tria2JenaBNodes;
        }
 
-       public Node convert2JenaNode(NonLiteral nonLiteral) {
+       public Node convert2JenaNode(NonLiteral nonLiteral, boolean 
createBlankNode) {
                if (nonLiteral instanceof UriRef) {
                        return convert2JenaNode((UriRef)nonLiteral);
                } else {
-                       return convert2JenaNode((BNode)nonLiteral);
+                       return convert2JenaNode((BNode)nonLiteral, 
createBlankNode);
                }
        }
 
        public Node convert2JenaNode(Literal literal) {
                if (literal == null) {
-                       return null;
+                       throw new IllegalArgumentException("null argument not 
allowed");
                }
                if (literal instanceof PlainLiteral) {
                        return convert2JenaNode((PlainLiteral)literal);
@@ -72,26 +72,34 @@ public class Tria2JenaUtil {
        }
 
        public Node convert2JenaNode(Resource resource) {
+               return convert2JenaNode(resource, false);
+       }
+
+       public Node convert2JenaNode(Resource resource, boolean 
createBlankNode) {
                if (resource instanceof NonLiteral) {
-                       return convert2JenaNode((NonLiteral)resource);
+                       return convert2JenaNode((NonLiteral)resource, 
createBlankNode);
                }
                return convert2JenaNode((Literal)resource);
        }
 
        public Node convert2JenaNode(UriRef uriRef) {
                if (uriRef == null) {
-                       return null;
+                       throw new IllegalArgumentException("null argument not 
allowed");
                }
                return com.hp.hpl.jena.graph.Node.createURI(
                                                uriRef.getUnicodeString());
        }
 
        public Node convert2JenaNode(BNode bnode) {
+               return convert2JenaNode(bnode, false);
+       }
+       
+       public Node convert2JenaNode(BNode bnode, boolean createBlankNode) {
                if (bnode == null) {
-                       return null;
+                       throw new IllegalArgumentException("null argument not 
allowed");
                }
                Node result = tria2JenaBNodes.get(bnode);
-               if (result == null) {
+               if (result == null && createBlankNode) {
                        result = com.hp.hpl.jena.graph.Node.createAnon();
                        tria2JenaBNodes.put(bnode, result);
                }
@@ -99,9 +107,16 @@ public class Tria2JenaUtil {
        }
 
        public com.hp.hpl.jena.graph.Triple convertTriple(Triple triple) {
-               Node subject = convert2JenaNode(triple.getSubject());
+               return convertTriple(triple, false);
+       }
+
+       public com.hp.hpl.jena.graph.Triple convertTriple(Triple triple, 
boolean createBlankNodes) {
+               Node subject = convert2JenaNode(triple.getSubject(), 
createBlankNodes);
                Node predicate = convert2JenaNode(triple.getPredicate());
-               Node object = convert2JenaNode(triple.getObject());
+               Node object = convert2JenaNode(triple.getObject(), 
createBlankNodes);
+               if (subject == null || object == null) {
+                       return null;
+               }
                return new com.hp.hpl.jena.graph.Triple(subject, predicate, 
object);
        }
 }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.facade/src/main/java/org/apache/clerezza/rdf/jena/facade/JenaGraph.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.facade/src/main/java/org/apache/clerezza/rdf/jena/facade/JenaGraph.java?rev=1030067&r1=1030066&r2=1030067&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.facade/src/main/java/org/apache/clerezza/rdf/jena/facade/JenaGraph.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.facade/src/main/java/org/apache/clerezza/rdf/jena/facade/JenaGraph.java
 Tue Nov  2 14:42:00 2010
@@ -25,6 +25,7 @@ import com.hp.hpl.jena.graph.TripleMatch
 import com.hp.hpl.jena.graph.impl.GraphBase;
 import com.hp.hpl.jena.mem.TrackingTripleIterator;
 import com.hp.hpl.jena.util.iterator.ExtendedIterator;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 
@@ -72,12 +73,15 @@ public class JenaGraph extends GraphBase
 
        @Override
        public void performAdd(com.hp.hpl.jena.graph.Triple triple) {
-               graph.add(jena2TriaUtil.convertTriple(triple));
+               graph.add(jena2TriaUtil.convertTriple(triple, true));
        }
 
        @Override
        public void performDelete(com.hp.hpl.jena.graph.Triple triple) {
-               graph.remove(jena2TriaUtil.convertTriple(triple));
+               Triple clerezzaTriple = jena2TriaUtil.convertTriple(triple);
+               if (clerezzaTriple != null) {
+                       graph.remove(clerezzaTriple);
+               }
        }
 
        private Iterator<com.hp.hpl.jena.graph.Triple> convert(
@@ -95,7 +99,7 @@ public class JenaGraph extends GraphBase
                        public com.hp.hpl.jena.graph.Triple next() {
                                Triple baseNext = base.next();
                                lastReturned = baseNext;
-                               return (baseNext == null) ? null : 
tria2JenaUtil.convertTriple(baseNext);
+                               return (baseNext == null) ? null : 
tria2JenaUtil.convertTriple(baseNext, true);
                        }
 
                        @Override
@@ -112,9 +116,25 @@ public class JenaGraph extends GraphBase
         * @return TripleCollection
         */
        private Iterator<Triple> filter(TripleMatch m) {
-               NonLiteral subject = 
jena2TriaUtil.convertNonLiteral(m.getMatchSubject());
-               UriRef predicate = 
jena2TriaUtil.convertJenaUri2UriRef(m.getMatchPredicate());
-               Resource object = 
jena2TriaUtil.convertJenaNode2Resource(m.getMatchObject());
+               NonLiteral subject = null;
+               UriRef predicate = null;
+               Resource object = null;
+               if (m.getMatchSubject() != null) {
+                       subject = 
jena2TriaUtil.convertNonLiteral(m.getMatchSubject());
+                       if (subject == null) {
+                               return Collections.EMPTY_SET.iterator();
+                       }
+               }
+               if (m.getMatchObject() != null) {
+                       object = 
jena2TriaUtil.convertJenaNode2Resource(m.getMatchObject());
+                       if (object == null) {
+                               return Collections.EMPTY_SET.iterator();
+                       }
+               }               
+               if (m.getMatchPredicate() != null) {
+                       predicate = 
jena2TriaUtil.convertJenaUri2UriRef(m.getMatchPredicate());
+               }
+
                try {
                        return graph.filter(subject, predicate, object);
                } catch (IllegalArgumentException e) {

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java?rev=1030067&r1=1030066&r2=1030067&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java
 Tue Nov  2 14:42:00 2010
@@ -22,6 +22,7 @@ import com.hp.hpl.jena.graph.Graph;
 import com.hp.hpl.jena.graph.Node;
 import com.hp.hpl.jena.util.iterator.ExtendedIterator;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import org.apache.clerezza.rdf.core.BNode;
 import org.apache.clerezza.rdf.core.NonLiteral;
@@ -64,9 +65,27 @@ public class JenaGraphAdaptor extends Ab
 
        @Override
        public Iterator<Triple> performFilter(NonLiteral subject, UriRef 
predicate, Resource object) {
-               final ExtendedIterator jenaIter = 
jenaGraph.find(tria2JenaUtil.convert2JenaNode(subject),
-                               tria2JenaUtil.convert2JenaNode(predicate),
-                               tria2JenaUtil.convert2JenaNode(object));
+               Node jenaSubject = null;
+               Node jenaPredicate = null;
+               Node jenaObject = null;
+               if (subject != null) {
+                       jenaSubject = tria2JenaUtil.convert2JenaNode(subject);
+                       if (jenaSubject == null) {
+                               return Collections.EMPTY_SET.iterator();
+                       }
+               }
+               if (object != null) {
+                       jenaObject = tria2JenaUtil.convert2JenaNode(object);
+                       if (jenaObject == null) {
+                               return Collections.EMPTY_SET.iterator();
+                       }
+               }
+               if (predicate != null) {
+                       jenaPredicate = 
tria2JenaUtil.convert2JenaNode(predicate);
+               }
+               
+               final ExtendedIterator jenaIter = jenaGraph.find(jenaSubject, 
jenaPredicate,
+                               jenaObject);
                return new Iterator<Triple>() {
 
                        private Triple lastReturned = null;
@@ -87,7 +106,7 @@ public class JenaGraphAdaptor extends Ab
                                        lastReturned =  precached.next();
                                } else {
                                        lastReturned = 
jena2TriaUtil.convertTriple(
-                                                       
(com.hp.hpl.jena.graph.Triple)jenaIter.next());
+                                                       
(com.hp.hpl.jena.graph.Triple)jenaIter.next(), true);
                                }
                                return lastReturned;
                        }
@@ -115,7 +134,7 @@ public class JenaGraphAdaptor extends Ab
                if (contains(triple)) {
                        return false;
                }
-               jenaGraph.add(tria2JenaUtil.convertTriple(triple));
+               jenaGraph.add(tria2JenaUtil.convertTriple(triple, true));
                return true;
        }
 


Reply via email to