使用 Sparql 和 DBpedia 查找与 X 有联系的人
Find people linked with Person X using Sparql and DBpedia
我不熟悉使用 Sparql 查询 DBPedia。我想使用 DBPedia 查找与某个人 X 相关的人。
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpr: <http://dbpedia.org/resource/>
PREFIX dbpo: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
SELECT ?P
WHERE {dbpr:Chuck_Norris}
如果你想要人与人直接相关,那么你需要两个三重模式,一个以人为主体,另一个以客体为对象。下面是构建此类查询的一种方法:
SELECT DISTINCT ?has ?of ?person
WHERE {
{?person a foaf:Person;
?of dbr:Chuck_Norris}
UNION
{?person a foaf:Person.
dbr:Chuck_Norris ?has ?person}
}
我正在使用 dbr:
,因为这是 DBpedia 中的预定义前缀。
在某些情况下,如果您在 http://live.dbpedia.org/sparql
上查询,您会得到不同的结果
现在,这个查询有一个限制。它只会让您与其他 DBpedia 资源建立关系。很多时候可能会有相关人员被断言为文字。我不知道有什么优雅的方法可以获取它们,但一种方法是索取已知用于人际关系的属性列表。这是一个列表的示例,其中一个值为 dbp:spouse
:
SELECT DISTINCT ?has ?of ?person
WHERE {
{?person a foaf:Person;
?of dbr:Chuck_Norris}
UNION
{?person a foaf:Person.
dbr:Chuck_Norris ?has ?person}
UNION
{values ?has {dbp:spouse}
dbr:Chuck_Norris ?has ?person .}
}
从http://live.dbpedia.org/sparql起,这将为您带来额外的:
has | person
---------------------------------------------------------
http://dbpedia.org/property/spouse | "Dianne Holechek"@en
http://dbpedia.org/property/spouse | "Gena O'Kelley"@en
---------------------------------------------------------
一般来说,要求这样的文字会给您带来很多垃圾结果,您可以使用字符串过滤器来减少这些结果。
我不熟悉使用 Sparql 查询 DBPedia。我想使用 DBPedia 查找与某个人 X 相关的人。
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpr: <http://dbpedia.org/resource/>
PREFIX dbpo: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
SELECT ?P
WHERE {dbpr:Chuck_Norris}
如果你想要人与人直接相关,那么你需要两个三重模式,一个以人为主体,另一个以客体为对象。下面是构建此类查询的一种方法:
SELECT DISTINCT ?has ?of ?person
WHERE {
{?person a foaf:Person;
?of dbr:Chuck_Norris}
UNION
{?person a foaf:Person.
dbr:Chuck_Norris ?has ?person}
}
我正在使用 dbr:
,因为这是 DBpedia 中的预定义前缀。
在某些情况下,如果您在 http://live.dbpedia.org/sparql
上查询,您会得到不同的结果现在,这个查询有一个限制。它只会让您与其他 DBpedia 资源建立关系。很多时候可能会有相关人员被断言为文字。我不知道有什么优雅的方法可以获取它们,但一种方法是索取已知用于人际关系的属性列表。这是一个列表的示例,其中一个值为 dbp:spouse
:
SELECT DISTINCT ?has ?of ?person
WHERE {
{?person a foaf:Person;
?of dbr:Chuck_Norris}
UNION
{?person a foaf:Person.
dbr:Chuck_Norris ?has ?person}
UNION
{values ?has {dbp:spouse}
dbr:Chuck_Norris ?has ?person .}
}
从http://live.dbpedia.org/sparql起,这将为您带来额外的:
has | person
---------------------------------------------------------
http://dbpedia.org/property/spouse | "Dianne Holechek"@en
http://dbpedia.org/property/spouse | "Gena O'Kelley"@en
---------------------------------------------------------
一般来说,要求这样的文字会给您带来很多垃圾结果,您可以使用字符串过滤器来减少这些结果。