@@ -7,6 +7,7 @@ import scalax.collection.GraphTraversal.Parameters
77import scalax .collection ._
88import scalax .collection .edge .Implicits ._
99import scalax .collection .edge ._
10+ import scalax .collection .mutable .DefaultGraphImpl
1011
1112import org .apache .jena .graph .Node
1213import org .apache .jena .reasoner .TriplePattern
@@ -54,6 +55,8 @@ object RuleDependencyGraphGenerator extends Logging {
5455 g += (r2 ~+> r1) (r2r1.get)
5556 }
5657 }
58+
59+ // cycles?
5760 val r1r1 = f(r1, r1)
5861 if (r1r1.isDefined) { // r1 depends on r1, i.e. reflexive dependency
5962 g += (r1 ~+> r1) (r1r1.get)
@@ -65,7 +68,7 @@ object RuleDependencyGraphGenerator extends Logging {
6568 g = removeEdgesWithPredicateAlreadyTC(g)
6669 g = removeCyclesIfPredicateIsTC(g)
6770 g = removeEdgesWithCycleOverTCNode(g)
68- // g = prune(g)
71+ g = prune(g)
6972 // g = prune1(g)
7073 }
7174
@@ -143,10 +146,11 @@ object RuleDependencyGraphGenerator extends Logging {
143146 ret
144147 }
145148
146-
147149 def prune (graph : RuleDependencyGraph ): RuleDependencyGraph = {
148150 var redundantEdges = Seq [Graph [Rule , LDiEdge ]# EdgeT ]()
149151
152+ // graph.outerNodeTraverser.foreach(n => println(n))
153+
150154 // for each node n in G
151155 graph.nodes.foreach(node => {
152156 debug(" #" * 20 )
@@ -216,6 +220,27 @@ object RuleDependencyGraphGenerator extends Logging {
216220
217221 }
218222
223+ def removeRedundantEdges (graph : RuleDependencyGraph ): RuleDependencyGraph = {
224+ debug(" removeRedundantEdges" )
225+ var redundantEdges = Seq [Graph [Rule , LDiEdge ]# EdgeT ]()
226+
227+ // for each node n in G
228+ graph.nodes.foreach(node => {
229+ debug(" #" * 20 )
230+ debug(s " NODE: ${node.value.getName}" )
231+
232+ // check for nodes that do compute the TC
233+ val outgoingEdges = node.outgoing.withFilter(e => e.target != node)
234+
235+ outgoingEdges.foreach(e => {
236+ val targetNode = e.target
237+
238+ })
239+ })
240+
241+ graph
242+ }
243+
219244 // get all nodes that depend on a TC node for a predicate p and another node for p
220245 def removeEdgesWithPredicateAlreadyTC (graph : RuleDependencyGraph ): RuleDependencyGraph = {
221246 debug(" removeEdgesWithPredicateAlreadyTC" )
@@ -366,7 +391,7 @@ object RuleDependencyGraphGenerator extends Logging {
366391 }
367392
368393 def removeCyclesIfPredicateIsTC (graph : RuleDependencyGraph ): RuleDependencyGraph = {
369-
394+ debug( " removeCyclesIfPredicateIsTC " )
370395 var redundantEdges = Seq [Graph [Rule , LDiEdge ]# EdgeT ]()
371396
372397 // for each node n in G
@@ -463,4 +488,6 @@ object RuleDependencyGraphGenerator extends Logging {
463488 val e = edge.toOuter
464489 " [" + e.source.getName + " ~> " + e.target.getName + " ] '" + e.label
465490 }
491+
492+ // override def debug(msg: => String): Unit = println(msg)
466493}
0 commit comments