2016-12-26 26 views
1

前に前に働いていたthis scriptを再利用しようとすると、それは今のエラーを与える:SPARQL:「DBpediaのフクロウ」での未定義の名前空間接頭辞

Virtuoso 37000 Error SP030: SPARQL compiler, line 5: Undefined namespace prefix at 'dbpedia-owl' before 'dbpedia-owl:SportsTeam' 

とスクリプト自体:

select ?a ?b ?super (?aLength + ?bLength as ?length) 
{ 
    values (?a ?b) { (dbpedia-owl:Person dbpedia-owl:SportsTeam) } 

    { select ?a ?super (count(?mid) as ?aLength) { 
     ?a rdfs:subClassOf* ?mid . 
     ?mid rdfs:subClassOf+ ?super . 
    } 
    group by ?a ?super 
    } 
    { select ?b ?super (count(?mid) as ?bLength) { 
     ?b rdfs:subClassOf* ?mid . 
     ?mid rdfs:subClassOf+ ?super . 
    } 
    group by ?b ?super 
    } 
} 
order by ?length 
limit 1 

それを更新する方法はありますか?

+2

DBpedia virtuosoインスタンスのプレフィックス宣言が変更されました。これは 'dbpedia-owl'の' dbo' isnteadです。いずれにしても、SPARQLクエリを自己完結型にするには、常にプレフィックス宣言を追加します。 – AKSW

答えて

1

名前空間dbpedia-owlprefixed namespace in DBPediaではありません。

名前空間のURLが分かっている場合は、SPARQLクエリの前にPREFIX dbpedia-owl: <NAMESPACE_URL>を使用できます。しかし、DBpediaのリソース定義がPersonSportsTeamの場合は、dbpedia-owlではなく、おそらくdboを使用してください。

+0

ありがとうございました。実際には「dbo」です。あなたがそれを修正したら、あなたの答えを受け入れる。 – Daniel

3

dbpedia-owl:は現在はpredefined namespace prefix on DBPediaではありません。それはdbo:に置き換えられました。

物事が立っているように、あなたがdbo:にクエリ内dbpedia-owl:のすべてのインスタンスを変更したり、クエリの先頭にこれを追加するか -

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 

後者が推奨されます。

は、最良の結果を得るために、あなたはは常に代わりに、このようなサーバー側の事前定義に依存するので、あなたのSPARQLPREFIX宣言を含める必要があります。これにより、名前空間の事前定義が(この場合のように)削除されるか、新しいURLに変更されると問題が回避され、クエリ結果に予期しない影響を及ぼす可能性があります。

+0

は私のために働いた!本当にありがとう – vgarzom

関連する問題