問題タブ [pydatalog]

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.

0 投票する
1 に答える
934 参照

logic-programming - ファイル内のデータログプログラムをpyDatalogにロードする

pyDatalog.load()メソッドを使用して小さなpyDatalogプログラムをロードしようとしています。たとえば、https: //sites.google.com/site/pydatalog/から階乗サンプルを読み込んでいます

ファイルsample_datalog_program.dlには、次のものが含まれています。

私は何が間違っているのですか?行pyDatalog.load(mc)を次の4つのコメント付き行に置き換えると、正常に機能します。

私が得るエラーは次のとおりです。

ありがとうございました!

0 投票する
1 に答える
294 参照

logic-programming - pyDatalog: カスタム述語でバインドされていない変数を処理する

私は、Weather Underground からの気象データを分析する pyDatalog プログラムを作成しています (現時点では、私自身と社内の他の人のためのデモとして)。開始時間と終了時間の間の読み取り値を返すカスタム述語リゾルバーを作成しました。

これは、t1 と t2 が特定の値にバインドされている場合にうまく機能します。

ただし、別の順序で条件を指定して goodTime ルールを宣言すると (つまり、timeBetween を解決しようとする時点で Y と Z がバインドされていない場合)、空のセットが返されます。

これは間違っているようです。2 つのクエリは同じ結果セットを返すはずです。

私の質問は、pyDatalog でこの状況を処理する方法があるかどうかです。必要なことは、 timeBetween 述語がエンジンに何らかの方法で後退し、これを試す前に最初に他のルールを解決しようとするように指示できることだと思いますが、ドキュメントでこれへの参照が見当たりません。

0 投票する
1 に答える
194 参照

logic-programming - 制約ストアに pyDatalog を使用する

次のルールを考慮してください。

そして、満たす制約を見つける問題: a(X,1)

問題は、pyDatalog を使用してリスト [(X==1)] を作成できますか? または [(X>0), (X==1)]?

ありがとう、

0 投票する
1 に答える
326 参照

logic-programming - PyDatalog: 回答の値のリスト

PyDatalog では、次のアサーションを定義しました。

そして、A から D に到達する方法があるかどうかをデータベースに問い合わせたいと思います。次のコードは、方法がある場合は set([()]) に応答し、ない場合は None に応答するため、機能するはずです。しかし、Zのさまざまな評価の結果は得られません。たとえば、ABCDなどのルートも知りたいです。

バインドされていない値を試してみましたが、最初の反復の結果しか得られません。

問題は、最初の繰り返しで P しかかからないことだと思います。または、集計関数を使用する必要がありますか? concat の使い方がよくわかりません...

前もって感謝します。

0 投票する
1 に答える
304 参照

logic-programming - pyDatalog で関係を作成すると、間違った答えが得られるように見えるのはなぜですか?

私は Datalog の概念に慣れていないので、pyDatalog を通じて調査しています。単位測定コンバーターを試しています。したがって、たとえば、1 メートルが何インチであるかという事実が与えられた場合、1 インチが何メートルであるかを教えてくれるはずです。これまでの私のコードは次のとおりです。

プログラムがインチをメートルに正しく変換しないのはなぜですか? 1 メートルが 39.37 インチであることを確認し、逆数規則を適用して逆に変換します。したがって、0.0234 と出力されるはずですが、実際には出力されます。

0 投票する
1 に答える
743 参照

pydatalog - pyDatalog でのブール演算子の使用

演算子を使用して pyDatalog で述語を作成しようとしましたが、flammable ==[X] の定義が無効のようです:

また、pyDataLog 述語に比較演算子を含めようとしましたが、これも機能しませんでした。

これらの比較演算子と否定演算子を pyDatalog 述語に含めることは可能ですか?

0 投票する
2 に答える
361 参照

python - PyDatalog との論理和

私は書くことができないようです (疑似コード): X==True および Y==True または Y==False のすべての X,Y に対して X および Y を出力します。

目標は、次のようなものを書くことです。

代わりに、これは前のコマンドが返したものを正確に出力します。

これどうやってするの?

0 投票する
1 に答える
536 参照

python - pyDatalog で解決するディペンデンシー グラフ

私は、より読みやすく、宣言的なプログラムを書くよう努めています。そこで、現在使用している単純なアルゴリズムを実装することにしました。手続き型の実装は次のとおりです。

  1. コマンドとリソースがあります
  2. 各コマンドは、複数のリソースを提供および要求できます
  3. アルゴリズムはすべてのコマンドをループし、すべての要件が提供されているコマンドをスケジュールします。
  4. コマンドが提供するすべてのリソースが提供されるようになりました
  5. すべてのコマンドがスケジュールされていれば完了です
  6. コマンドが残っている場合、依存関係を満たすことができず、アルゴリズムの反復のために新しいコマンドをスケジュールできません。

したがって、私が思いついたデータログの亜種は見栄えが良いですが、2 つの問題があります。

  1. 違います
  2. 結果を読み取るにはループが必要です

完全なソースはここにあります

それは仮説に依存し、pytest で簡単に実行できます。

失敗したテストの下: 以前の「ランク」または順序によって提供されたリソースが必要な場合。見つからない。フォローを再帰的にしようとしましたが、単純な例でも失敗します。

私の質問:

  1. 間違ったツールを使用していますか?
  2. 包括的なデータログのハウツーを知っている人はいますか?
  3. 上記の問題を実際にどのように解決しますか?

編集:

  1. all() や exists() などの量指定子がありません。これを pyDatalog で表現するにはどうすればよいですか?
0 投票する
1 に答える
1573 参照

python - Dealing with multiple Python versions?

I have a problem with my Pip version. I am trying out to install the pyDatalog package, which isn't supported by Anaconda.

In my Ubuntu, I have two versions of Python (2.7 and Anaconda with 3.5). For Python 2.7 I don't even know whether or not Pip is installed.

How can I have two different versions of Pip for different versions of Python on one computer? Can I use one version of Pip for both version of Python?