All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bigdata.rdf.sparql.ast.IGroupNode Maven / Gradle / Ivy

package com.bigdata.rdf.sparql.ast;

/**
 * A type of query node that groups a set of query nodes together. This is the
 * interface used by the {@link UnionNode} and {@link JoinGroupNode} query
 * nodes.
 */
public interface IGroupNode extends
        IGroupMemberNode, Iterable {

    /**
     * Add a child to this group. Child can be a statement pattern, a filter, or
     * another group.
     * 
     * @return this
     */
    IGroupNode addChild(final E child);

    /**
     * Remove a child from this group.
     * 
     * @return this
     */
    IGroupNode removeChild(final E child);

    /**
     * Return true iff the group is empty.
     */
    boolean isEmpty();
    
    /**
     * Return the #of children which are direct members of the group.
     */
    int size();

//    /**
//     * Return whether or not this is an optional group. Optional groups may or
//     * may not produce variable bindings, but will not prune incoming solutions
//     * based on whether or not they bind. Optional groups might be composed of a
//     * single statement pattern, a single statement pattern with filters, or a
//     * more complex join that could include subgroups.
//     */
//    boolean isOptional();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy