チャレンジ
私のトリプルストアには、リソースタイプがEメールです。その電子メールタイプのリソースには、送信者と1人以上の受信者が割り当てられています。
「A->B」という表記を「Aは電子メールの送信者であり、Bは受信者の1人である」と定義します。
ここで、次のことを知りたいと思います。AさんがBさんにメールを送信した回数は?AとBの役割が重要であることに注意してください。つまり、A->BはB->Aとは異なります。
不正な形式のSPARQLクエリ
利用可能なすべてのペアリングについてこの質問に答えるために、私はこのSPARQL(1.1)クエリを作成しました。
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX email: <http://example.com/schema/for/email/>
SELECT ?sender ?recipient (COUNT(?sender ?recipient) AS ?count)
WHERE {
?sender rdf:type foaf:Person.
?recipient rdf:type foaf:Person.
?e rdf:type email:Email.
?e email:sender ?sender.
?e email:recipient ?recipient.
}
GROUP BY ?sender ?recipient
これは機能しません。AllegroGraphはエラーを表示しますMALFORMED QUERY: Line 5, Found ?recipient (of type varname)
-5行目がSELECT句です。SELECTやGROUPBY句を変更して、他のいくつかのバリアントを試しましたが、成功しませんでした。
複数のリソースでの集計が許可されているかどうかわかりません。SPARQL 1.1のドキュメントと関連するSOの質問(SPARQLでのカウント)では、1つのリソースに基づく集計のみが見つかりました。
最後に、私の質問です。送信者と受信者を集約することは可能ですか?