使用 SCALA 的地图创建字典

create a dictionary with map from SCALA

大家好, 我正在尝试使用 apache Jena 从一个 RDF 文件创建一个字典,在创建模型之后,我获取每个语句并将文件按主题、谓词和对象划分,然后我为每个唯一的 URI、空白节点和文字分配一个数字, 但是当我创建地图时,出现关于地图参数太多的错误,我不明白为什么,有人可以帮助我吗? 代码如下:

  var x:Int=0
  val dictionary:scala.collection.immutable.Map[Node, Int]
  // read the RDF/XML file
  model.read(in, null)
  val iter:StmtIterator = model.listStatements()

  // print out the predicate, subject and object of each statement
  def print {
    while (iter.hasNext) {
      {
        x+=1
        val stmt: Statement = iter.nextStatement
        val subject: Node = stmt.getSubject.asNode()
        dictionary(subject,x)
        x+=1
        val predicate: Node = stmt.getPredicate.asNode()
        dictionary(predicate,x)
        x+=1
        val obj: Node = stmt.getObject.asNode()
        dictionary(obj,x)

      }
    }
    for ((k,v) <- dictionary) printf("key: %s, value: %s\n", k, v)
  }

您正在创建一个不可变(不可更改)的地图。

val dictionary:scala.collection.immutable.Map[Node, Int]

所有Map的apply()方法是元素检索方法,它只有一个参数(key)。

dictionary(obj,x)  <-- too many args, can't retrieve element from Map

你可以做的是使用可变映射...

val dictionary: collection.mutable.Map[Node, Int]()

...然后 update/insert 就这样了。

dictionary += (obj -> x)