2017-04-18 16 views
0

私は2つのグラフを持っていますが、リテラルにはタグなし(@de)のタグはありません。私は2人の間の結合が必要です。フィルタ付きの簡単な解法は非常に遅く実行されます。布石で動作異なる言語コードのリテラルの検索

改良版は私は?lu :xx (str(?lem)) .試み

WHERE { 
?tok nlp:lemma ?lem . 
Bind (str(?lem) as ?lems) . 
?lu :orthForm ?lems . 
... 

であるが、これはエラーとしてフラグが立てられます。どうして? 同様に、value ?lems {str(?lem)}.

を使用すると、バインドがあまりオーバーヘッドを生成しないと仮定しているので、上記の解決策はおそらくo.kです。

は、言語コードがmy previous question

+0

最初の例はありません。 FILTERが奇妙に見える、またはあなたは本当にその被写体と被写体を同じにしたいですか? – AKSW

答えて

1

トリプルパターンに許さ唯一異なる場合は検索するための同じアプローチの仕事は、(オブジェクト内の)変数、のURI、リテラルとbnodesあるでしょう。したがって、パターン?lu :xx (str(?lem))の代わりに、変数を文字列に変換するにはBINDまたは投影法を使用する必要があります。私はあなたがvalue ?lems {str(?lem)}VALUESステートメントを使用しようとしていると仮定し

SELECT (str(?langLem) AS ?lem) 
WHERE { 
    ?lu :xx ?langLem . 
} 

WHERE { 
    ?lu :xx ?langLem . 
    BIND(str(?langLem) AS ?lem) 
} 

または、投影を使用して:最初の例を取ります。 VALUESは通常例えば、値のセットに変数をバインドするために使用される。:

VALUES ?lem { :Euclid :Gauss } 
?lem rdfs:label ?label . 

... :Euclid:Gauss?lemを結合し、クエリを実行し、結果の和集合を返します。私。

{ :Euclid rdfs:label ?label } 
UNION 
{ :Gauss rdfs:label ?label } 
関連する問題