2011-10-25 4 views
6

誰かが私にヒントを与えるかもしれません。同じオントロジーに属する2つの概念/クラス間の距離を測定することは可能ですか?RDF/OWLグラフのクラス間の距離の測定

たとえば、 天文学クラスとTelescopeクラスのオントロジーがあるとします。両方の間にリンクがありますが、直接リンクではありません。天文学にはScienceと呼ばれる親クラスがあり、TelescopeにはInstrumentationという親に属するOptical Instrumentという親クラスがあります。これは、経験的科学と呼ばれるクラスに関連し、最終的にScienceというクラスに属します。

テレスコープと天文学の間には間接的なつながりがあり、別のクラスから始まる1つのクラスに到達するために必要なステップ数を知りたい。

この質問を解決する簡単なSPARQLクエリはありますか?あるいは、その仕事をするより良い方法がありますか?あるいは、セマンティックWebのパラダイムを使ってそれを見つけることはできませんか?

ヒントは非常に高く評価されます。

答えて

4

私の理解では、SPARQLには任意の長さの間接リンクを測定するための再帰的構造は含まれていません。あなたができる最良の方法は、2つの概念間の特定の距離を調べるために、一連のクエリを準備することです。distance_1(a, b)distance_2(a, b) ...

もう1つの方法は、非SPARQLテクノロジを使用してこの情報を検出することです(たとえば、RDFlibを使用してPythonでグラフトラバースアルゴリズムを作成するなど)。

5

SPARQLでは、グラフ内の任意の長さのパスを検索できますが、そのパスの長さを示すメカニズムはありません。

だからあなたのような何かを行うことができます:あなたが代替案、制限されたカーディナリティなどを行うことができますので、構文は非常に正規表現のようなものです

SELECT * WHERE { ?s ex:property+ ?o } 

を明示的に使用すると、クラスや彼らについて話していることを述べたので

2

同じオントロジ内にあるので、それらが常に接続されていると仮定することは安全です(最終的にどちらも "問題"のサブクラスになるためです)。一方、括弧(Class1 - > ... - > Thing < - ... < - Class2)で言及されたパスは自明なものなので、既存の2つのクラス間のパス、言い換えれば、2つの頂点間の既存のパスのすべて。本当?または最短経路をお探しですか?その点であなたの質問はあまり明確ではありませんが、それを明確にすることはできますか?

私が知る限り、クラス間のすべてのパスまたは最短パスをリストする単純なSPARQL構文はありません。しかし、いくつかのセマンティックWebのトリプルストアは、このような幅優先探索や深さ優先探索-検索などのグラフトラバーサルアルゴリズムが付属して、を参照してください。

またのソースコードを見つけることができます非常に便利な次のプロジェクト:

関連する問題