代码之家  ›  专栏  ›  技术社区  ›  null

sparql使用live.dbpedia并在结果中获取XML模式

  •  0
  • null  · 技术社区  · 6 年前

    我正在尝试使用sparql和java应用程序,我已经找到了一些基本的连接,可以正常运行,但是我担心我犯了一个错误,以后会变得更糟。

    每一个连接建议,不管所用的库是什么,都说要连接到 "http://dbpedia.org/sparql/" 但这对我不起作用。

    我检查了当我使用在线编辑器运行查询时返回的url,注意到了live前缀,所以我将其添加为我的连接字符串,它就工作了也就是说,我的连接字符串看起来像 "http://live.dbpedia.org/sparql"

    它确实返回了结果,但是,结果附加了XML模式,这使我怀疑是否是因为 live. 我加入了。

    下面是我正在使用的简单连接代码,对吗?所有的帮助都非常感谢。

    如果“live”是正确的,那么是否有可能在模式中添加just值?

    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
    
    0 回复  |  直到 6 年前
        1
  •  3
  •   Jeen Broekstra    6 年前

    好吧,正如你所展示的,结果是缺少一些括号和引号,但我认为这是由你复制粘贴的方式造成的更常见的情况是:

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

    但实际上,您的查询和代码是正确的。这里的“附加XML模式”是 数据类型 返回的文本字符串的。

    rdf文本由 词汇价值 (在您的情况下为“1953-05-06”)和 数据类型 (对你来说 http://www.w3.org/2001/XMLSchema#date ). 它还可以,可选地 语言标签 例如 "colour"@en-UK .

    如果希望从结果中删除数据类型,只检索词汇值,则可以使用 STR() 作为 SELECT 查询中的子句:

    SELECT (STR(?dob) as ?date_of_birth)
    

    至于您正在处理的连接字符串:有两个单独的dbpedia端点。“普通的”是 http://dbpedia.org/sparql (没有尾随斜杠)-这将查询一个静态数据集,该数据集每隔大约6个月与Wikipedia更改同步/更新一次“实时”端点, http://live.dbpedia.org/sparql ,这是为了使数据集更具更新性,便于查询见 https://wiki.dbpedia.org/online-access/DBpediaLive 更多细节。