1

わかりました、この質問のタイトルを見つけるのは難しいです...申し訳ありません...私は私の問題をよりよく説明しようとします!

グラフとオントロジーがあります。Person、Animal、Book などの何百ものモデルがあり、それらのいずれにもいくつかの深さを持つプロパティがあります。

<Person1>  <hasName>    <Luca>
<Person1>  <hasAddress> <Address1>
<Address1> <hasStreet>  "Some street"

「モデル」とは、OWL/RDF クラスとプロパティのコレクションを意味することに注意してください。例では、モデル「人」にはクラス「人」と「住所」が含まれています。

私がやりたいことは、1 つのクエリでモデル インスタンス全体を取得することです...「get('Person1')」のように

例としてFreebaseについて考えてみましょう。Freebase には、いくつかのタイプ (私がモデルと呼ぶもの) のトピック (モデルのインスタンス) があり、トピックはクラスと、他のクラス (メディエーター) を参照する可能性のあるいくつかのプロパティによって完全に記述されています... Web ページにアクセスすると、 freebase トピックの場合、モデル全体を見ることができます。

オントロジーではモデルを定義できませんが、モデルを他のファイルで定義し、RDF から JSON、Ruby/Python オブジェクトまで、あらゆる形式で利用できます。

実際、この問題の解決方法がわかりません...JSONまたはRuby objのモデルを含むファイルを使用して、特定のモデルのSPARQLクエリを自動的に作成することを考えましたが、一度に多くのモデルを取得する必要がある場合、これはクレイジーに思えます同時に..それは本当に遅いと思います...(私は200の異なるモデルのようなものを持っています..)

私の問題を解決する「純粋な」SPARQL の方法はありますか、それともモデルごとに特定のクエリを作成する必要がありますか?

助けてくれてありがとう!

ルカ

4

2 に答える 2

3

基本的にあなたが探しているのはSPARQLコンストラクトクエリです。したがって、関連するRDFを取得したい場合http://example.org/Person1は、簡単な説明を行うことができます。

describe <http://example.org/Person1>

これにより、に関するグラフが返されますhttp://example.org/Person1。そのグラフに正確に含まれているのは、実際にはRDFデータベース次第です。仕様は、簡潔な説明など、特定の解釈を課していません。しかし、多くの場合、結果はあなたの目的にとって十分な情報になります。

ただし、そうでない場合は、次のように構成クエリを使用できます。

construct { <http://example.org/Person1> ?p ?o . ?p rdfs:label ?l } 
where {
  <http://example.org/Person1> ?p ?o.
  ?p rdfs:label ?l.
}

http://example.org/Person1これで、件名とそれが保持するプロパティのラベルが含まれるすべてのトリプルが取得されます。に関する情報を返す際に、必要に応じて複雑になる可能性がありますhttp://example.org/Person1

との関係の任意のレベルが必要な場合は、 CBDまたは同様の戦略を自分でhttp://example.org/Person1実装することを検討する必要があります。これは非常に単純な実装であり、そのルートに進む必要がある場合はおそらく100LOCのみです。

于 2013-01-31T13:15:31.587 に答える
0

Freebase Topic API のようなことをしたい場合は、データをキー/値のデータストアに入れることを検討する必要があります。

Redis を使用して RDF データに対してトピックごとのクエリを実行しているSeevlからのこのブログ投稿を確認してください。

それ以外の場合は、スキーマに関する知識と、そのエンティティの適切なスナップショットを取得するために展開する必要があるプロパティ (個人の住所など) に基づいて、トピックごとにカスタム SPARQL クエリを作成する必要があります。

于 2013-01-31T00:41:10.543 に答える