0

英語のラベルが付いていないすべてのリソースを選択しようとしています。問題は、別のタグ セレクターでフィルター処理すると、英語のラベルが存在しないことが保証されないことです。はFILTER NOT EXISTS特定のプロパティに対してのみ機能するようですが、言語セレクターとの組み合わせでは機能しないようです。英語のラベルが付いていないリソースを選択するにはどうすればよいですか?

4

1 に答える 1

2

このような:b英語ラベルのないデータの場合、

@prefix : <http://example.org/> .
:a :label "foo"@en .
:b :label "bar"@fr .
:c :label "baz"@en, "baz"@fr .

:b英語のラベルがない唯一のリソースであるため、次のようなクエリは only を返します。

prefix : <http://example.org/>
select * where { 
  ?x :label ?label .                           # find xs that do have a label
  filter not exists {                          # but for which no label in 
    ?x :label ?enLabel .                       # English exists
    filter(langMatches(lang(?enLabel),"en"))   
  }
}

Jena のsparqlコマンド ライン ツールを使用した結果は次のとおりです。

$ sparql --data data.n3 --query query.rq
-----------------
| x  | label    |
=================
| :b | "bar"@fr |
-----------------
于 2013-10-22T17:12:55.307 に答える