@Override public RelationStatement map(Relation relation) { return relation.getStatement(); } }
@Override public Statement map(Relation relation) { return relation.getStatement(); } };
private void putRelationIntoJsonObject(Relation relation, JsonObject jsonObject) { if (! this.isWriteImplied() && relation.getStatement().isImplied()) return; JsonArray relationJsonArray = jsonObject.getAsJsonArray("/" + relation.getXDIAddress().toString()); if (relationJsonArray == null) { relationJsonArray = new JsonArray(); jsonObject.add("/" + relation.getXDIAddress().toString(), relationJsonArray); } relationJsonArray.add(new JsonPrimitive(relation.getTargetXDIAddress().toString())); } }
@Override public void executeGetOnRelationStatement(XDIStatement relationStatement, GetOperation operation, Graph operationResultGraph, ExecutionContext executionContext) throws Xdi2MessagingException { XDIAddress contextNodeXDIAddress = relationStatement.getContextNodeXDIAddress(); XDIAddress relationXDIaddress = relationStatement.getRelationXDIAddress(); XDIAddress targetXDIAddress = relationStatement.getTargetXDIAddress(); ContextNode contextNode = this.getGraph().getDeepContextNode(contextNodeXDIAddress); if (contextNode == null) return; if (XDIConstants.XDI_ADD_COMMON_VARIABLE.equals(targetXDIAddress)) { Iterator<Relation> relations; if (XDIConstants.XDI_ADD_COMMON_VARIABLE.equals(relationXDIaddress)) { relations = contextNode.getRelations(); } else { relations = contextNode.getRelations(relationXDIaddress); } while (relations.hasNext()) CopyUtil.copyStatement(relations.next().getStatement(), operationResultGraph, null); } else { Relation relation = contextNode.getRelation(relationXDIaddress, targetXDIAddress); if (relation == null) return; CopyUtil.copyStatement(relation.getStatement(), operationResultGraph, null); } }
if (! writeImplied && relation.getStatement().isImplied()) continue;
if (operationResultGraph.containsStatement(refRepRelation.getStatement().getXDIStatement())) { CopyUtil.copyStatement(refRepRelation.getStatement(), operationResultGraph, null);
@Override public Statement getStatement(XDIStatement statement) { ContextNode baseContextNode = this.getDeepContextNode(statement.getSubject(), false); if (baseContextNode == null) return null; if (statement.isContextNodeStatement()) { ContextNode contextNode = baseContextNode.getContextNode(statement.getContextNodeXDIArc(), false); return contextNode == null ? null : contextNode.getStatement(); } else if (statement.isRelationStatement()) { Relation relation = baseContextNode.getRelation(statement.getRelationXDIAddress(), statement.getTargetXDIAddress()); return relation == null ? null : relation.getStatement(); } else if (statement.isLiteralStatement()) { LiteralNode literalNode = baseContextNode.getLiteralNode(statement.getLiteralData()); return literalNode == null ? null : literalNode.getStatement(); } return null; }
@Override public Statement setStatement(XDIStatement statement) { // set the statement if (statement.isContextNodeStatement()) { ContextNode contextNode = (ContextNode) this.setDeepNode(statement.getTargetXDIAddress()); return contextNode.getStatement(); } else if (statement.isRelationStatement()) { ContextNode contextNode = (ContextNode) this.setDeepNode(statement.getContextNodeXDIAddress()); Relation relation = contextNode.setRelation(statement.getRelationXDIAddress(), statement.getTargetXDIAddress()); return relation.getStatement(); } else if (statement.isLiteralStatement()) { ContextNode contextNode = (ContextNode) this.setDeepNode(statement.getContextNodeXDIAddress()); LiteralNode literalNode = contextNode.setLiteralNode(statement.getLiteralData()); return literalNode.getStatement(); } else { throw new Xdi2GraphException("Invalid statement: " + statement); } }
public void testImplied() throws Exception { Graph graph21 = this.getGraphFactory().openGraph(this.getClass().getName() + "-graph-21"); ContextNode webmarkus = graph21.setDeepContextNode(XDIAddress.create("=web=markus")); ContextNode animesh = graph21.setDeepContextNode(XDIAddress.create("=animesh")); Relation friend = webmarkus.setRelation(XDIAddress.create("#friend"), animesh); ContextNode value = webmarkus.setContextNode(XDIArc.create("<#name>")); LiteralNode name = value.setLiteralNode("Markus Sabadello"); ContextNode web = webmarkus.getContextNode(); assertTrue(webmarkus.getStatement().isImplied()); assertTrue(animesh.getStatement().isImplied()); assertFalse(friend.getStatement().isImplied()); assertTrue(value.getStatement().isImplied()); assertFalse(name.getStatement().isImplied()); assertTrue(web.getStatement().isImplied()); graph21.close(); }