2017-04-24 31 views
0

美好的一天大家, 我想创建一个字典从一个RDF文件使用Apache耶拿,创建模型后,我采取每个语句,并按主题,谓词和对象分割文件,然后给每个唯一的URI分配一个数字,空白节点和文字,但是当我创建地图时,出现关于地图的错误有太多争论,我不明白为什么,有人可以帮助我? 代码如下:用SCALA地图创建字典

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) 
    } 

回答

0

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

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

所有地图的apply()方法是元素检索方法,它只有一个参数(密钥)。

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

你可以做的是使用一个可变的地图......

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

...然后更新/插入它像这样。

dictionary += (obj -> x)