[Resolved]Print result with prolog rules

Hi guys, I’m making Prolog rules.This rule

personaPartecipaudienza(X,Y) :- 
  propertyAssertion('http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#partecipa',X,Y).

prints these individuals

?- avvocatoPartecipaudienza(X,'http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#Udienza1').
X = 'http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#AttoreA' ;
X = 'http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#AvvocatoA' ;
X = 'http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#AvvocatoB' ;
X = 'http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#CancelliereA' ;
X = 'http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#Catello_Maresca' ;
X = 'http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#ConvenutoA' ;
X = 'http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#Ufficiale_GiudiziarioA' ;

How could I print only AvvocatoA and AvvocatoB? thank you very much

This should get you headed in the right direction.

item('http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#AttoreA').
item('http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#AvvocatoA').
item('http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#AvvocatoB').
item('http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#CancelliereA').
item('http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#Catello_Maresca').
item('http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#ConvenutoA').
item('http://www.semanticweb.org/luigi/ontologies/2020/2/untitled-ontology-11#Ufficiale_GiudiziarioA').
select(A) :-
    item(Atom),
    atomic_list_concat([_,A],'#',Atom),
    atom_concat('Avvocato', _, A).

Example run.

?- select(A).
A = 'AvvocatoA' ;
A = 'AvvocatoB' ;
false.

HTH

1 Like

See also portray/1. That is really designed for this purpose. The semantic web library provides library(semweb/rf_portray) for this.

1 Like

One trick with portray/1 is to wrap it like this:

user:portray(Term) :-
    E = error(_, _),            % avoid trapping abort, timeout, etc.
    catch(my_portray(Term),
          E,
          format('EXCEPTION:portray(~q) ~q', [Term, E])).

my_portray(some_term(A)) :- ...

where can I find examples of functors?