使用SPARQL查询Jena制作的RDF属性

时间:2017-10-24 04:09:02

标签: scala sparql rdf jena

所以,我一直在玩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

但遗憾的是,结果是空的。我在这做错了什么?

1 个答案:

答案 0 :(得分:3)

在查询中,<myProperty>是相对URI。解析器会将其扩展为完整(绝对)URI,可能会添加当前目录作为解析的基础。

它与createProperty("myProperty")不匹配。

数据应具有绝对URI(例如createProperty("http://example/myProperty"),并且查询应该同意<http://example/myProperty>

您可以在查询中使用前缀。