@Override public boolean isEmpty() { return this.getRootContextNode(false).isEmpty(); }
private static void deleteWhileEmptyAndNoIncomingRelations(ContextNode contextNode) { ContextNode currentContextNode = contextNode; ContextNode parentContextNode; while (currentContextNode.isEmpty() && (! currentContextNode.containsIncomingRelations()) && (! currentContextNode.isRootContextNode())) { parentContextNode = currentContextNode.getContextNode(); currentContextNode.delete(); currentContextNode = parentContextNode; } }
@Override public boolean isImplied() { if (this instanceof ContextNodeStatement) { ContextNode contextNode = ((ContextNodeStatement) this).getContextNode(); if (contextNode == null) return false; if (! contextNode.isEmpty()) return true; if (contextNode.containsIncomingRelations()) return true; } if (this instanceof RelationStatement) { Relation relation = ((RelationStatement) this).getRelation(); if (relation == null) return false; ContextNode targetContextNode = relation.followContextNode(); if (targetContextNode == null) return false; XdiInnerRoot innerRoot = XdiInnerRoot.fromContextNode(targetContextNode); if (innerRoot != null && relation.equals(innerRoot.getPredicateRelation()) && ! innerRoot.getContextNode().isEmpty()) return true; } return false; }
if (! writeImplied && innerContextNode.getStatement().isImplied() && innerContextNode.isEmpty()) continue;
private void putAttributeIntoEntityJsonObject(ContextNode attributeContextNode, JsonObject entityJsonObject, XDIAddress parentXDIAddress) throws IOException { XDIAddress XDIaddress = attributeContextNode.getXDIAddress(); XDIAddress localXDIAddress = XDIAddressUtil.localXDIAddress(XDIaddress, - parentXDIAddress.getNumXDIArcs()); // set up attribute JsonObject attributeJsonObject = new JsonObject(); entityJsonObject.add(localXDIAddress.toString(), attributeJsonObject); // context nodes for (ContextNode contextNode : attributeContextNode.getContextNodes()) { if (XdiAbstractAttribute.isValid(contextNode) || XdiAttributeCollection.isValid(contextNode)) { this.putAttributeIntoEntityJsonObject(contextNode, entityJsonObject, parentXDIAddress); continue; } throw new Xdi2RuntimeException("Unexpected context node: " + contextNode + " on attribute context node: " + attributeContextNode); } // relations for (Relation relation : attributeContextNode.getRelations()) { this.putRelationIntoJsonObject(relation, attributeJsonObject); } // literal node if (attributeContextNode.containsLiteralNode()) { LiteralNode literalNode = attributeContextNode.getLiteralNode(); this.putLiteralNodeIntoAttributeJsonObject(literalNode, attributeJsonObject, XDIaddress); } // finish attribute if (attributeJsonObject.entrySet().isEmpty() && ! attributeContextNode.isEmpty()) { if (! this.isWriteImplied()) entityJsonObject.remove(localXDIAddress.toString()); } }
if (entityJsonObject.entrySet().isEmpty() && ! entityContextNode.isEmpty()) {
if (rootJsonObject.entrySet().isEmpty() && ! rootContextNode.isEmpty()) {
public void testIdentity() throws Exception { Graph graph = MemoryGraphFactory.getInstance().openGraph(); ContextNode contextNode = graph.getRootContextNode().setContextNode(XDIArc.create("=markus")); ContextNode identityContextNode = graph.getRootContextNode().setDeepContextNode(XDIAddress.create("=pseudo")); // test $is Equivalence.setIdentityContextNode(contextNode, identityContextNode); assertEquals(Equivalence.getIdentityContextNodes(contextNode).next(), identityContextNode); assertEquals(Equivalence.getIncomingIdentityContextNodes(identityContextNode).next(), contextNode); assertEquals(Equivalence.getIdentityRelations(contextNode).next(), contextNode.getRelation(XDIDictionaryConstants.XDI_ADD_IS)); assertEquals(Equivalence.getIncomingIdentityRelations(identityContextNode).next(), contextNode.getRelation(XDIDictionaryConstants.XDI_ADD_IS)); Equivalence.getIdentityContextNodes(contextNode).next().delete(); // done assertTrue(contextNode.isEmpty()); assertTrue(identityContextNode.isEmpty()); contextNode.delete(); assertTrue(graph.isEmpty()); graph.close(); }
public void testSimple() throws Exception { Graph graph0 = this.getGraphFactory().openGraph(this.getClass().getName() + "-graph-0"); ContextNode markus = graph0.getRootContextNode().setContextNode(XDIArc.create("=markus")); ContextNode email = markus.setContextNode(XDIArc.create("<#email>")); email.setLiteralNode("abc@gmail.com"); markus.setRelation(XDIAddress.create("#friend"), XDIAddress.create("=drummond")); markus = graph0.getRootContextNode().getContextNode(XDIArc.create("=markus")); assertNotNull(markus); assertFalse(markus.isRootContextNode()); assertFalse(markus.isEmpty()); assertFalse(markus.isLeafContextNode()); assertTrue(markus.containsRelations()); assertFalse(markus.containsLiteralNode()); assertTrue(email.isLeafContextNode()); assertTrue(email.containsLiteralNode()); ContextNode drummond = graph0.getRootContextNode().getContextNode(XDIArc.create("=drummond")); assertNotNull(drummond); assertTrue(drummond.isEmpty()); assertTrue(drummond.isLeafContextNode()); email.setLiteralNode("xyz@gmail.com"); assertEquals(graph0.getDeepLiteralNode(XDIAddress.create("=markus<#email>&")).getLiteralData(), "xyz@gmail.com"); assertEquals(graph0.getDeepContextNode(XDIAddress.create("=markus<#email>")).getLiteralNode().getLiteralData(), "xyz@gmail.com"); graph0.close(); }
assertTrue(root.isEmpty()); assertFalse(root.containsContextNodes()); assertFalse(root.containsRelations()); root.setContextNode(XDIArc.create("<#test>")).setLiteralNode("test"); assertFalse(root.isEmpty()); assertTrue(root.containsContextNodes()); assertTrue(root.containsRelations()); root.setContextNode(XDIArc.create("#email")); assertFalse(root.isEmpty()); assertTrue(root.containsContextNodes()); assertTrue(root.containsRelations()); root.getContextNodes().next().delete(); assertTrue(root.isEmpty()); assertFalse(root.containsContextNodes()); assertFalse(root.containsRelations());
public void testDelete() throws Exception { Graph graph26 = this.getGraphFactory().openGraph(this.getClass().getName() + "-graph-26"); ContextNode root = graph26.getRootContextNode(); root.setContextNode(XDIArc.create("+a")); assertTrue(root.containsContextNode(XDIArc.create("+a"))); assertNotNull(root.getContextNode(XDIArc.create("+a"))); root.delContextNode(XDIArc.create("+a")); assertFalse(graph26.getRootContextNode().containsContextNode(XDIArc.create("+a"))); assertFalse(root.containsContextNode(XDIArc.create("+a"))); assertNull(graph26.getRootContextNode().getContextNode(XDIArc.create("+a"))); assertNull(root.getContextNode(XDIArc.create("+a"))); root.setRelation(XDIAddress.create("+a"), XDIAddress.create("#b")); assertTrue(root.containsRelation(XDIAddress.create("+a"), XDIAddress.create("#b"))); assertNotNull(root.getRelation(XDIAddress.create("+a"), XDIAddress.create("#b"))); root.delRelation(XDIAddress.create("+a"), XDIAddress.create("#b")); assertFalse(root.containsRelation(XDIAddress.create("+a"), XDIAddress.create("#b"))); assertNull(root.getRelation(XDIAddress.create("+a"), XDIAddress.create("#b"))); root.setDeepContextNode(XDIAddress.create("<#a>")).setLiteralNode("a"); assertTrue(root.getDeepContextNode(XDIAddress.create("<#a>")).containsLiteralNode("a")); assertNotNull(root.getDeepContextNode(XDIAddress.create("<#a>")).getLiteralNode("a")); assertNotNull(root.getDeepLiteralNode(XDIAddress.create("<#a>&"))); root.getDeepContextNode(XDIAddress.create("<#a>")).delLiteralNode(); assertFalse(root.getDeepContextNode(XDIAddress.create("<#a>")).containsLiteralNode("a")); assertNull(root.getDeepContextNode(XDIAddress.create("<#a>")).getLiteralNode("a")); assertNull(root.getDeepLiteralNode(XDIAddress.create("<#a>&"))); root.getContextNode(XDIArc.create("#b")).delete(); root.getDeepContextNode(XDIAddress.create("<#a>")).delete(); assertTrue(root.isEmpty()); graph26.close(); }