2016-05-12 2 views
2

私はリテラルとして設定している値で値が設定されたSPARQLクエリを作成します。SPARQLでリテラルを選択しますか?

SELECT 'A', 'B', attribute 
FROM 
    TABLE 

は、次のようになりますテーブルを返します:私は何をしたいか

A | B | attribute 
-------|---------|-------------- 
    A | B | Mary 
    A | B | has 
    A | B | a 
    A | B | little 
    A | B | lamb 

はtriplestore内のすべてのオブジェクトの種類を取得するには、このようなクエリを実行します

select distinct ?o ("class" as ?item_type) 
where { 
    ?s rdf:type ?o. 
} 

そして、(理想的には)すべての異なる述語値を引き出す2番目のクエリとの結合(理想的には)

私は私が私の検索結果 - に注入したいリテラルITEM_TYPEを指定することはできませんを意味し、where句を追加で

item   | item_type  
-----------------|----------------- 
a_thing   | class 
another_thing | class 
a_relation  | predicate 
another_relation | predicate 

しかし、SPARQLでのUNIONはリンクのみ:の

結果は、次のようになりますセット。

+0

あなたは(件名として "オブジェクト"?) ''意味しますか?それはまだそれを言っているやや奇妙な方法です。たぶんあなたは '(item_typeとして' 'class")と '?item_typeとして' '("述語 ")と言っていますか? – scotthenninger

+0

はい、それを置くのがよりクリーンな方法です。私は改正するつもりです。 –

答えて

4

私は次は何をしたいあなたを得るべきであると思う:

SELECT DISTINCT ?item ?item_type 
WHERE { 
    { ?s a ?item . 
    BIND("class" AS ?item_type) 
    } 
    UNION 
    { ?s ?item ?o 
    BIND("predicate" AS ?item_type) 
    } 

}

+0

ああ、そんなに縛られているのは大丈夫だよね。 –

関連する問題