1
dbpediaでは、「A」で始まるラベルのあるページをいくつか選択します。ここでは、対象を絞り込んで追加のフィルターを使用しています。元のバージョンでは、他の条件は、(結果セットがはるかに大きい)sparql複数の型階層を除外
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX purl: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <http://dbpedia.org/page/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT DISTINCT
?pageType
WHERE
{
{
?page rdfs:label ?label .
?page a ?pageType .
?page <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:Banking> .
}
FILTER (strstarts(str(?pageType), 'http://dbpedia.org/ontology'))
}
LIMIT 1000
は、ここで私は質問の残りの部分と明確にするだけのページの種類を選択があります。 これは全体のセットです。今私はいくつかのページを除外したい。
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX purl: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <http://dbpedia.org/page/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT DISTINCT
?pageType
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 }
}
FILTER (strstarts(str(?pageType), 'http://dbpedia.org/ontology'))
}
LIMIT 1000
OK:すべてのエージェント(人、組織など)を除外します。次に、より多くのタイプ、たとえばWritten_Workを除外したいと思います。私はさまざまなアプローチを試みましたが、正しいアプローチを見つけることができませんでした。
これは何も返しません:
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 }
}
質問です: 私は直接(特定の種類のページを除外するために行くべき道とスーパークラス)?
'MINUS {?page a dbo:エージェント}'を 'FILTER NOT EXISTS {?page a dbo:エージェント} 'に置き換えることもできます。 – AndyS
はい、シングルタイプ除外のために機能します。私の場合は助けにならない – Chpokeridze