sparql 使用 live.dbpedia 并在结果中得到 XML 模式

sparql using live.dbpedia and getting XML Schema in the result

我正在尝试使用 sparql 和一个 java 应用程序,我发现了一些连接基础知识可以起床 运行ning 但担心我犯了一个错误以后会变得更糟。

无论使用何种库,每个连接建议都表示要连接到 "http://dbpedia.org/sparql/",但这对我不起作用。

当我使用在线编辑器 运行 进行查询时,我检查了 return 编辑的 url 并注意到了实时前缀,因此我将其添加为我的连接字符串,并且有用。也就是说,我的连接字符串看起来像 "http://live.dbpedia.org/sparql"

它确实 return 结果,但是,结果附加了 XML 架构,这让我想知道是否因为这个 live. 我添加了英寸

下面是我使用的简单连接代码,是否正确?非常感谢任何帮助。

如果 'live' 是正确的,是否可以在没有架构的情况下仅增加值?

StringBuilder sb = new StringBuilder();
    sb.append("PREFIX dbr: <http://dbpedia.org/resource/> \n");
    sb.append("PREFIX dbp: <http://dbpedia.org/property/> \n");
    sb.append("PREFIX dbo: <http://dbpedia.org/ontology/> \n");
    sb.append("SELECT ?dob \n");
    sb.append("WHERE {dbr:Tony_Blair dbp:birthDate ?dob} \n");

    Query query = QueryFactory.create(sb.toString());
    QueryExecution qexec = QueryExecutionFactory.sparqlService("http://live.dbpedia.org/sparql", query);

    try {
        ResultSet results = qexec.execSelect();
        for ( ; results.hasNext() ; )
        {
            QuerySolution soln = results.nextSolution() ;
            System.out.println(soln.get("?dob"));
        }

结果是:

1953-05-06^^http://www.w3.org/2001/XMLSchema#date

好吧,您显示的结果缺少一些括号和引号,但我认为这是您复制粘贴它的方式造成的。通常它看起来像这样:

"1953-05-06"^^<http://www.w3.org/2001/XMLSchema#date>

但本质上您的查询和代码是正确的。这里的"attached XML Schema"是返回文字串的数据类型

一个 RDF 文字包含一个 词法值 (在你的例子中是“1953-05-06”)和一个 数据类型(在你的情况 http://www.w3.org/2001/XMLSchema#date)。它还可以选择性地具有 语言标签 例如"colour"@en-UK.

如果您希望从结果中删除数据类型并只检索词法值,您可以使用 STR() 函数作为查询中 SELECT 子句的一部分:

SELECT (STR(?dob) as ?date_of_birth)

至于您遇到的连接字符串:有两个独立的 DBPedia 端点。 "regular" 一个是 http://dbpedia.org/sparql(没有尾部斜杠)——这查询一个静态数据集,即 synced/updated,维基百科每 6 个月左右更改一次。 "live" 端点 http://live.dbpedia.org/sparql 旨在为查询准备好更新的数据集。有关详细信息,请参阅 https://wiki.dbpedia.org/online-access/DBpediaLive