2009-07-29 9 views
0

Мне было интересно, удалось ли кому-либо воспользоваться «листингом». команда в JPL для изучения содержимого базы знаний Prolog? JPL требует, чтобы вы строили запросы и возвращали решения на основе переменных, которые вы задали в запросе. Например (Java):Вызов функции перечисления в jpl

Query q = new Query("holdsAt((X,Y) = true, 3)"); 
while (q.hasMoreSolutions()){ 
    Hashtable s = q.nextSolution(); 
    System.out.println(s.get("X")+", "+s.get("Y")); 
} 

Я не могу видеть, как это будет работать для включения/0, или даже листинг/1, который требует проиллюстрированный ввода. На данный момент я играю с кодом формы

predicate_property(L,interpreted), 
\+ predicate_property(L, built_in), 
\+ predicate_property(L,imported_from(_)), 
current_predicate(X, L), current_predicate(X/Z). 

, который возвращает для функции существующей в базе знаний:

myFunction:- 
    myGoal1, 
    myGoal2. 

ответ:

L = myFunction(_G403,_G404), 
X = myFunction, 
Z = 2 

Но это не достаточно поскольку ни одна из целей не возвращается. Я предполагаю, что мне нужно (если функция листинга не может быть вызвана с помощью JPL), это функция, которая возвращает в качестве переменной заголовок предиката вместе со списком соответствующих целей, которые должны быть выполнены. К сожалению, я не знаком с внутренними функциями функции листинга, поэтому я не уверен, как это сделать.

Заранее спасибо

ответ

0

У меня есть функция, которая работает на некоторое время, но я обеспокоен тем, что он менее эффективен, чем «листинг» называют

getClauses(Y):- 
    predicate_property(L,interpreted), 
    \+ predicate_property(L, built_in), 
    \+ predicate_property(L,imported_from(_)), 
    current_predicate(X, L), 
    current_predicate(X/Z), 
    findall((L, T), clause(L, T), Y). 

, который возвращает для предиката существующих в базе знаний:

myPredicate:- 
    myGoal1, 
    myGoal2. 

результат:

?- getClauses(Y). 
Y = [ (myPredicate, myGoal1, myGoal2)] 

Обратите внимание, что это не будет работать для предикатов, которые были импортированы из других модулей.

+0

Последующие действия: Оказывается, находка чрезмерна. – Huguenot

 Смежные вопросы

  • Нет связанных вопросов^_^