@Override public Optional<State> applyTo(SemanticGraph tree, State source, SemanticGraphEdge outgoingEdge, SemanticGraphEdge subjectOrNull, SemanticGraphEdge objectOrNull) { if (subjectOrNull != null && !outgoingEdge.equals(subjectOrNull)) { return Optional.of(new State( outgoingEdge, subjectOrNull, 0, objectOrNull == null ? source.objectOrNull : objectOrNull, source.thunk.andThen(toModify -> { assert Util.isTree(toModify); simpleClause(toModify, outgoingEdge); addSubtree(toModify, outgoingEdge.getDependent(), "nsubj", tree, subjectOrNull.getDependent(), Collections.singleton(outgoingEdge)); assert Util.isTree(toModify); stripAuxMark(toModify); assert Util.isTree(toModify); }), false )); } else { return Optional.empty(); } } });
@Override public Optional<State> applyTo(SemanticGraph tree, State source, SemanticGraphEdge outgoingEdge, SemanticGraphEdge subjectOrNull, SemanticGraphEdge objectOrNull) { if (objectOrNull != null && !outgoingEdge.equals(objectOrNull)) { return Optional.of(new State( outgoingEdge, subjectOrNull == null ? source.subjectOrNull : subjectOrNull, subjectOrNull == null ? (source.distanceFromSubj + 1) : 0, objectOrNull, source.thunk.andThen(toModify -> { assert Util.isTree(toModify); // Split the clause simpleClause(toModify, outgoingEdge); // Attach the new subject addSubtree(toModify, outgoingEdge.getDependent(), "nsubj", tree, objectOrNull.getDependent(), Collections.singleton(outgoingEdge)); // Strip bits we don't want assert Util.isTree(toModify); stripAuxMark(toModify); assert Util.isTree(toModify); }), false )); } else { return Optional.empty(); } } });
@Override public Optional<State> applyTo(SemanticGraph tree, State source, SemanticGraphEdge outgoingEdge, SemanticGraphEdge subjectOrNull, SemanticGraphEdge objectOrNull) { if (objectOrNull != null && !outgoingEdge.equals(objectOrNull)) { return Optional.of(new State( outgoingEdge, subjectOrNull == null ? source.subjectOrNull : subjectOrNull, subjectOrNull == null ? (source.distanceFromSubj + 1) : 0, objectOrNull, source.thunk.andThen(toModify -> { assert Util.isTree(toModify); // Split the clause simpleClause(toModify, outgoingEdge); // Attach the new subject addSubtree(toModify, outgoingEdge.getDependent(), "nsubj", tree, objectOrNull.getDependent(), Collections.singleton(outgoingEdge)); // Strip bits we don't want assert Util.isTree(toModify); stripAuxMark(toModify); assert Util.isTree(toModify); }), false )); } else { return Optional.empty(); } } });
@Override public Optional<State> applyTo(SemanticGraph tree, State source, SemanticGraphEdge outgoingEdge, SemanticGraphEdge subjectOrNull, SemanticGraphEdge objectOrNull) { if (subjectOrNull != null && !outgoingEdge.equals(subjectOrNull)) { return Optional.of(new State( outgoingEdge, subjectOrNull, 0, objectOrNull == null ? source.objectOrNull : objectOrNull, source.thunk.andThen(toModify -> { assert Util.isTree(toModify); simpleClause(toModify, outgoingEdge); addSubtree(toModify, outgoingEdge.getDependent(), "nsubj", tree, subjectOrNull.getDependent(), Collections.singleton(outgoingEdge)); assert Util.isTree(toModify); stripAuxMark(toModify); assert Util.isTree(toModify); }), false )); } else { return Optional.empty(); } } });