Фильтрация вершин по свойствам GraphX - PullRequest
0 голосов
/ 08 июня 2018

Привет. Я пытаюсь отфильтровать эти триплеты по их свойствам и распечатать их, но у меня возникли проблемы.Пример некоторых триплетов на графике:

SongProperty(Song,Dernière danse) --- GenericMusicProperties(Sung) ---> ArtistProperty(Artist,indila,-1)
SongProperty(Song,Watagatapitusberry) --- GenericMusicProperties(Sung) ---> ArtistProperty(Artist,pitbull,$45 Million)
SongProperty(Song,This Is How It Feels) --- GenericMusicProperties(WrittenBy) ---> WriterProperty(Writer,Clint Boon)

Я пытаюсь извлечь песни, которых зовут Watagatapitusberry.

Я пытаюсь использовать этот фильтр:

 val qry = allGraph.vertices.filter{
  case (vp: SongProperty) => vp.songName == "Watagatapitusberry"
}

, но я не уверен, правильно ли он и как печатать результат.

Эти классы используются каквершины и ребра

class EdgeProperty extends Serializable
case class GenericMusicProperties(edgeType: String) extends EdgeProperty

case class WriterWriterProperties(weight: String, edgeType: String) extends EdgeProperty

case class ArtistWriterProperties(weight: String, edgeType: String) extends EdgeProperty

case class ArtistGenreProperties(weight: String, edgeType: String) extends EdgeProperty


class VertexProperty() extends Serializable

case class SongProperty(val vertexType: String, val songName: String) extends VertexProperty

case class BillboardProperty(val vertexType: String, val rank: Int, val year: Int) extends VertexProperty

case class ArtistProperty(val vertexType: String, val artistName: String, val netWorth: String) extends VertexProperty

case class WriterProperty(val vertexType: String, val writerName: String) extends VertexProperty

case class GenreProperty(val vertexType: String, val genreName: String) extends VertexProperty

case class GrammyProperty(val vertexType: String, val grammyNo: Int) extends VertexProperty

case class AliasProperty(val vertexType: String, val alias: String) extends VertexProperty

1 Ответ

0 голосов
/ 08 июня 2018

Если вы хотите фильтровать только по SongProperty, по songName и оставшимся элементам типа VertexProperty, оставленным в коллекции, вы должны сделать так:

list.filter {
  case s: SongProperty => s.songName == "Watagatapitusberry"
  case _ => true
}

Например, для ввода:

val list = List(SongProperty("type1", "Strangers In the night"), 
               SongProperty("type1", "Watagatapitusberry"), 
               AliasProperty("type2", "alias1"), 
               GenreProperty("type1", "unknown"))

результат будет:

List(SongProperty(type1,Watagatapitusberry), 
     AliasProperty(type2,alias1), 
     GenreProperty(type1,unknown))
...