sparql排除多类型层次结构

sparql排除多类型层次结构,sparql,dbpedia,Sparql,Dbpedia,在dbpedia中,我选择一些标签以“A”开头的页面。在这里,我使用额外的过滤器,按主题缩小设置范围。在原始版本中还有另一个条件(结果集要大得多) 前缀skos: 前缀purl: 前缀rdfs: 前缀: 前缀dc: 前缀dbr: 选择不同的 ?页面类型 哪里 { { ?页面rdfs:标签?标签。 ?页面a?页面类型。 页 } 过滤器(strstarts(str(?pageType),'http://dbpedia.org/ontology') ) } 限制1000 在这里,我只选择页面类型

在dbpedia中,我选择一些标签以“A”开头的页面。在这里,我使用额外的过滤器,按主题缩小设置范围。在原始版本中还有另一个条件(结果集要大得多)

前缀skos:
前缀purl:
前缀rdfs:
前缀:
前缀dc:
前缀dbr:
选择不同的
?页面类型
哪里
{ 
{
?页面rdfs:标签?标签。
?页面a?页面类型。
页
}
过滤器(strstarts(str(?pageType),'http://dbpedia.org/ontology') )
}
限制1000

在这里,我只选择页面类型来澄清问题的其余部分。 这是整套的。现在我想排除一些页面。不包括所有代理人(人员、组织等):

前缀skos:
前缀purl:
前缀rdfs:
前缀:
前缀dc:
前缀dbr:
选择不同的
?页面类型
哪里
{ 
{
?页面rdfs:标签?标签。
?页面a?页面类型。
页
减{第a页dbo:Agent}
}
过滤器(strstarts(str(?pageType),'http://dbpedia.org/ontology') )
}
限制1000

嗯。然后我想排除更多的类型,例如书面工作。我尝试了不同的方法,但没有找到正确的方法

这将不返回任何内容:

WHERE
{ 
   {
       ?page rdfs:label ?label .
       ?page a ?pageType .
       ?page <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:Banking> .

       MINUS { ?page a dbo:Agent }
       MINUS { ?page a dbo:WrittenWork }

   }
在哪里
{ 
{
?页面rdfs:标签?标签。
?页面a?页面类型。
页
减{第a页dbo:Agent}
减{第a页dbo:writenwork}
}
这就像没有设置过滤器一样:

WHERE
{ 
   {
       ?page rdfs:label ?label .
       ?page a ?pageType .
       ?page <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:Banking> .

       MINUS { ?page a dbo:Agent, dbo:WrittenWork }
   }
在哪里
{ 
{
?页面rdfs:标签?标签。
?页面a?页面类型。
页
减{第a页dbo:Agent,dbo:writenwork}
}
问题是:
我应该如何排除某些类型(直接和超类)的页面?

看起来这是一个有效的答案(如何排除多种类型)


在本例中,所有dbo:Agents、db:Places、dbo:Works都将被过滤掉。

减去{page a dbo:Agent}
替换为
过滤器不存在{page a dbo:Agent}
也可以工作。是的,它适用于单一类型排除。在我的情况下,它没有帮助
WHERE
{ 
   {
       ?page rdfs:label ?label .
       ?page a ?pageType .
       ?page <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:Banking> .

       MINUS { ?page a dbo:Agent }
       MINUS { ?page a dbo:WrittenWork }

   }
WHERE
{ 
   {
       ?page rdfs:label ?label .
       ?page a ?pageType .
       ?page <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:Banking> .

       MINUS { ?page a dbo:Agent, dbo:WrittenWork }
   }
  {
       ?page purl:subject ?id .
       ?page a ?pageType .

       FILTER NOT EXISTS {
        ?page a/rdfs:subClassOf* ?skipClasses .
        FILTER(?skipClasses in (dbo:Agent, dbo:Place, dbo:Work))
       }

   }