0

FirstTestingClass.java

package com.mycompany.sparqlwithjena1;

import org.apache.jena.query.Query;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.ResultSet;
import org.apache.jena.query.ResultSetFormatter;
import org.apache.jena.sparql.engine.http.QueryEngineHTTP;

public class FirstTestingClass {
public static void main(String[] args)
{
    sparqlQuery();
}
static void sparqlQuery()
{
    String url4= "http://dbpedia.org/sparql/";
    String queryString =
           "PREFIX ol: <http://www.openlinksw.com/schemas/virtrdf#> "+
            " SELECT ?person ?x"+
            " WHERE { "+
            " ?person a ?x . "+
            //" FILTER ( regex( str(?person) , 'resource' ,'i') ) ."+
            " }";
    Query query = QueryFactory.create(queryString);

    QueryEngineHTTP qe= new QueryEngineHTTP(url4,queryString);

    ResultSet result = qe.execSelect();
      ResultSetFormatter.out(result, query);
      qe.close();
}
}

这给出了这种输出

| 人 | x |

| http://www.openlinksw.com/virtrdf-data-formats#default-iid | ol:QuadMapFormat |
| http://www.openlinksw.com/virtrdf-data-formats#default-iid-nullable | ol:QuadMapFormat |

我只粘贴了两个输出元组,输出中有超过 100 个元组。那么为什么会这样呢?是因为自动取消引用 URL 吗?

我尝试在 librdf.org 上查询相同的 URL(=url4)。它只给出一个元组作为输出。

我还尝试通过自动转换为 N3 形式来检查 rdf-translator.appspot.com 上的三元组形式的 URL(=url4)。它还显示给定查询应该只有一个元组。

请帮忙看看我哪里做错了?我是初学者请解释一下。

4

2 回答 2

0

您要求 Jena 针对http://dbpedia.org/sparql的端点运行 SPARQL 查询。您可以在 Web 浏览器中手动转到该端点并运行相同的查询。当您在那里运行查询时,您会得到很多结果。你问了其他一些地方,比如

我尝试在 librdf.org 上查询相同的 URL(=url4)。它只给出一个元组作为输出。

我不确定你到底是什么意思。你的意思是你在他们支持的某个端点上运行了相同的查询?如果你这样做了,你当然会得到不同的结果,因为它是一个不同的端点。

作为比较,如果你在不同的数据库上运行相同的 SQL 查询,你很可能会得到不同的结果,因为这些数据库中的数据是不同的。或者如果你问不同的人,“你有几个兄弟姐妹?” 你会得到不同的答案,因为不同的人有不同数量的兄弟姐妹。

于 2016-08-09T13:50:41.017 回答
0

你的问题的答案是:

不,Jena 不会自动取消引用 URI。请查看您的 SPARQL 查询。它类似于

SELECT ?s ?o WHERE {
   ?s a ?o .
}

您为变量提供人类可读的名称并不意味着在处理查询时可以识别语义。您在查询中要求的三元组都是具有rdf:type谓词的三元组。您展示的三元组是一些 Virtuoso 内部三元组——部署 DBpedia 的三元组存储。http://dbpedia.org当您在 Jena 代码中设置为默认图形时,它可能会得到解决:

qe.addDefaultGraph("http://dbpedia.org");
于 2016-08-09T17:07:16.873 回答