SPARQL中的不区分大小写的URI匹配

问题描述 投票:1回答:1

我希望有人能用我正在编写的SPARQL查询来帮助我。我可能会得到一些错误的术语,我不是SPARQL专家。

我试图从Nobel奖品SPARQL端点(data.nobelprize.org/sparql)获取一些信息,检索对象标签与某个字符串匹配的谓词标签。

因此,例如,如果我搜索一个objectLabel包含字符串'Robert Burns Woodward'的对象,我应该收到一些结果,包括:

predicateLabel, objectLabel

"Laureate","Robert Burns Woodward"
"LaureateAward","Chemistry 1965, Robert Burns Woodward"
"AwardFile","Nobel Lecture Robert Burns Woodward"

我在下面写了SPARQL应该可以工作,但它不会检索任何结果:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT ?predicateLabel ?objectLabel
WHERE 
{  
  ?subject ?predicate ?object .  
  ?object rdfs:label ?objectLabel .
  ?predicate rdfs:label ?predicateLabel .
  FILTER contains(?objectLabel, 'Robert Burns Woodward') 
}

原因是?谓词URI与URI的情况不同,URI链接到相应的rdfs:label属性。

例如,谓词

http://data.nobelprize.org/terms/nobelPrize

用于将获奖者与他们赢得的奖品联系起来。例如:

sub:http://data.nobelprize.org/resource/laureate/231

之前:詹姆斯

obj:http://data.nobelprize.org/terms/nobelPrize

但是,rdfs:标签已链接到

http://data.nobelprize.org/resource/nobelprize/Chemistry/1965

http://data.nobelprize.org/terms/NobelPrize

注意两者之间的区别 - 第二个URI在nobelprize中有一个小写'n',第一个使用大写N.

所以我的问题是,SPARQL中是否有一种方法可以使URI不区分大小写,以便http://data.nobelprize.org/terms/nobelPrizehttp://data.nobelprize.org/terms/NobelPrize匹配?我知道可以使用FILTER正则表达式或FILTER包含搜索不区分大小写的字符串,但我不知道是否可以使用URI。

sparql rdf rdfs
1个回答
2
投票

我认为你正以错误的方式接近这个。该数据源有两个独立的概念。资源拼写http://data.nobelprize.org/terms/nobelPrize表示诺贝尔奖的类别,可以在NobelPrize中看到。资源拼写the ontology是一个不同的资源,即获奖者和特定诺贝尔奖之间的关系。

换句话说:它们是截然不同的,故意如此,你不应该试图通过不区分大小写的匹配将它们变成同一个东西。

nobelPrize属性在SPARQL端点中没有标签有点奇怪,因为根据本体文件它应该有一个。但鉴于它没有标签,你只需要回到谓词URI本身。您可以选择使用nobelPrize剪切命名空间部分来缩短它,如下所示:

strafter

另一种更复杂但概念更整洁的替代方法是,不返回谓词的名称,而是返回谓词所指向的对象类型的名称:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT (strafter(str(?predicate), "http://data.nobelprize.org/terms/") as ?predicateLabel) ?objectLabel
WHERE 
{  
  ?subject ?predicate ?object .  
  ?object rdfs:label ?objectLabel .
  FILTER contains(?objectLabel, 'Robert Burns Woodward') 
}
© www.soinside.com 2019 - 2024. All rights reserved.