【问题标题】:SPARQL query in Jena SyntaxJena 语法中的 SPARQL 查询
【发布时间】:2017-01-26 02:32:52
【问题描述】:

我有这个 SPARQL 查询,它在 Protege SPARQL 选项卡中运行良好,但在 Jena 代码中不起作用。 请如果有人以正确的 Jena 语法提供它,因为我从未在 Jena 代码中使用过嵌套的 SELECT 子句。

SELECT ?student ?topScore WHERE {
   {
    SELECT (MAX(?score) AS ?topScore) WHERE {
         ?student dd:EnglishPercentage ?score .
    }
   }
    ?student dd:EnglishPercentage  ?topScore .
}

【问题讨论】:

  • “不起作用”是什么意思?例外?如果是,则显示整个错误堆栈跟踪。空结果?如果是,这不是一个最小的例子。显示数据+代码。查询中缺少前缀声明,这可能导致解析异常。
  • 顺便问一下,你用的是哪个耶拿版本?此查询需要 SPARQL 1.1,因此建议使用 Jena 2.10 甚至更好的 3.x。
  • 查询完全没问题 SPARQL 1.1 if 添加了前缀(按照标准的要求)。
  • String queryString2="prefix dd:semanticweb.org/t/ontologies/2016/7/myOWL#>"+ "PREFIX rdfs:w3.org/2000/01/rdf-schema#> " + "PREFIX rdf:w3.org/1999/02/22-rdf-syntax-ns#> "+ "SELECT ?student ?highScore " + " WHERE {" + " {"+ "select (max(?score) as ?highScore)" + " { ?student dd:Englishscore ?score" + " }" + " } " +Englishscore ?highScore" + "}";
  • 不不不,请编辑您的问题。并且不要发布 Java 字符串连接代码。读起来更奇怪。

标签: sparql jena semantic-web


【解决方案1】:

这是整个查询。我正在使用 Jena 的 3.x 版本

String queryString2 = 
                   "prefix dd:<http://www.semanticweb.org/t/ontologies/2016/7/myOWL#>"+
         "PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> "  +

          "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+
                     "SELECT  ?student ?highScore " +
          " WHERE {" + " {"+ "select  (max(?score) as ?highScore)" + " { ?student dd:Englishscore ?score" + 
" }" +
"  } " +Englishscore ?highScore"   +     
         "}";    
Query query2 = QueryFactory.create(queryString2);
QueryExecution qexec = QueryExecutionFactory.create(query2, model) ;
ResultSet results2 = qexec.execSelect() ;

Literal r= results2.next().get("highScore").asLiteral();
    JOptionPane.showMessageDialog(null,r.toString());

【讨论】:

  • 异常是:: 线程“AWT-EventQueue-0”中的异常 java.util.NoSuchElementException: QueryIteratorCloseable
  • @JavedKhan 您构建的查询是错误的。它不会编译。 -> 在最后一次出现 EnglishScore 之前缺少引号和缺少前缀。 Javad,与我们在 Jena 邮件列表中多次告诉您的内容相同,通过将其打印到控制台来检查您构建的查询。并且根据您得到的异常 - 没有与查询匹配的数据 - 这可能是由于您的错误查询而发生的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
相关资源
最近更新 更多