使用 SPARQL 查询 Jena 制作的 RDF 属性
Querying RDF Properties Made by Jena with SPARQL
所以,我一直在 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
但遗憾的是,结果是空的。我在这里做错了什么?
在查询中,<myProperty>
是一个相对URI。解析器会将其扩展为完整(绝对)URI,可能会将当前目录添加为解析的基础。
它将不匹配 createProperty("myProperty")
。
数据应具有绝对 URI(例如 createProperty("http://example/myProperty")
并且查询应符合 <http://example/myProperty>
。
您可以在查询中使用前缀。
所以,我一直在 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
但遗憾的是,结果是空的。我在这里做错了什么?
在查询中,<myProperty>
是一个相对URI。解析器会将其扩展为完整(绝对)URI,可能会将当前目录添加为解析的基础。
它将不匹配 createProperty("myProperty")
。
数据应具有绝对 URI(例如 createProperty("http://example/myProperty")
并且查询应符合 <http://example/myProperty>
。
您可以在查询中使用前缀。