Sparql 查找缺少的属性资源

Sparql 查找缺少的属性资源,sparql,dbpedia,Sparql,Dbpedia,我对这个语义网非常陌生,我正在用Sparql和DBPEDIA做一些实验。我写了一个查询来找出所有有名字(givenName)和姓氏(lastName)的记录 前缀foaf: 选择计数(不同?x),其中{ x foaf:givename?y; 姓?z。 } 当我运行这个查询时,我得到了98000条记录。但是当我运行单独的查询(对于firstName和lastName)时,我得到了firstName的992000条记录和lastName的98000条记录 这里我的问题是如何获得只有firstNam

我对这个语义网非常陌生,我正在用Sparql和DBPEDIA做一些实验。我写了一个查询来找出所有有名字(givenName)和姓氏(lastName)的记录

前缀foaf:
选择计数(不同?x),其中{
x foaf:givename?y;
姓?z。
}
当我运行这个查询时,我得到了98000条记录。但是当我运行单独的查询(对于firstName和lastName)时,我得到了firstName的992000条记录和lastName的98000条记录

这里我的问题是如何获得只有firstName而没有lastName的资源…?

您可以使用带有
过滤器的子句来实现这一点:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT (COUNT(DISTINCT ?x) AS ?count)
WHERE
{
  ?x foaf:givenName ?y .
  FILTER(NOT EXISTS { ?x foaf:surname ?z. })
}
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT (COUNT(DISTINCT ?x) AS ?count)
WHERE
{
  ?x foaf:givenName ?y .
  FILTER(NOT EXISTS { ?x foaf:surname ?z. })
}
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT (COUNT(DISTINCT ?x) AS ?count)
WHERE
{
  ?x foaf:givenName ?y .
  MINUS { ?x foaf:surname ?z. }
}