問題タブ [jena-rules]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 推論を介して Apache Jena の名前空間間のマッピングを達成するにはどうすればよいですか?
ゴール:
データ移行の一般的なタスクを実行するために、オントロジー間のルール ベースのマッピングを実現したくありません。
目標を達成する方法:
これを実現するために、任意のデータ型の xml 表現によって提供されるすべての情報を格納できる抽象データ構造を開発しました。次に、対象となるドキュメント タイプの定義からオントロジーを構築するパーサーを作成しました。ここで、最初にabstractDatatype名前空間に関連付けられているデータを読み取るときに、それをaSと呼びましょう。対象となるデータ構造は名前空間tSにあります。
問題:
そのようなルールを介して、名前が同じで名前空間が異なる2つのリソース間の型の公平性を表現しようとすると:
推論者はそれを取得しません。ルールに誤りがある可能性があります。これは、次のように解釈する必要があります: aS とは異なる名前空間 tS にマップされた同じ型名がある場合、aS のすべての個体はtSでも同じ型を取得します 。もう 1 つの問題は、これがタイプの個人がいない場合、そのようなルールは機能しない可能性があり、そのように表現するだけでは不十分かもしれないと言われました. ほぼ代わりに、すべての組み合わせ間のマッピングを行う SubClassOf ルールを作成することもできますが、それではモデルに多くの汚れが生じるため、より一般的なものにする代わりに、さらに多くのフィルタリング条件を追加できるようにしたいと考えています。
ただし、誰かがルールベースのオントロジー マッピングの経験がある場合は、洞察を得ることができて非常に嬉しく思います。
以下は、マッピングが機能しない問題を示す Java 単体テストです。
sparql - 理由の後にJena TDBを更新します
私は Jena を使用しており、新しいオントロジーを自分の tdb に更新したいと考えています。例えば。オントロジーに 100 行あります。いくつかのルールを追加して推論を実行すると、現在 105 行あります。そして、tdb でこれらの 5 つの追加行を更新する必要があります。どうすればこれを行うことができますか?
私はそれをググってみましたが、2つの方法が見つかりました。1 つは sparql を使用して を更新し、もう 1 つは tdb を切り捨てて新しいモデルを追加します。
他に良い解決策はありますか?
ありがとうございます
--
コード
繰り返しますが、私の問題は、tdb への新しい「infmodel」をどのように処理するかです。新しい事実だけを更新したい。
これは、tdb からモデルを取得する方法です。
java - 関数を作成し、Jena Rule から呼び出す
ノード間でいくつかの計算を実行する関数を作成しました。この関数を Jena ルールから呼び出したいですか? これは可能ですか?組み込み関数は jena ルールから呼び出すことができることがわかりましたが、独自の関数を呼び出したいと考えています。組み込み関数を作成するにはどうすればよいですか?
rdf - オントロジーの検証のための Jena ルール
オントロジーを検証し、何かが間違っている場合はエラーをスローしたいと考えています。
私がしなければならないほとんどの検証は次のようになります: 私はこのようなクラスを持っています:
(興味深い部分は 2 番目の subClassOf です。) Protege では、これは を意味しExampleClass is subClass of myProperty exactly 1 OtherClass
ます。
したがって、値を持つ myProperty が 1 つだけ存在することを検証したいと思います。タイプが OtherClass の個体です。
このようなルールを検証することは可能ですか? このモデリングを使用してすべてのクラスに対してこれを行うルールがあれば完璧です (また、少なくとも 1 つ、正確に 2 つ、...)
別の質問は次のとおりです。まさに私のためにそれを行っている、すぐに使える閉じた世界の推論者はいますか?
java - ジェネリック ルール推論を使用した Jena のルールの出力なし
Protege でオントロジーを作成し、そのオントロジーを Jena を使用して Eclipse にインポートしました。ルール ファイルにルールを記述し、ルールの出力を Jena に表示したいのですが、出力が表示されません。プログラムはエラーなしで実行されています。オントロジーの詳細は、
シング
チルドレン
- 0-12ヶ月
- 1-3年
- 4-7年
- 7-12年
おもちゃ
- バイク
- ビルディングブロック
- 人形
- スケート
- ぬいぐるみ
1 つのデータ型プロパティ playWith ドメインの子と範囲を追加しました逆が playBy であるおもちゃ
- 0-12Months の Jhon インスタンス
- 1-3Years の mary インスタンス
- 4-7Years の sam インスタンス
- 7-12Years の smith インスタンス
- Stuffed_toy の teddy インスタンスは、プロパティ playWith を stuffed_toys teddy のインスタンスとして使用して、0-12Months クラスのインスタンスを割り当てるためのルールを記述しました
コードは次のとおりです。
RDF/xml コードは
ルール実行の出力が欲しいのですが、children クラスのすべてのステートメントが印刷されないので、何日も苦労している解決策を見つけてください。
私の質問に時間を割いてくれてありがとう 質問を適切な形式で入れていなくてごめんなさい。私は更新しましたエラーを教えてください私は子供のオントロジーを使用し、推論を使用してルールのセットを考案することにより、年齢層に基づいて子供が好きなおもちゃを予測するためのパーソナライズを行いたいです解決策を見つけるのを手伝ってください.
java - Jena ルールを OntModel に追加する方法
文字列として送信された Jena ルールを以下のメソッドに追加しようとしています。ただし、E://1_1_1 に書き込まれたオントロジーに新しい変更がないことを確認できるため、ルールは追加されていません。これを行う方法を教えてください。関連する可能性のある SO に関するその他の質問は26292160、349652です。どちらも私の場合と似ています。
ルール自体は、
がオブジェクト プロパティであり、が個体であり、ルール文字列の「:」に必要な接頭辞が付い[ r1: (?x :objProp1 :ind_x) -> (?x :objProp2 :ind_y) ]
た形式です。objProp
ind_x
ind_y
java - Jena RDF Inf Modelでノード値から個体名を取得する方法
Jena Graph から個人の名前を抽出する際に問題に直面しています (一般的なルールの Reasoner を使用した RDF 推論モデルと OntSpec は RDFS_MEM_RDFS_INF です)。単純なケースかもしれませんが、これを行うための適切なチュートリアルをオンラインで見つけることができません (jena ルールの新機能)。この場合に呼び出す適切な API は何ですか?
Jena ルール ファイルには次のルールがあります。
個人の名前に関して ?x の値が必要です