检查一个人是否并获取详细信息
Checking if a person and getting details
我是 SPARQL 的新手,我想在 Dbpedia 上获取某人的详细信息,例如他们的出生地等,但首先我想检查一下他们的类型是 Person。到目前为止,我的查询如下所示:
SELECT ?person ?birthPlace
WHERE {
{?person a dbpedia-owl:Person.}
UNION
{dbpedia:Stephen_Fry dbpprop:birthPlace ?birthPlace .}
}
试试这样的东西:
SELECT ?person ?birthPlace
WHERE
{?person a dbpedia-owl:Person.
?person dbpprop:birthPlace ?birthPlace .
VALUES ?person { dbpedia:Stephen_Fry dbpedia:Hugh_Laurie }
}
I want to get details of someone on Dbpedia such as their birthPlace etc, but first I want to do a check that they are type Person.
如果你真的想先获取 Persons,然后 然后 获取他们的名字,你可以利用 SPARQL sub-select 查询这一事实先评价:
select ?person ?name {
{ select ?person { ?person a dbpedia-owl:Person } limit 10 }
?person foaf:name ?name .
}
这样做的好处是你可以先select一定数量的人,然后得到他们可能有的任何名字。例如,上面查询的结果有 10 个以上的结果,因为有些人有多个 foaf:name 属性。
但是,您的要求很不寻常。如果您要查找人名,您通常只需编写一个查询来查找人员及其姓名:
select ?person ?name {
?person a dbpedia-owl:Person .
?person foaf:name ?name .
}
limit 10
您不需要先 "check" 这个人是一个人或类似的东西。此查询要求 ?person 是一个 Person 并且具有 foaf:name 属性。你不能从中得到任何非人。
如果你想让 ?person 绑定到特定的值,你可以使用 values 子句:
select ?person ?name {
values ?person { dbpedia:Daniel_Webster dbpedia:New_York }
?person a dbpedia-owl:Person .
?person foaf:name ?name .
}
values 子句指定了 ?person 可以拥有的值。如果 ?person 的指定值之一不允许匹配,例如上面查询中的纽约,那么您将不会在输出中看到该值的任何结果。
我是 SPARQL 的新手,我想在 Dbpedia 上获取某人的详细信息,例如他们的出生地等,但首先我想检查一下他们的类型是 Person。到目前为止,我的查询如下所示:
SELECT ?person ?birthPlace
WHERE {
{?person a dbpedia-owl:Person.}
UNION
{dbpedia:Stephen_Fry dbpprop:birthPlace ?birthPlace .}
}
试试这样的东西:
SELECT ?person ?birthPlace
WHERE
{?person a dbpedia-owl:Person.
?person dbpprop:birthPlace ?birthPlace .
VALUES ?person { dbpedia:Stephen_Fry dbpedia:Hugh_Laurie }
}
I want to get details of someone on Dbpedia such as their birthPlace etc, but first I want to do a check that they are type Person.
如果你真的想先获取 Persons,然后 然后 获取他们的名字,你可以利用 SPARQL sub-select 查询这一事实先评价:
select ?person ?name {
{ select ?person { ?person a dbpedia-owl:Person } limit 10 }
?person foaf:name ?name .
}
这样做的好处是你可以先select一定数量的人,然后得到他们可能有的任何名字。例如,上面查询的结果有 10 个以上的结果,因为有些人有多个 foaf:name 属性。
但是,您的要求很不寻常。如果您要查找人名,您通常只需编写一个查询来查找人员及其姓名:
select ?person ?name {
?person a dbpedia-owl:Person .
?person foaf:name ?name .
}
limit 10
您不需要先 "check" 这个人是一个人或类似的东西。此查询要求 ?person 是一个 Person 并且具有 foaf:name 属性。你不能从中得到任何非人。
如果你想让 ?person 绑定到特定的值,你可以使用 values 子句:
select ?person ?name {
values ?person { dbpedia:Daniel_Webster dbpedia:New_York }
?person a dbpedia-owl:Person .
?person foaf:name ?name .
}
values 子句指定了 ?person 可以拥有的值。如果 ?person 的指定值之一不允许匹配,例如上面查询中的纽约,那么您将不会在输出中看到该值的任何结果。