所以,我一直在玩Scala中的Jena来尝试感受它,我遇到了一个简单的问题。假设您使用var myProperty = model.createProperty("myProperty")
之类的代码创建一个属性,然后使用类似model.createLiteralStatement(model.createResource(), myProperty, "test")
的内容将其添加到模型中,并且您只希望使用SPARQL查询检索此语句,您将如何处理它?
我尝试了以下内容:
var sparqlQuery = "SELECT ?value " +
"WHERE " +
"{?subject " + "<myProperty>" + " ?value." +
"}"
val query = QueryFactory.create(sparqlQuery)
var queryExec: QueryExecution = QueryExecutionFactory.create(query, model)
val results = queryExec.execSelect
但遗憾的是,结果是空的。我在这做错了什么?
答案 0 :(得分:3)
在查询中,<myProperty>
是相对URI。解析器会将其扩展为完整(绝对)URI,可能会添加当前目录作为解析的基础。
它与createProperty("myProperty")
不匹配。
数据应具有绝对URI(例如createProperty("http://example/myProperty")
,并且查询应该同意<http://example/myProperty>
。
您可以在查询中使用前缀。