diff --git a/prepare/src/main/Main.scala b/prepare/src/main/Main.scala index f5ab08d..c6a6a24 100644 --- a/prepare/src/main/Main.scala +++ b/prepare/src/main/Main.scala @@ -16,12 +16,13 @@ object Main extends App { }) kg.read(mondialDataset, null, "TTL"); printf("Loaded %s triples\n", kg.listStatements().toList.size) - val guessableEntities = NamedEntitySet() ++ + val guessableEntities = (List[NamedEntity]() ++ getMondialNamedEntities(kg, "Country") ++ getMondialNamedEntities(kg, "City") ++ getMondialNamedEntities(kg, "Continent") ++ - getMondialNamedEntities(kg, "Sea") - printf("Found %d guessable named entities\n", guessableEntities.set.size) + getMondialNamedEntities(kg, "Sea")) + .distinct + printf("Found %d guessable named entities\n", guessableEntities.size) } def getMondialNamedEntities(kg: Model, prefixedType: String): List[NamedEntity] = { @@ -35,8 +36,8 @@ object Main extends App { while (resultSet.hasNext) { val solution = resultSet.next() result = result :+ new NamedEntity( - solution.getLiteral("?name").getString, solution.getResource("?entity"), + solution.getLiteral("?name").getString, prefixedType ) } diff --git a/prepare/src/main/NamedEntity.scala b/prepare/src/main/NamedEntity.scala index 91937c4..a03e2b0 100644 --- a/prepare/src/main/NamedEntity.scala +++ b/prepare/src/main/NamedEntity.scala @@ -1,5 +1,20 @@ import org.apache.jena.rdf.model.Resource -class NamedEntity(val Name: String, val entity: Resource, val readableType: String) { +class NamedEntity(val rdfResource: Resource, val Name: String, val readableType: String) { + + + def canEqual(other: Any): Boolean = other.isInstanceOf[NamedEntity] + + override def equals(other: Any): Boolean = other match { + case that: NamedEntity => + (that canEqual this) && + rdfResource == that.rdfResource + case _ => false + } + + override def hashCode(): Int = { + val state = Seq(rdfResource) + state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) + } } diff --git a/prepare/src/main/NamedEntitySet.scala b/prepare/src/main/NamedEntitySet.scala deleted file mode 100644 index f4bd03c..0000000 --- a/prepare/src/main/NamedEntitySet.scala +++ /dev/null @@ -1,16 +0,0 @@ -class NamedEntitySet(val set: Set[NamedEntity] = Set()) { - - def ++(iterable: Iterable[NamedEntity]): NamedEntitySet = { - val nameSet = set.map(e => e.Name) - val duplicateNameEntity = iterable.find(e => nameSet.contains(e.Name)) - if (duplicateNameEntity.nonEmpty) { - System.err.printf("Error: multiple entities exist with name %s\n", duplicateNameEntity.get.Name) - System.exit(1) - } - NamedEntitySet(set ++ iterable) - } -} - -object NamedEntitySet { - def apply(set: Set[NamedEntity] = Set()): NamedEntitySet = new NamedEntitySet(set) -}