使用 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)
大家好, 我正在尝试使用 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)