Sparql中的字符串

use*_*330 2 semantic-web sparql dbpedia linked-data

我正在玩DBPedia.

有了这个问题,我得到了所有在伦敦出生的人:

SELECT ?person
WHERE {      
  ?person dbo:birthPlace :London
}
Run Code Online (Sandbox Code Playgroud)

但是,当我执行此查询时,为什么我得到一个空结果?

SELECT ?person
WHERE {      
  ?person dbo:birthPlace "London"
}
Run Code Online (Sandbox Code Playgroud)

我刚刚换成London了一个String.

Kev*_*inD 7

这是因为此关系的对象是实体,而不是字符串,因此第二个查询没有结果.

要知道,如果一个属性(即DBO:出生地)涉及文字或不是一个实体,一种方法是看一下属性的"关于"页面,例如,发源地的一个.

可以看出,birthPlace的类型是owl:ObjectProperty,这意味着关系的对象必须是一个用URI定义的实体.另一种可能性是DatatypeProperty,例如"abstract"属性,其中关系的对象将是文字.

出生地是一个实体的事实允许很多事情,例如,在同一查询中检索关于该地点的特定信息.

希望有所帮助!