org.aksw.jena_sparql_api.utils.QuadUtils.quadToArray()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(7.2k)|赞(0)|评价(0)|浏览(72)

本文整理了Java中org.aksw.jena_sparql_api.utils.QuadUtils.quadToArray方法的一些代码示例,展示了QuadUtils.quadToArray的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。QuadUtils.quadToArray方法的具体详情如下:
包路径:org.aksw.jena_sparql_api.utils.QuadUtils
类名称:QuadUtils
方法名:quadToArray

QuadUtils.quadToArray介绍

暂无

代码示例

代码示例来源:origin: SmartDataAnalytics/jena-sparql-api

public static boolean isPotentialMatchUnderMapping(Quad candQuad, Quad queryQuad, Map<Var, Var> partialSolution) {
  Node[] candNodes = QuadUtils.quadToArray(candQuad);
  Node[] queryNodes = QuadUtils.quadToArray(queryQuad);
  boolean result = true;
  for(int i = 0; i < 4 && result; ++i) {
    Node candNode = candNodes[i];
    Node queryNode = queryNodes[i];
    Node candMap = partialSolution.get(candNode);
    Node queryMap = partialSolution.get(queryNode);
    result =
        result && (
        candMap != null && queryMap != null && candMap.equals(queryMap) ||
        candMap == null && queryMap == null);
  }
  return result;
}

代码示例来源:origin: SmartDataAnalytics/jena-sparql-api

Multimap<Node, Quad> result = HashMultimap.create();
for(Quad quad : quads) {
  Node[] nodes = QuadUtils.quadToArray(quad);
  for(Node node : nodes) {
    result.put(node, quad);

代码示例来源:origin: org.aksw.jena-sparql-api/jena-sparql-api-algebra

public static QuadFilterPatternCanonical removeDefaultGraphFilter(QuadFilterPatternCanonical qfpc) {
  Set<Quad> quads = qfpc.getQuads();
  Set<Set<Expr>> cnf = qfpc.getFilterCnf();
  Map<Var, Node> varToNode = CnfUtils.getConstants(cnf);
  Map<Var, Node> candMap = varToNode.entrySet().stream().filter(
      e -> (Quad.defaultGraphIRI.equals(e.getValue())
        || Quad.defaultGraphNodeGenerated.equals(e.getValue())))
      .collect(Collectors.toMap(Entry::getKey, Entry::getValue));
  Set<Var> candVars = candMap.keySet();
  // Remove all vars that occurr in positions other than the graph
  for(Quad quad : quads) {
    Node[] nodes = QuadUtils.quadToArray(quad);
    for(int i = 1; i < 4; ++i) {
      Node node = nodes[i];
      candVars.remove(node);
    }
  }
  Set<Set<Expr>> newCnf = cnf.stream().filter(clause -> {
    Entry<Var, Node> e = CnfUtils.extractEquality(clause);
    boolean r = !candMap.entrySet().contains(e);
    return r;
  }).collect(Collectors.toSet());
  QuadFilterPatternCanonical result = new QuadFilterPatternCanonical(quads, ExprHolder.fromCnf(newCnf));
  return result;
}

代码示例来源:origin: org.aksw.jena-sparql-api/jena-sparql-api-algebra

public static QuadFilterPatternCanonical optimizeFilters(Collection<Quad> quads, Set<Set<Expr>> cnf, Set<Var> projection) {
  Map<Var, Node> varToNode = CnfUtils.getConstants(cnf);
  // A view on the set of variables subject the optimization
  Set<Var> optVars = varToNode.keySet();
  // Remove all equalities for projected variables
  optVars.remove(projection);
  Set<Quad> newQuads = new HashSet<Quad>();
  for(Quad quad : quads) {
    Node[] nodes = QuadUtils.quadToArray(quad);
    for(int i = 0; i < 4; ++i) {
      Node node = nodes[i];
      Node subst = varToNode.get(node);
      // Update in place, because the array is a copy anyway
      nodes[i] = subst == null ? node : subst;
    }
    Quad newQuad = QuadUtils.arrayToQuad(nodes);
    newQuads.add(newQuad);
  }
  // Remove the clauses from which the mapping was obtained
  Set<Set<Expr>> newCnf = new HashSet<>();
  for(Set<Expr> clause : cnf) {
    Entry<Var, Node> equality = CnfUtils.extractEquality(clause);
    boolean retainClause = equality == null || !optVars.contains(equality.getKey());
    if(retainClause) {
      newCnf.add(clause);
    }
  }
  QuadFilterPatternCanonical result = new QuadFilterPatternCanonical(newQuads, ExprHolder.fromCnf(newCnf));
  return result;
}

代码示例来源:origin: SmartDataAnalytics/jena-sparql-api

public static QuadFilterPatternCanonical removeDefaultGraphFilter(QuadFilterPatternCanonical qfpc) {
  Set<Quad> quads = qfpc.getQuads();
  Set<Set<Expr>> cnf = qfpc.getFilterCnf();
  Map<Var, Node> varToNode = CnfUtils.getConstants(cnf);
  Map<Var, Node> candMap = varToNode.entrySet().stream().filter(
      e -> (Quad.defaultGraphIRI.equals(e.getValue())
        || Quad.defaultGraphNodeGenerated.equals(e.getValue())))
      .collect(Collectors.toMap(Entry::getKey, Entry::getValue));
  Set<Var> candVars = candMap.keySet();
  // Remove all vars that occurr in positions other than the graph
  for(Quad quad : quads) {
    Node[] nodes = QuadUtils.quadToArray(quad);
    for(int i = 1; i < 4; ++i) {
      Node node = nodes[i];
      candVars.remove(node);
    }
  }
  Set<Set<Expr>> newCnf = cnf.stream().filter(clause -> {
    Entry<Var, Node> e = CnfUtils.extractEquality(clause);
    boolean r = !candMap.entrySet().contains(e);
    return r;
  }).collect(Collectors.toSet());
  QuadFilterPatternCanonical result = new QuadFilterPatternCanonical(quads, ExprHolder.fromCnf(newCnf));
  return result;
}

代码示例来源:origin: SmartDataAnalytics/jena-sparql-api

public static QuadFilterPatternCanonical optimizeFilters(Collection<Quad> quads, Set<Set<Expr>> cnf, Set<Var> projection) {
  Map<Var, Node> varToNode = CnfUtils.getConstants(cnf);
  // A view on the set of variables subject the optimization
  Set<Var> optVars = varToNode.keySet();
  // Remove all equalities for projected variables
  optVars.remove(projection);
  Set<Quad> newQuads = new HashSet<Quad>();
  for(Quad quad : quads) {
    Node[] nodes = QuadUtils.quadToArray(quad);
    for(int i = 0; i < 4; ++i) {
      Node node = nodes[i];
      Node subst = varToNode.get(node);
      // Update in place, because the array is a copy anyway
      nodes[i] = subst == null ? node : subst;
    }
    Quad newQuad = QuadUtils.arrayToQuad(nodes);
    newQuads.add(newQuad);
  }
  // Remove the clauses from which the mapping was obtained
  Set<Set<Expr>> newCnf = new HashSet<>();
  for(Set<Expr> clause : cnf) {
    Entry<Var, Node> equality = CnfUtils.extractEquality(clause);
    boolean retainClause = equality == null || !optVars.contains(equality.getKey());
    if(retainClause) {
      newCnf.add(clause);
    }
  }
  QuadFilterPatternCanonical result = new QuadFilterPatternCanonical(newQuads, ExprHolder.fromCnf(newCnf));
  return result;
}

代码示例来源:origin: SmartDataAnalytics/jena-sparql-api

public static QuadFilterPatternCanonical replaceConstants(Iterable<Quad> quads, Generator<Var> generator) {
  Set<Set<Expr>> cnf = new HashSet<>();
  Map<Node, Var> constantToVar = new HashMap<>();
  Set<Quad> newQuads = new LinkedHashSet<>();
  for(Quad quad : quads) {
    Node[] nodes = QuadUtils.quadToArray(quad);
    for(int i = 0; i < 4; ++i) {
      Node node = nodes[i];
      if(!node.isVariable()) {
        Var v = constantToVar.get(node);
        if(v == null) {
          v = generator.next();
          constantToVar.put(node, v);
          Expr expr = new E_Equals(new ExprVar(v), NodeValue.makeNode(node));
          cnf.add(Collections.singleton(expr));
        }
        nodes[i] = v;
      }
      // If it is a variable, just retain it
    }
    Quad newQuad = QuadUtils.arrayToQuad(nodes);
    newQuads.add(newQuad);
  }
  QuadFilterPatternCanonical result = new QuadFilterPatternCanonical(newQuads, ExprHolder.fromCnf(cnf));
  return result;
}

代码示例来源:origin: org.aksw.jena-sparql-api/jena-sparql-api-algebra

public static QuadFilterPatternCanonical replaceConstants(Iterable<Quad> quads, Generator<Var> generator) {
  Set<Set<Expr>> cnf = new HashSet<>();
  Map<Node, Var> constantToVar = new HashMap<>();
  Set<Quad> newQuads = new LinkedHashSet<>();
  for(Quad quad : quads) {
    Node[] nodes = QuadUtils.quadToArray(quad);
    for(int i = 0; i < 4; ++i) {
      Node node = nodes[i];
      if(!node.isVariable()) {
        Var v = constantToVar.get(node);
        if(v == null) {
          v = generator.next();
          constantToVar.put(node, v);
          Expr expr = new E_Equals(new ExprVar(v), NodeValue.makeNode(node));
          cnf.add(Collections.singleton(expr));
        }
        nodes[i] = v;
      }
      // If it is a variable, just retain it
    }
    Quad newQuad = QuadUtils.arrayToQuad(nodes);
    newQuads.add(newQuad);
  }
  QuadFilterPatternCanonical result = new QuadFilterPatternCanonical(newQuads, ExprHolder.fromCnf(cnf));
  return result;
}

相关文章