Sparql:寻找叶子Uri的

时间:2013-12-09 06:58:16

标签: sparql dbpedia

让我知道你对此的想法..

目标:提取正在传递的标签的URI(叶子URI)。

Leaf URI 被定义为没有消除歧义或重定向到另一个URI的URI。

以下查询适用于所有情况,除了URI具有重定向且重定向URI已消除歧义的情况。

查询:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?termURI ?redirects ?term ?disambiguates 
WHERE
{
  ?termURI rdfs:label ?term .
  OPTIONAL{ ?termURI <http://dbpedia.org/ontology/wikiPageRedirects> ?redirects .}
  OPTIONAL{ ?termURI <http://dbpedia.org/ontology/wikiPageDisambiguates> ?disambiguates .} 
  OPTIONAL{ ?redirects <http://dbpedia.org/ontology/wikiPageDisambiguates> ?disambiguates .}
  FILTER((?term = 'Build ups'@en))
}

任何想法我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您应该可以使用FILTER NOT EXIST来实现目标:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia: <http://dbpedia.org/ontology/>

SELECT ?termURI ?term
WHERE
{
  ?termURI rdfs:label ?term .
  FILTER NOT EXISTS 
  { 
    { ?termURI dbpedia:wikiPageRedirects [] }
    UNION
    { ?termURI dbpedia:wikiPageDisambiguates [] }
  }
  FILTER((?term = 'Build ups'@en))
}

此查询表达的是您要消除任何重定向或消除链接歧义的匹配。

有关这些语法元素的更多详细信息,请参阅SPARQL规范中的Filtering Using Graph Patterns