Olá pessoal.
Preciso fazer um trabalho na facul onde gero um arquivo pelo Prolog e devo ler esse arquivo utilizando Java, criando uma interface para mostrar o resultado e tals.
Até aí tudo bem, só que o código base em prolog que a Prof. passou é esse:
pai_de(joao,ana).
pai_de(joao,joaquim).
pai_de(joao,vitor).
pai_de(joaquim,pedro).
pai_de(pedro,luiza).
pai_de(pedro,carla).
pai_de(pedro,julia).
irmao_de(X,Y) :- pai_de(Z,X), pai_de(Z,Y), X \= Y.
cria(ARQ) :- irmao_de(ana,Y),
tell(ARQ),
write('<PARENTE>'), nl,
write(' <PESSOA>'), write('ana'), write('</PESSOA>'), nl,
write(' <IRMAO>'), write(Y), write('</IRMAO>'), nl,
write('</PARENTE>'), nl,
flush,
tell(user).
Minha idéia é gerar o arquivo no formato XML, que torna bem mais fácil a leitura dele pelo java. Ele cria o arquivo tranquilo, porém, como vocês podem ver o XML precisa de um nó raiz que não seja repetido e no exemplo acima, a tag "
<PARENTE>
<PESSOA> ana</PESSOA>
<IRMAO> joaquim</IRMAO>
</PARENTE>
<PARENTE>
<PESSOA> ana</PESSOA>
<IRMAO> pedro</IRMAO>
</PARENTE>
<PARENTE>
<PESSOA> ana</PESSOA>
<IRMAO> vitor</IRMAO>
</PARENTE>
O problema é, como gerar esse nó principal no Prolog?
tentei fazer assim:cria(ARQ) :-
tell(ARQ),
write('<NoPrincipal>'),
irmao_de(ana,Y),
write('<PARENTE>'), nl,
write(' <PESSOA>'), write('ana'), write('</PESSOA>'), nl,
write(' <IRMAO>'), write(Y), write('</IRMAO>'), nl,
write('</PARENTE>'), nl,
write('</NoPrincipal>'),
flush,
tell(user).
Porém não funciona, ele coloca "" ao final de cada busca. Se eu coloco esse mesmo trecho após o Flush, também não funciona.
Qqr sugestão fico grato.
Estou usando o Amzi! Prolog como Compilador.