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