pyDatalogを使用して、さまざまな機能の依存関係が満たされているかどうかを判断しようとしています。一部のライブラリ (lA、lB、...) は、機能 (fX、fY、...) に必要な出力 (1、2、...) を提供します。
例えば:
+has("lA", 1) #Library A has output 1
+has("lA", 2) #Library A has output 2
+has("lB", 2) #Library B has output 2
+needs("fX", 1) #Feature X needs output 1
+needs("fX", 2) #Feature X needs output 2
+needs("fY", 2) #Feature Y needs output 2
pyDatalog グラフ チュートリアルを使用すると、機能に必要な出力を少なくとも 1 つ提供するライブラリを見つけることができます。
lib_supports_feature(X, Z) <= has(X, Y) & needs(Z, Y)
lib_supports_feature(X,"fX")
これは [('lA',), ('lB',)] を返します。機能へのパスが少なくとも 1 つあるライブラリを見つけているだけだからです。
pyDatalog を使用して、その機能のすべてのニーズを満たすライブラリのみを返す良い方法はありますか?