DBPedia SPARQL,return 一定数量的实体相关页面 URI,除了实体属于 Owl:Thing 的一组子类的 URI

DBPedia SPARQL, return certain number of relevant page URIs for entity EXCEPT the URIs where the entity belongs to a set of subclasses of Owl:Thing

  1. 寻找 SPARQL 查询以执行以下操作:

比如我有Apple这个词。根据 ontology,Apple 可能指的是组织 Apple_IncPlants class 的 SpeciesOwl: Thing 有一个名为 Species 的子 class,所以我想 return 那些关键字 Apple 不属于的大多数 relevant/maximum-hit URI Species 子class。因此,当您 return 所有 URI 时,http://dbpedia.org/page/Apple 不应是其中之一,Species subclass.[= 下的任何相关 link 也不得39=]

maximum-hit/most 相关是指与查询匹配的前 returned 结果!就像当你访问 PrefixSearch (i.e. Autocomplete) API 时,它有一个名为 MaxHits.

的参数

例如 http://lookup.dbpedia.org/api/search/PrefixSearch?QueryClass=&MaxHits=2&QueryString=berl 是一个 link,您想要 return 与 QueryString=berl.

匹配的前 2 个 URI

好像我真的很难解释我到目前为止所做的工作,因为我无法理解结构以及如何制定正确的查询。

关于 SPARQL 中的否定,我在 link here 中找到了文档的相关部分。但是我不知道如何以及从哪里开始,也无法理解为什么使用 ?person 这样的关键字..我可以理解 person 用于 select 很好.. 人名,但我想知道如何以及在哪里找到这些关键字?person?name 表示特定实体..

SELECT ?uri ?label
WHERE {
?uri rdfs:label ?label .
filter(?label="car"@en)
}

如果有人能 link 我可以清楚地阅读和理解 ?uri 用于 select 形式的 URI 的文档部分,我将不胜感激 www.dbpedia.org'/page/SomeEntity以及这些?person?name?label代表什么。

我真的迷路了..我会上去开始一次吃一头大象。现在,如果我能得到答案,我将不胜感激。

  1. 如果你知道我在哪里可以避免学习和使用 SPARQL,那也行!我很了解 Python,所以利用 API 来提取这些信息对我来说也很好。这个question是我发的

@Stanislav-Kravin 发布的答案 --

SELECT DISTINCT ?s 
WHERE
  { ?s a owl:Thing .
    ?s rdfs:label ?label . 
      FILTER ( LANGMATCHES ( LANG ( ?label ), 'en' ) ) 
    ?label bif:contains '"apple"' . 
      FILTER NOT EXISTS { ?s rdf:type/rdfs:subClassOf* dbo:Species } 
  }