Sparql MULTIPLE不存在条件

时间:2018-08-06 05:04:05

标签: sparql dbpedia

我正在执行一个Sparql查询,该查询返回所有其中关键字apple不属于特定子类Species的URI

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 } 
}

我想包含更多的子类。我想包含许多子类,所以我想像这样过滤掉:

filter not exists {?s rdf:type/rdfs:subClassOf* dbo:Speciesfilter not exists {?s rdf:type/rdfs:subClassOf* dbo:Organisationfilter not exists {?s rdf:type/rdfs:subClassOf* dbo:SomeOtherSubclass

如何将多个AND链接在一起?

1 个答案:

答案 0 :(得分:4)

您可以这样做:

FILTER NOT EXISTS { 
   VALUES ?clazz { dbo:Species dbo:Organisation dbo:SomeOtherSubclass } 
   ?s rdf:type/rdfs:subClassOf* ?clazz. 
 }

虽然不能保证效果良好。