1

ユーザーが (Web アプリ経由で) 製品購入にタグを付けることができるアプリケーションを開発しています。

タグを使用して、DBPedia (FreeBase などの他のオープン データ ソースの可能性があります) に自動的にクエリを実行する予定です。

DBPEdia から返された上位N 個の結果がユーザーに表示され、ユーザーは入力したタグに最も近いものを選択します。(特定のデータのみを抽出します)。

例:
ユーザーがタグ「iPhone」を入力すると、SparSQL クエリが DBPedia に送信されます。結果が解析され、各結果に関するいくつかのデータがユーザーに表示されます。ユーザーは、購入したものに最も近いものを選択します。

ユーザーが選択した DBpedia の結果からデータの一部を抽出し、後の段階でマーケティング目的で保存したいと考えています。(理想的には、API への呼び出しを介して)

Bigdata か Protege OWL のどちらかを考えていましたが、どちらも使用した経験がありません

このタスクと利点/欠点/学習曲線などに最適なツールを提案できる人はいますか?

ありがとう

4

2 に答える 2

2

それはすべて、抽出したデータで何をしたいかによって異なります。最も簡単なオプションは、調整されたエンティティ URI を他のデータと共にリレーショナル データベースまたは NoSQL データベースに保存することです。これにより、後でそのエンティティの Freebase と DBpedia を簡単にクエリできます。

Freebase と DBpedia からエンティティについて「知っておくべきことすべて」を取得したい場合は、トリプル ストアを使用する方がよいでしょう。このアプローチでは、すべてのデータをローカルでクエリできます。しかし今、あなたはそれを更新し続けることを心配しなければなりません.

于 2012-08-01T18:42:36.240 に答える
1

あなたが念頭に置いている種類のことについては、高度にスケーラブルなトリプルストア ソリューションが必ずしも必要だとは思いません。さらに重要なのは、SPARQL クエリの実行、結果の処理、および RDF データの迅速なローカル キャッシュを簡単に実行できるツールキットがあることです。

これらのことを念頭に置いて、OpenRDF Sesameをご覧になることをお勧めします。これは、複数のストレージ バックエンドをサポートする RDF および SPARQL を操作するための Java ツールキットおよび API です。必要なものに対して適切に機能する組み込みのストアがいくつかあります (単一のストアで約 1 億のファクトまでスケーリングします)。より大規模で優れたストレージ ソリューションが必要な場合は、BigData や OWLIM などのストアが最適です。 Sesame 独自のストレージ バックエンドを簡単に置き換えるだけなので、コードに大きな変更を加えることなく切り替えることができます。

次のコード行では、Sesame を使用して DBPedia に対して SPARQL クエリを実行し、結果を処理しています。

  SPARQLRepository dbpediaEndpoint = new SPARQLRepository("http://dbpedia.org/sparql");
  dbpediaEndpoint.initialize();
  RepositoryConnection conn = dbpediaEndpoint.getConnection();
  try {
     String queryString = " SELECT ?x WHERE { ?x a foaf:Person } LIMIT 10";
     TupleQuery query = conn.prepareTupleQuery(Querylanguage.SPARQL, queryString);
     TupleQueryResult result = query.evaluate(); 

     while(result.hasNext()) {
        // and so on and so forth, see sesame manual/javadocs 
        // for details and examples
     }
  }
  finally {
    conn.close();
  }

(開示:私はゴマに取り組んでいます)

于 2012-07-31T23:34:18.043 に答える