private int numberOfSpVars(StatementPattern sp) { List<Var> varList = sp.getVarList(); int varCount = 0; for(int i = 0; i < 3; i++) { if(!varList.get(i).isConstant()) { varCount++; } } return varCount; }
private static List<String> getVariablePos(StatementPattern sp) { List<String> posList = new ArrayList<String>(); List<Var> varList = sp.getVarList(); for (int i = 0; i < 3; i++) { if (!varList.get(i).isConstant()) { posList.add(intToTriplePlace(i)); } } return posList; }
private static List<String> getConstantPos(StatementPattern sp) { List<String> posList = new ArrayList<String>(); List<Var> varList = sp.getVarList(); for (int i = 0; i < 3; i++) { if (varList.get(i).isConstant()) { posList.add(intToTriplePlace(i)); } } return posList; }
public Set<String> getBindingNames() { //resource and match variable for search are already included as standard result-bindings Set<String> bindings = Sets.newHashSet(); for(Var v: spConstraint.getVarList()) { if(!v.isConstant()) { bindings.add(v.getName()); } } return bindings; }
private Set<String> getVariableNames() { Set<String> vars = new HashSet<>(); for (StatementPattern pattern : patterns) { for (Var var : pattern.getVarList()) { if (var.getValue() == null) { vars.add(var.getName()); } } } return vars; }
private static boolean genConstantCompare(StatementPattern queryNode, StatementPattern indexNode) { ArrayList<Var> vars1 = (ArrayList<Var>) queryNode.getVarList(); ArrayList<Var> vars2 = (ArrayList<Var>) indexNode.getVarList(); for (int i = 0; i < vars1.size(); i++) { if (vars1.get(i).isConstant() && vars2.get(i).isConstant()) { if (!vars1.get(i).equals(vars2.get(i))) { return false; } } else if(!vars1.get(i).isConstant() && vars2.get(i).isConstant() ) { return false; } } return true; }
private static List<String> getJoinType(StatementPattern sp1, StatementPattern sp2) { List<String> joinList = new ArrayList<String>(); List<Var> spList1 = sp1.getVarList(); List<Var> spList2 = sp2.getVarList(); List<String> pos1 = CardinalityCalcUtil.getVariablePos(sp1); List<String> pos2 = CardinalityCalcUtil.getVariablePos(sp2); int i, j; for (String s : pos1) { for (String t : pos2) { i = CardinalityCalcUtil.triplePlaceToInt(s); j = CardinalityCalcUtil.triplePlaceToInt(t); if (spList1.get(i).getName().equals(spList2.get(j).getName())) { joinList.add(s); joinList.add(t); } } } if (joinList.size() == 4) { return orderJoinType(joinList); } return joinList; }
public static String getRow(StatementPattern sp, boolean joinTable) { String row = ""; String values = ""; List<Var> varList = sp.getVarList(); List<String> constList = CardinalityCalcUtil.getConstantPos(sp); int i; for (String s : constList) { i = CardinalityCalcUtil.triplePlaceToInt(s); if (row.equals("subject") && s.equals("object") && joinTable) { row = s + row; if (values.length() == 0) { values = values + removeQuotes(varList.get(i).getValue().toString()); } else { values = removeQuotes(varList.get(i).getValue().toString()) + DELIM + values; } } else { row = row + s; if (values.length() == 0) { values = values + removeQuotes(varList.get(i).getValue().toString()); } else { values = values + DELIM + removeQuotes(varList.get(i).getValue().toString()); } } } return (row + DELIM + values); }
if (genConstantCompare((StatementPattern) node1, (StatementPattern) node2)) { List<Var> variables1 = ((StatementPattern)node1).getVarList(); List<Var> variables2 = ((StatementPattern)node2).getVarList();