2

考虑以下脚本:

PREFIX category: <http://dbpedia.org/resource/Category:>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX dbpedia: <http://dbpedia.org/ontology/>

SELECT DISTINCT *
WHERE {
    ?s dcterms:subject category:Living_people .
    ?s foaf:name ?name
}
LIMIT 10000

运行它时,我得到这样的结果:

Sir Alexander Chapman Ferguson
Sir Alex Ferguson

尽管它们是不同的条目,但它们绝对是相同的实体。所以我想在处理 SPARQL 端点时减少输出,即我想避免编辑输出数据,因为在这种情况下它可能具有挑战性。你能帮我解决这个问题吗?我的查询中应该修复什么?

4

1 回答 1

1

正如您在运行查询时看到的那样,您提到的两行都引用相同的资源:<http://dbpedia.org/resource/Alex_Ferguson>. 您在查询结果中获得多行的事实仅仅是因为此人有多个名称。

因此,如果您只需要确保您的应用程序中不会出现重复项,只需确保您的应用程序将查询结果中“s”的每个唯一值视为一个单独的人。

另一方面,如果你的问题是你得到一个人的多个名字,你也许可以使用其他一些属性。例如,dbpedia:fullname 只有一个条目,属性 dbpedia:surname 和 dbpedia:givenName 也是如此。

于 2011-12-25T21:35:08.077 回答