It looks like your graph is not in the WM, so you can just iterate the references. Here is an example of how to do this.
@Test public void testGraphIterationToFindLeafs() { String drl = "import " + Datum.class.getCanonicalName() + ";\n" + "import java.util.List;\n" + "query findLeafs(Datum datum, List results)\n" + " ( eval( datum.getChildren().size() == 0 ) and \n" + " eval( results.add ( datum ) ) )\n" + " or \n" + " ( eval( datum.getChildren().size() != 0 ) and \n" + " child : Datum( ) from datum.children and\n" + " findLeafs( child, results; ) ) \n" + "end\n"; System.out.println( drl ); KnowledgeBase knowledgeBase = loadKnowledgeBaseFromString( drl ); StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession(); List<Datum> list = new ArrayList<Datum>(); Datum d1 = new Datum("d1"); Datum d2 = new Datum("d2"); Datum d3 = new Datum("d3"); Datum d4 = new Datum("d4"); Datum d5 = new Datum("d5"); Datum d6 = new Datum("d6"); Datum d7 = new Datum("d7"); d1.getChildren().add( d2 ); d1.getChildren().add( d3 ); d3.getChildren().add( d4 ); d3.getChildren().add( d5 ) ; d5.getChildren().add( d6 ) ; d6.getChildren().add( d7 ) ; ksession.getQueryResults("findLeafs", d1, list); System.out.println( list ); } public static class Datum { private String description; private List<Datum> children; public Datum(String description) { this.description = description; children = new ArrayList<Datum>(); } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public List<Datum> getChildren() { return children; } @Override public String toString() { return "Datum{" + "description='" + description + '\'' + '}'; } } On 18 Jun 2014, at 18:44, Borris <bor...@chaos.org.uk> wrote: > Good question. I'm supporting a graph rather than a tree, so theoretically > there could be more than one node that has no parents. But in my particular > use case I am constraining the data so that there is never more than one > root node. > > So how to find the root node (singular) from an arbitrary node in the graph > is my goal. > > > > -- > View this message in context: > http://drools.46999.n3.nabble.com/Noob-question-graph-searching-query-root-node-for-a-given-node-tp4030091p4030096.html > Sent from the Drools: User forum mailing list archive at Nabble.com. > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users