<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">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.&nbsp;<div><br><div><div style="border:1px inset;padding:2%;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 6px; background-color: rgb(255, 255, 255); font-family: Menlo;" bgcolor="#ffffff"><font color="#808000">@Test
</font><font color="#000080"><b>public void </b></font><font color="#000000">testGraphIterationToFindLeafs() {
</font><font color="#000000">    String drl = </font><font color="#008000"><b>"import " </b></font><font color="#000000">+ Datum.</font><font color="#000080"><b>class</b></font><font color="#000000">.getCanonicalName() + </font><font color="#008000"><b>";</b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">                 </font><font color="#008000"><b>"import java.util.List;</b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">
</font><font color="#000000">                 </font><font color="#008000"><b>"query findLeafs(Datum datum, List results)</b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">                 </font><font color="#008000"><b>"    ( eval( datum.getChildren().size() == 0 ) and </b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">                 </font><font color="#008000"><b>"      eval( results.add ( datum ) ) )</b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">                 </font><font color="#008000"><b>"    or </b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">                 </font><font color="#008000"><b>"    ( eval( datum.getChildren().size() != 0 ) and </b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">                 </font><font color="#008000"><b>"      child : Datum( ) from datum.children and</b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">                 </font><font color="#008000"><b>"      findLeafs( child, results; ) ) </b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>" </b></font><font color="#000000">+
</font><font color="#000000">                 </font><font color="#008000"><b>"end</b></font><font color="#000080"><b>\n</b></font><font color="#008000"><b>"</b></font><font color="#000000">;
</font><font color="#000000">
</font><font color="#000000">    System.</font><font color="#660e7a"><b><i>out</i></b></font><font color="#000000">.println( drl );
</font><font color="#000000">
</font><font color="#000000">    KnowledgeBase knowledgeBase = loadKnowledgeBaseFromString( drl );
</font><font color="#000000">    StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
</font><font color="#000000">    List&lt;Datum&gt; list = </font><font color="#000080"><b>new </b></font><font color="#000000">ArrayList&lt;Datum&gt;();
</font><font color="#000000">
</font><font color="#000000">    Datum d1 = </font><font color="#000080"><b>new </b></font><font color="#000000">Datum(</font><font color="#008000"><b>"d1"</b></font><font color="#000000">);
</font><font color="#000000">    Datum d2 = </font><font color="#000080"><b>new </b></font><font color="#000000">Datum(</font><font color="#008000"><b>"d2"</b></font><font color="#000000">);
</font><font color="#000000">    Datum d3 = </font><font color="#000080"><b>new </b></font><font color="#000000">Datum(</font><font color="#008000"><b>"d3"</b></font><font color="#000000">);
</font><font color="#000000">    Datum d4 = </font><font color="#000080"><b>new </b></font><font color="#000000">Datum(</font><font color="#008000"><b>"d4"</b></font><font color="#000000">);
</font><font color="#000000">    Datum d5 = </font><font color="#000080"><b>new </b></font><font color="#000000">Datum(</font><font color="#008000"><b>"d5"</b></font><font color="#000000">);
</font><font color="#000000">    Datum d6 = </font><font color="#000080"><b>new </b></font><font color="#000000">Datum(</font><font color="#008000"><b>"d6"</b></font><font color="#000000">);
</font><font color="#000000">    Datum d7 = </font><font color="#000080"><b>new </b></font><font color="#000000">Datum(</font><font color="#008000"><b>"d7"</b></font><font color="#000000">);
</font><font color="#000000">
</font><font color="#000000">    d1.getChildren().add( d2 );
</font><font color="#000000">    d1.getChildren().add( d3 );
</font><font color="#000000">
</font><font color="#000000">    d3.getChildren().add( d4 );
</font><font color="#000000">    d3.getChildren().add( d5 ) ;
</font><font color="#000000">    d5.getChildren().add( d6 ) ;
</font><font color="#000000">    d6.getChildren().add( d7 ) ;
</font><font color="#000000">
</font><font color="#000000">    ksession.getQueryResults(</font><font color="#008000"><b>"findLeafs"</b></font><font color="#000000">, d1, list);
</font><font color="#000000">
</font><font color="#000000">    System.</font><font color="#660e7a"><b><i>out</i></b></font><font color="#000000">.println( list );
</font><font color="#000000">
</font><font color="#000000">}
</font><font color="#000000">
</font><font color="#000080"><b>public static class </b></font><font color="#000000">Datum {
</font><font color="#000000">    </font><font color="#000080"><b>private </b></font><font color="#000000">String </font><font color="#660e7a"><b>description</b></font><font color="#000000">;
</font><font color="#000000">    </font><font color="#000080"><b>private </b></font><font color="#000000">List&lt;Datum&gt; </font><font color="#660e7a"><b>children</b></font><font color="#000000">;
</font><font color="#000000">
</font><font color="#000000">    </font><font color="#000080"><b>public </b></font><font color="#000000">Datum(String description) {
</font><font color="#000000">        </font><font color="#000080"><b>this</b></font><font color="#000000">.</font><font color="#660e7a"><b>description </b></font><font color="#000000">= description;
</font><font color="#000000">        </font><font color="#660e7a"><b>children </b></font><font color="#000000">= </font><font color="#000080"><b>new </b></font><font color="#000000">ArrayList&lt;Datum&gt;();
</font><font color="#000000">    }
</font><font color="#000000">
</font><font color="#000000">    </font><font color="#000080"><b>public </b></font><font color="#000000">String getDescription() {
</font><font color="#000000">        </font><font color="#000080"><b>return </b></font><font color="#660e7a"><b>description</b></font><font color="#000000">;
</font><font color="#000000">    }
</font><font color="#000000">
</font><font color="#000000">    </font><font color="#000080"><b>public void </b></font><font color="#000000">setDescription(String description) {
</font><font color="#000000">        </font><font color="#000080"><b>this</b></font><font color="#000000">.</font><font color="#660e7a"><b>description </b></font><font color="#000000">= description;
</font><font color="#000000">    }
</font><font color="#000000">
</font><font color="#000000">    </font><font color="#000080"><b>public </b></font><font color="#000000">List&lt;Datum&gt; getChildren() {
</font><font color="#000000">        </font><font color="#000080"><b>return </b></font><font color="#660e7a"><b>children</b></font><font color="#000000">;
</font><font color="#000000">    }
</font><font color="#000000">
</font><font color="#000000">    </font><font color="#808000">@Override
</font><font color="#808000">    </font><font color="#000080"><b>public </b></font><font color="#000000">String toString() {
</font><font color="#000000">        </font><font color="#000080"><b>return </b></font><font color="#008000"><b>"Datum{" </b></font><font color="#000000">+
</font><font color="#000000">               </font><font color="#008000"><b>"description='" </b></font><font color="#000000">+ </font><font color="#660e7a"><b>description </b></font><font color="#000000">+ </font><font color="#008000"><b>'</b></font><font color="#000080"><b>\'</b></font><font color="#008000"><b>' </b></font><font color="#000000">+
</font><font color="#000000">               </font><font color="#008000"><b>'}'</b></font><font color="#000000">;
</font><font color="#000000">    }
</font><font color="#000000">}</font></pre></div><div><br></div><div><div>On 18 Jun 2014, at 18:44, Borris &lt;<a href="mailto:borris@chaos.org.uk">borris@chaos.org.uk</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Good question. I'm supporting a graph rather than a tree, so theoretically<br>there could be more than one node that has no parents. But in my particular<br>use case I am constraining the data so that there is never more than one<br>root node.<br><br>So how to find the root node (singular) from an arbitrary node in the graph<br>is my goal.<br><br><br><br>--<br>View this message in context: <a href="http://drools.46999.n3.nabble.com/Noob-question-graph-searching-query-root-node-for-a-given-node-tp4030091p4030096.html">http://drools.46999.n3.nabble.com/Noob-question-graph-searching-query-root-node-for-a-given-node-tp4030091p4030096.html</a><br>Sent from the Drools: User forum mailing list archive at <a href="http://Nabble.com">Nabble.com</a>.<br>_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>https://lists.jboss.org/mailman/listinfo/rules-users<br></blockquote></div><br></div></div></body></html>