2017-02-08 14 views
0

Dbpediaグラフの任意の2つのノードの間にパス長があるかどうかを調べる必要があります。この時点では、開始ノードと終了ノードだけがわかっており、接続されたプロパティパスはわかりません。私はビデオビデオゲーム間の経路の長さを見つけたい。ここ基底のプロパティパスを知らないで、Dbpediaグラフネットワークの2つのノード間のパス長を見つけよう

PREFIX dbo:<http://dbpedia.org/ontology/> 
PREFIX dbp:<http://dbpedia.org/property/> 

select dbp:Video dbo:VideoGame (count(?mid) as ?length) 
where { 
    dbp:Video (<>|!<>)* ?mid . 
    ?mid (<>|!<>)+ dbo:VideoGame . 
} 
group by dbp:Video dbo:VideoGame 

:ようなので、私は、SPARQLクエリを記述しようとしています。しかし、それはのようなエラーを与えています:

syntax error at 'dbo:VideoGame' before '}'

誰かが正しいものを書くのを助けることができますか?

答えて

2

エラーメッセージが誤っている可能性があります。私が見る1つの問題は、定数だけを選択することはできず、変数だけです。あなたは、変数にそれらを回すために、いくつかのバインド・ステートメントを試すことができます。

PREFIX dbo:<http://dbpedia.org/ontology/> 
PREFIX dbp:<http://dbpedia.org/property/> 

select ?vid ?vidGame (count(?mid) as ?length) 
where { 
    BIND(dbp:Video AS ?vid) 
    BIND(dbo:VideoGame AS ?vidGame) 
    ?vid (<>|!<>)* ?mid . 
    ?mid (<>|!<>)+ ?vidGame . 
} 
group by ?vid ?vidGame 
+0

は、今では別のエラーを与えている: **のVirtuoso 42000エラーTN ...:推移の一時メモリ内の1000000000のバイトを超えています。検索を制限したり、プールを増やすには、t_distinct、t_max、またはそれ以上のT_MAX_memoryオプションを使用してください。** –

+0

https://dbpedia.org/sparqlからこのクエリを実行しようとすると、エラーが発生します。** Virtuoso 37000 Error SP031 :SPARQLコンパイラ:戻り値のリストに '*'が含まれていますが、パターンには変数**が含まれていません。誰も助けることができますか? –

+0

LIMITを使用して、バイト数の上限を超えないようにすることができます。 Virtuosoエラーに関しては、ベンダーに確認してください。 – scotthenninger

関連する問題