代码之家  ›  专栏  ›  技术社区  ›  ababuji

SPARQL多重不存在条件

  •  1
  • ababuji  · 技术社区  · 7 年前

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

    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:Species 以及 filter not exists {?s rdf:type/rdfs:subClassOf* dbo:Organisation 以及 filter not exists {?s rdf:type/rdfs:subClassOf* dbo:SomeOtherSubclass

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

    1 回复  |  直到 7 年前
        1
  •  4
  •   Jeen Broekstra    7 年前

    你可以这样做:

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

    不过,这方面的表现并不能保证。