public Node getPredicateNode() { Node var = getEdgeVariable(); return (var == null) ? getEdgeNode() : var; }
@Override public Iterable<DatatypeValue> getLoop() { ArrayList<DatatypeValue> list = new ArrayList(); for (int i = 0; i <= nodes.size(); i++) { list.add(getValue(null, i)); } return list; }
public static EdgeImpl create(Node prop, Node sub, Node obj) { String name = TOP; if (prop.isConstant()) { name = prop.getLabel(); } EdgeImpl edge = new EdgeImpl(name); edge.add(sub); edge.add(obj); if (prop.isVariable()) { //edge.setEdgeNode(prop); edge.setEdgeVariable(prop); } else { edge.setEdgeNode(prop); } return edge; }
Triple triple() { Atom subject = ((NodeImpl) nodes.get(0)).getAtom(); Atom object = ((NodeImpl) nodes.get(1)).getAtom(); Constant property = getName(); Variable variable = getVariable(); Triple triple = Triple.create(subject, property, variable, object); return triple; }
@Override public DatatypeValue getValue(String var, int n) { switch (n) { case 0: return getNode(0).getDatatypeValue(); case 1: return getPredicate().getDatatypeValue(); default: if (n <= nodes.size()) { return getNode(n - 1).getDatatypeValue(); } } return null; }
@Override public String toString() { String str = ""; String name = label; if (getEdgeVariable() != null) { name = getEdgeVariable().toString(); } else if (triple != null) { name = triple.getProperty().getName(); } str += getNode(0) + " " + name; for (int i = 1; i < nodes.size(); i++) { str += " " + getNode(i); } return str; }
/** * node: start blank node of a list * elem: element of the list * create a path edge: ?node rdf:rest* / rdf:first ?elem * add path edge in query */ private Exp create(Node node, Node elem) { Node var = NodeImpl.createVariable(variable()); fr.inria.corese.compiler.parser.EdgeImpl edge = fr.inria.corese.compiler.parser.EdgeImpl.create(var, node, elem); Term re = list(); re.compile(ast); Exp exp = Exp.create(Exp.PATH, edge); exp.setRegex(re); if (isDebug()){ System.out.println("QV: " + exp); } query.getBody().add(exp); return exp; }
public static EdgeImpl create(Node prop, Node sub, Node obj) { String name = TOP; if (prop.isConstant()) { name = prop.getLabel(); } EdgeImpl edge = new EdgeImpl(name); edge.add(sub); edge.add(obj); if (prop.isVariable()) { //edge.setEdgeNode(prop); edge.setEdgeVariable(prop); } else { edge.setEdgeNode(prop); } return edge; }
Triple triple() { Atom subject = ((NodeImpl) nodes.get(0)).getAtom(); Atom object = ((NodeImpl) nodes.get(1)).getAtom(); Constant property = getName(); Variable variable = getVariable(); Triple triple = Triple.create(subject, property, variable, object); return triple; }
@Override public DatatypeValue getValue(String var, int n) { switch (n) { case 0: return getNode(0).getDatatypeValue(); case 1: return getPredicate().getDatatypeValue(); default: if (n <= nodes.size()) { return getNode(n - 1).getDatatypeValue(); } } return null; }
@Override public String toString() { String str = ""; String name = label; if (getEdgeVariable() != null) { name = getEdgeVariable().toString(); } else if (triple != null) { name = triple.getProperty().getName(); } str += getNode(0) + " " + name; for (int i = 1; i < nodes.size(); i++) { str += " " + getNode(i); } return str; }
@Override public Edge compile(Triple tt, boolean reuse) { EdgeImpl edge = new EdgeImpl(tt); Node subject = getNode(tt.getSubject(), reuse); if (tt.getVariable() != null) { Node variable = getNode(tt.getVariable()); edge.setEdgeVariable(variable); } Node predicate = getNode(tt.getProperty(), reuse); // PRAGMA: // ?x rdf:type c:Image // in this case we want each triple rdf:type c:Image to have its own c:Image Node // to accept type subsumption // if it would be same Node, it would need to be bound to same value // cf Neurolog pb // TODO: fix it for relax Node object = getNode(tt.getObject(), reuse); edge.add(subject); edge.add(object); edge.setEdgeNode(predicate); if (tt.getArgs() != null) { for (Atom arg : tt.getArgs()) { Node sup = getNode(arg); edge.add(sup); } } return edge; }
public Node getPredicateNode() { Node var = getEdgeVariable(); return (var == null) ? getEdgeNode() : var; }
@Override public Iterable<DatatypeValue> getLoop() { ArrayList<DatatypeValue> list = new ArrayList(); for (int i = 0; i <= nodes.size(); i++) { list.add(getValue(null, i)); } return list; }
@Override public Edge compile(Triple tt, boolean reuse) { EdgeImpl edge = new EdgeImpl(tt); Node subject = getNode(tt.getSubject(), reuse); if (tt.getVariable() != null) { Node variable = getNode(tt.getVariable()); edge.setEdgeVariable(variable); } Node predicate = getNode(tt.getProperty(), reuse); // PRAGMA: // ?x rdf:type c:Image // in this case we want each triple rdf:type c:Image to have its own c:Image Node // to accept type subsumption // if it would be same Node, it would need to be bound to same value // cf Neurolog pb // TODO: fix it for relax Node object = getNode(tt.getObject(), reuse); edge.add(subject); edge.add(object); edge.setEdgeNode(predicate); if (tt.getArgs() != null) { for (Atom arg : tt.getArgs()) { Node sup = getNode(arg); edge.add(sup); } } return edge; }