Ejemplo n.º 1
0
  // Remove all triples associated with this magic property.
  // Make an instance record.
  private static PropertyFunctionInstance magicProperty(
      Context context, Triple pfTriple, BasicPattern triples) {
    List<Triple> listTriples = new ArrayList<>();

    GNode sGNode = new GNode(triples, pfTriple.getSubject());
    GNode oGNode = new GNode(triples, pfTriple.getObject());
    List<Node> sList = null;
    List<Node> oList = null;

    if (GraphList.isListNode(sGNode)) {
      sList = GraphList.members(sGNode);
      GraphList.allTriples(sGNode, listTriples);
    }
    if (GraphList.isListNode(oGNode)) {
      oList = GraphList.members(oGNode);
      GraphList.allTriples(oGNode, listTriples);
    }

    PropFuncArg subjArgs = new PropFuncArg(sList, pfTriple.getSubject());
    PropFuncArg objArgs = new PropFuncArg(oList, pfTriple.getObject());

    // Confuses single arg with a list of one.
    PropertyFunctionInstance pfi =
        new PropertyFunctionInstance(subjArgs, pfTriple.getPredicate(), objArgs);

    triples.getList().removeAll(listTriples);
    return pfi;
  }