2

AllegroGraph と Sparql 1.1 を使用しています。

列で昇順ソートを行い、最後に空の値を返すように Sparql クエリを作成する必要があります。

サンプルデータ:

<http://mydomain.com/person1> <http://mydomain.com/name> "John"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral>
<http://mydomain.com/person1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person>

<http://mydomain.com/person2> <http://mydomain.com/name> "Abraham"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral>
<http://mydomain.com/person2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person>

<http://mydomain.com/person3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person>

ここでは、Abraham を返すために Sparql が必要です。その後に、name 属性を持たない John と person3 が続きます。

私が使用するクエリ:

select ?name ?person {
  ?person <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person>.
  optional {?person  <http://mydomain.com/name> ?name.}
  } order by asc(?name )

現在の出力は person3 (null) で、その後に Abraham と John が続きます。 ここに画像の説明を入力 考えを教えてください。

4

1 に答える 1

5

手元に AllegroGraph はありませんが、私の知る限り、複数の注文条件をサポートしています。

select ?name ?person {
  ?person <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person> .
  optional {?person  <http://mydomain.com/name> ?name . }
} order by (!bound(?name)) asc(str(?name))

最初の条件は、バインドされているかどうかに基づいてソートされ?name、この条件で違いが見つからない場合は、2 番目の条件が使用されます。比較がサポートされているデータ型str()に変換するために を使用することに注意してください。rdf:XMLLiteral

.( ntriples データの各行の最後に追加することもできます。)

于 2013-04-29T08:46:28.780 に答える