Prepare: allow multiple entities with same name
This commit is contained in:
parent
1cfee42c47
commit
e4902fe995
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
Loading…
Reference in New Issue