問題タブ [reasoning]
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.
jena - jena は 2 つのデータセットを推論し、結果として新しいエンティティを追加します
jena クエリ ソリューション (たとえばsol1: user=u1, location=loc1, LocationType=type1
) に結果バインディングがあり、データセットを使用して、一連の jena ルールを使用して結果バインディングを拡張したいと考えています。実際、sol1があり
loc1 location:ispartof loc2
loc2 rdf:type loc2Type
、データセットにあるため、この新しいソリューションを結果セットに追加したいと思います:
sol2: user1=u1, location=loc2, locationType=loc2Type
そのためには、ソリューション セットをデータセットに追加し、
@prefix pre: <http://jena.hpl.hp.com/prefix#>.
[rule1: (?sol pre:user ?a) (?sol pre:location ?b) (?sol pre:lcationType ?c) (?b location:ispartof ?d) (?d rdf:type ?type) -> (sol2 pre:user ?a) (sol2 pre:location ?d) (sol2 pre:locationType ?type) ]
上記のルールに基づいて推論を行うようなルールを作成する必要があります。その後、データセットからすべてのソリューションを抽出するには、データセットをクエリする必要があります
@prefix pre: <http://jena.hpl.hp.com/prefix#>.
select * WHERE {?sol pre:user ?a. ?sol pre:location ?b. ?sol pre:lcationType ?c.}
今私の問題は
1) 2 つのデータセットに共鳴ルールを記述して、ソリューションを大きなデータセットに追加しないようにする方法はありますか?
2)ルールの結果で新しいソリューションごとに個別に名前を付ける方法は?
ありがとう。
type-inference - クラス レベルの OWL 交差点
次のようなクラス階層があります。
クラス C は ClassA と ClassB の両方のサブクラスですが、ClassD と ClassE は ClassA または ClassB のサブクラスにすぎません
ここで、ClassA と ClassB のサブクラスの交差に相当するクラスを指定したいと思います。以下は機能しません。
その理由は、この種の規則が個人を分類するために推論者によって使用されるためです。つまり、タイプ ClassA および ClassB の個人 Ind1 があった場合、タイプ NamedClass にも分類されます。これは私が欲しいものではありません。ClassC 自体を NamedClass のサブクラスにしたい。
これはルール (SPIN など) を使用して達成できることはわかっていますが、ルールなしで実行できますか?
jena - イエナの推論: 結論に新しいリソースを動的に追加する
これまで見てきたことから、すべての Jena 推論ルールは次の形式になっています。
これは、結論に新しいリソースを追加できないことを意味します。私が必要としているのは、ルールの結論で動的に名前を付けて新しいリソースを追加することです。誰かが私に解決策を教えてもらえますか?
protege - SWRL ルール内の選言
Protege 4.3 を使用して、いくつかの SWRL ルールを作成しています。その中に選言を含むルールを書くことは可能ですか?例えば:
10歳未満または30歳以上のすべての人を意味します
reasoning - SWRL ルール内の等しい命令が機能しない
Protege 4.3 を使用して、いくつかの SWRL ルールを作成しています。
「name」というプロパティを持つ「Person」というクラスが 1 つあります。
クラスから異なる名前の個人を作成しましたが、一部の名前は同じです。
「sameName」というプロパティのインスタンスを作成して、同じ名前を持つ人々をバインドするルールを書きたいと思います。そこで、次のルールを書きました。
ルールは正しい結果をもたらしましたが、すべての人を自分自身と比較することを意味しますが、すべての人を自分自身と比較することを意味します。
結果は空でした。私は何か見落としてますか?
database - Neo4J データベースで Jena reasoner を使用する
ここに書くのは初めてですが、私は本当に問題にぶつかっています.すでにデータで満たされたNeo4JのようなNo-SQLデータベースでJena推論を使用することは可能ですか?
一連のトリプルを表す Neo4J のグラフがあり、それらに対して Jena API と Jena reasoner を使用したいと考えています。Jena の SDB/TDB コンポーネントを使用することを考えましたが、実際にモデルにデータをロードする方法がわかりません。SDB コンポーネントは SQL データベースだけで動作するようであり、TDB javadoc 全体の処理は少し難しいようです。過度に。TDB モデルにも何らかの構成ファイルを定義する必要がありますか?
助けてくれてどうもありがとう。
java - Jena は rdfs:Resource が owl:DatatypeProperty の範囲内にあると推測します。なんで?
rdfs:range に何らかの XMLSchema データ型を持つプロパティがある場合、Jena reasoner (私の場合は OWL_MEM_RULE_INF 仕様) は rdfs:Resource をその範囲に自動的に追加します。何故ですか?そのプロパティの値として文字通り何でも使用できるということではないでしょうか?
例えば:
クエリ:
出力:
inference - トリプル ストアへのステートメントの挿入
Virtuoso、Stardog、4store、Allegrograph、Oracle11g などのトリプル ストアでのステートメントの挿入と削除について質問があります。
新しいステートメントを挿入するとき、推論されたステートメントをストアに挿入しますか、それともすべてのクエリ実行で推論を使用して推論されたステートメントを取得しますか? ステートメントを削除するときと同じ質問ですが、推論されたステートメントは削除されますか?
jena - Jena reasoner は、infModel からステートメントを削除します
カスタムルールを使用して jena reasoner を実行するオントロジーがあります。ここで、infModel を更新してモデルが大きくなった場合 (メモリの問題により)、モデルに新しいデータ (実験結果) を追加し、古いデータを削除したいと考えています。
データを OntModel に追加するだけで、推論ユニットが結論を infModel に追加するだけなので、データの追加はそれほど問題ではありません。
「結果」を削除することは、私にとってもっと問題です。それらを infModel から削除する必要があります。現時点では、「結果」が含まれるすべてのステートメントを削除するだけです。このアプローチは非常に遅いです。削除されたすべてのステートメントは、InfModel の変更の可能性についての推論をトリガーするようです。私の例では、多くのステートメントの一部である「結果」を削除すると、最初の推論の最大 12 倍の時間がかかる場合があります。
ここで可能な解決策が見つかった場合: Toggle Jena Reasoner
私の質問は次のとおりです:推論なしで2番目のモデルを作成せずに、変更をinfModelに再バインドしない解決策はありますか? または、推論を一度だけトリガーする infModel からデータを削除する別の方法はありますか?