Following the "flight" example from the user-manual I was able to define a custom edge with triples of Int values.
However, I am having problems to define a more generic edge made from triples of the form (A,A,A).
The following code works:
class Triple[N](nodes: Product,
val triple: (Int,Int,Int))
extends DiHyperEdge[N](nodes)
with EdgeCopy[Triple]
with EdgeIn[N,Triple] {
override def copy[NN](newNodes: Product) =
new Triple[NN](newNodes, triple)
def subj : Int = { triple._1 }
def pred : Int = { triple._2 }
def obj : Int = { triple._3 }
}
object Triple{
def apply(subj: Int, pred: Int, obj : Int) =
new Triple[Int](NodeProduct(subj, pred,obj), (subj,pred,obj))
def unapply(e: Triple[Int]) = Some(e)
}
The following code does not work.
class Triple[N,A](nodes: Product,
val triple: (A,A,A))
extends DiHyperEdge[N](nodes)
with EdgeCopy[Triple[A]]
with EdgeIn[N,Triple[A]] {
override def copy[NN](newNodes: Product) =
new Triple[NN](newNodes, triple)
def subj : A = { triple._1 }
def pred : A = { triple._2 }
def obj : A = { triple._3 }
}
Best regards, Jose Labra