静的 RDFS-Plus 推論エンジンを作成しています。
含まれているすべての構成要素に対して適切な推論を行う関数を作成しました。たとえば、この関数に triple が渡された場合C1 rdf:subClassOf C2
、フォーム のトリプル内のすべての X に対して、フォームX rdf:type C1
の新しいトリプルX rdf:type C2
が生成されます。
私が苦労しているのは、考えられるすべての推論を行う方法を見つけることです。苦労は、推論に基づいて推論をしなければならないという事実から来ています。
これが私のプログラムのどこにいるかです:
1. Parse a `.ttl` file and assert all the triples into a data store.
2. Separate out the triples that represent RDFS-Plus constructs into a list.
3. ??? (make all possible inferences somehow)
私が確実に機能すると確信している唯一のアイデアは、RDFS-Plus リストのすべての順列を生成し (リストのリストを与える)、各内部リストに対して私の推論関数をマップすることです。これは非常に非効率的であるため、役に立たない解決策です。
私の推論関数は、考えられるすべての推論を生成するのに十分ですか?それとも不毛な道をたどったのでしょうか? ルールの依存関係グラフを作成するのに十分な準備はできていますか? モデリング構造が別の構造に依存する可能性があるかどうかを計算する方法がわかりません。たとえば、owl:FunctionalProperty
依存する可能性がありますrdfs:subClassOf
か、これは意味不明ですか?
いくつかの洞察をいただければ幸いです。