【问题标题】:How can I retrieve a list of specific person names from DBPedia by using SPARQL query in R如何使用 R 中的 SPARQL 查询从 DBPedia 检索特定人名列表
【发布时间】:2026-01-12 19:30:01
【问题描述】:

我目前正在使用 R 中的 SPARQL 包来查询 DBPedia 并获取特定人名列表的信息。但我只知道如何查询一个人或“人类别”,例如

query= "SELECT *{
    dbpedia:Veit_Dietrich ?p ?o 
}"

qd=SPARQL(endpoint,query)
df=qd$results

是否只使用一个查询就可以迭代查询多个名称(a、b 和 c)?

【问题讨论】:

    标签: r iteration sparql dbpedia


    【解决方案1】:

    对于这样的查询,最简单的方法是使用values。例如,

    select * { 
      values ?person { dbpedia:Johnny_Cash dbpedia:Johann_Sebastian_Bach }
      ?person ?p ?o 
    }
    

    SPARQL results

    我不熟悉 R,但 hui pointed out in the comments 认为 R 的 paste 函数可用于连接 URI 列表以生成 values 的内容。

    【讨论】:

    • 谢谢。但是如果有大约 300 个名称,那么这些值应该不是很可行。有什么方法可以使用like变量,我试过用变量,但是好像不适合SPARQL...
    • 我不确定您通过“任何方式使用类似变量”来问什么。 ?person 一个变量。
    • 对不起。例如,如果我有一个包含 100 个人名的列表,我将该列表导入 R 并通过 SPARQL 查询列表中的每个名称,例如:ft=function(b){ for(i in 1:length(b) ){ select * {dbpedia:b[i] ?p ?o }" 我知道这是丑陋和错误的,但我不知道如何修改它......
    • @hui 我不熟悉R,但为什么不喜欢"select * { values ?person { "+convertListToUris(persons)+" } ?person ?p ?o"
    • @hui 我不认为 Joshua 暗示该功能是由 R 提供的 - 但你自己写一个应该很容易。