問題タブ [inference-engine]
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 - 内部ルールに従ってマッチングセットを計算する推論エンジン
属性を持つオブジェクトのセットと、オブジェクトのセットに適用されると、それらのオブジェクトのサブセットを提供する一連のルールがあります。これを理解しやすくするために、具体的な例を示します。
私のオブジェクトは人であり、それぞれに3つの属性があります。出身国、性別、年齢層です(すべての属性は個別です)。「米国のすべての男性」のように、このより大きなオブジェクトのセットのサブセットに対応する一連のルールがあります。
ルールから人のサブセットにマッピングできる既存のJava「推論エンジン」または同様のもの、または自分で作成する方法についてのアドバイスを探しています。ルールエンジンについて読んだことがありますが、その用語はビジネスルールを外部化するエキスパートシステムにのみ使用されているようで、通常、高度な形式の推論は含まれていません。これが私が対処しなければならないより複雑なシナリオのいくつかの例です:
ルールの接続詞が必要です。したがって、「すべての男性を含める」と「10〜20歳のグループのすべての米国人を除外する」の両方が提示された場合、私は米国外の男性と、米国内の10〜20歳以外の男性にのみ関心があります。 20歳のグループ。
ルールの優先順位は異なる場合があります(明示的に定義されています)。したがって、「すべての男性を除外する」というルールは、「すべての米国の男性を含める」というルールを上書きします。
ルールが競合している可能性があります。したがって、「すべての男性を含める」と「すべての男性を除外する」の両方を設定することができます。その場合、優先順位によって問題を解決する必要があります。
ルールは対称的です。したがって、「すべての男性を含める」は「すべての女性を除外する」と同じです。
ルール(またはサブセット)には、メタルール(明示的に定義されている)が関連付けられている場合があります。これらのメタルールは、元のルールが適用される場合、または推論によってサブセットに到達する場合に適用する必要があります。したがって、「米国を除外する」というメタルールが「すべての男性を含める」というルールに関連付けられており、エンジンに「すべての女性を除外する」というルールを提供すると、「すべての女性を除外する」サブセットを推測できるはずです。 「すべての男性を含める」サブセットと同等であるため、「米国を除外する」ルールを追加で適用します。
私はおそらく項目5なしで生きることができますが、言及されている他のすべてのプロパティが必要です。ルールとオブジェクトの両方がデータベースに保存されており、いつでも更新される可能性があるため、必要に応じて「推論エンジン」をインスタンス化し、後で破棄する必要があります。
.net - Prolog のような推論エンジンを .NET アプリケーションに埋め込むにはどうすればよいですか?
特定の種類のドメイン ロジックは、C# オブジェクトよりも Prolog 述語を使用してより自然に表現されます。このようなドメインの一例は、家族関係を表すことです。
Prolog のような推論エンジンを .NET アプリケーションに埋め込む方法はありますか? 推論を使用してドメインを駆動し、アプリケーションの残りの部分では従来の OO を使用するとよいでしょう。
xml - OWL 推論が期待した結果をもたらさないのはなぜですか?
セマンティック Web の皆さん、こんにちは。
以下の OWL コードを推論した後、 NamedIndividual <rdf:type rdf:resource='#Tsunami'>
: instance_Dromen にあるとは思いません。どういうわけか #Huis と #Auto の間の分断性に何か問題があるのでしょうか、それとも正しい方法で補数を使用していないのでしょうか? 推論の結果、NamedIndividual: instance_Dromen には次の出力があります。
--
推論器の入力として使用する OWL コードは次のとおりです。
誰かが私を助けてくれることを願っています。
前もって感謝します。
よろしく、 Martijn van der Plaat
rdf - OWLでExcluded Byを使用する
親愛なるセマンティック Web 関係者へ
私は、OWL で「除外対象」構造をどのように定義できるか自問自答しています。今のところ、私が考えることができる唯一の解決策は、disjointWith を使用することです。「除外」の意味は、コード例に示されています。House オブジェクトは、Roof、Wall、Windows、および Floor の交差点です。したがって、これらのクラスのいずれかが欠落した場合、その個人はハウスにはなりません。しかし、特定の共通部分の欠落しているクラスが true になる可能性があるため、推論者は推論をさらに進めます。一方、House クラスは Tsunami クラスと disjointWith の関係にあります。私の個人が津波クラスであるとき、私は私の個人が決してハウスクラスにならないことを直接知っています. これは、「除外者」について話すときに期待する動作です。でも、もしかしたら、これについて別の意見を持っている人もいるのでは?
よろしく、 Martijn van der Plaat
java - Jena API を使用した基本的な RDFS 推論
現在、Jena API 推論チュートリアルに従っています。
https://jena.apache.org/documentation/inference/
私の理解度をテストするための演習として、最初の例を書き直したいと思います。これは、プログラムで構築されたモデルからの単純な RDFS 推論を示しています。
同じことを行うものに、代わりにこの Turtle ファイルから読み取ったモデルを使用します (これは上記の私自身の翻訳であるため、バグがある可能性があります)。
このコードで:
これは正しいアプローチではないようです (特に、q
プロパティの抽出が正しくないのではないかと思います)。私は何を間違っていますか?
database - Prolog でのデータ管理のベスト プラクティス
私は Prolog を使用して、最も単純な形式のデータ (事実) 以上を処理することに取り組んでおり、経験豊富な Prologers からのガイダンスを探しています...
データや事実を動的に管理したい場合、次のようないくつかの主要な選択肢があります。
- オレゴン州プロローグでデータをアサーションとして管理
- オレゴン州プロローグからのデータベースへのインターフェース
- おそらく両方の組み合わせ
Prolog で事実をアサーションとして管理する場合、それらの事実を表現する最善の方法についても質問があります。person
名、姓、年齢を持つ who があるとします。私はそれを次のように断言できます:
または、人の属性が何であるかについて暗黙の仮定を持っています。
人を何か他のものと関連付けたい場合、人の鍵が本当に必要です。したがって、私は人を次のように主張する傾向があるかもしれません:
もちろん、今は Prolog アサーションをリレーショナル データベース テーブル エントリのように見せています。そして、私は間違ったアプローチを取り、事実の表現を過度に複雑にしているのではないかと思います.
本当に、私の質問は次のとおりです。Prolog で中規模から複雑なデータを管理する際に考慮すべきベスト プラクティスはありますか? 命名規則はその小さな側面です。Prolog の assert/retract のような部分が非効率的であることを読みました。したがって、外部 SQL データベースと Prolog のみの表現に頼る場合など、データ編成自体にどのようにアプローチするかについても疑問に思っています。
補遺
リレーショナル データベースで行われているように、レコードにキーを使用することは、リレーショナル データベースがそれらを使用するまさにその理由から望ましいと思います。つまり、キーを維持する必要があります。ケースごとに Prolog でこれを手動で (明示的に) 行うのは面倒なようですが、一般的にはどのように行われますか? それとも私の仮定は正しいですか?
rdf - RDF 推論エンジン アプリケーション
私は RDF や推論エンジンなどについてほとんど知りませんが、アルゴリズム ソリューションの代わりに推論エンジンを使用するのに適したアプリケーションを探しています。
あるグラフを別のグラフに変換するという、私が考えているようなことを行うことができる既存の例があるかどうかを知りたいです。
基本的に、入力として有向グラフがあります。エッジは関係です。推移的なものもあれば、そうでないものもあります。このグラフは、システムの望ましい状態を表します。
出力は、そのシステムを望ましい状態にするための設定と指示を与える有向グラフになります。簡単な例として、おそらく出力は結婚披露宴の座席表であり、入力は誰が誰と仲が良いか、誰が誰かの元妻であるかなどであり、誰かを同時に着席させないというルールがあります。元妻との食卓。
グラフは RDF トリプルのように見えます。これは推論エンジンを使用できるようなものですか?
android - Android での文法ベースのルールと推論の定義
ソースから情報を収集し、特定のルールに基づいて情報を分類する必要があります。入力はテキストファイルです。例: 「Raj はチョコレートを食べるのが大好きです。Rohan は花が好きです。Ravi はとても人気があります。」
これまでに学んだことから、名詞句、動詞などに基づいてテキストにタグを付けることができます。したがって、最初にテキストにタグを付ける予定です。今、私は次のようなルールを定義したいと思います:
「love*」の後に名詞句がある場合は、リストにチョコレートを追加します。同様に、"like*" の後に名詞句が表示される場合は、花をリストに追加します。
ここで、分類のために、チョコレートと花のクラスと個体を定義する RDF を作成します。
ここでの私の質問は 1. Android で文法ベースのルールを定義するにはどうすればよいですか? 2. 名詞句を取得した後、それらの名詞を RDF で定義されているアイテムのクラスに分類するにはどうすればよいですか?
ありがとう。
sparql - SPIN ルールを使用して匿名スーパークラスを推測する
クラス階層と、それ自体でうまく機能するいくつかのルールを持つ TopBraidComposer でオントロジーを構築しています。私のオントロジーでは、クラス レベルで作業しているため、作成するすべての定義は、個人ではなくクラスにのみ関連しています。ここで、次のようなサブクラス定義を推論したいと思います。
仕事をしているように見える次のSPARQLクエリを試しました:
次に、このクエリを SPIN ルールとして owl:Thing クラスに次のように追加しました。
Enter キーを押すと、次の形式に自動的に変換されます。
合理的に見えますが、推論プロセスを開始すると、テスト ルールを追加する前のように終了しなくなりました。推論を強制停止すると、目的のトリプルが Test クラスに何度も追加されていることがわかります。
SPIN で匿名スーパークラスを推論するにはどうすればよいですか?
編集:
回避策は、制限をクラスにバインドすることです。ロジックは機能しているように見えますが、匿名のスーパークラスのようには表示されません。TBCでもProtegeでもありません。