<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Visual Interface for Drawing ASP Programs</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Onofrio Febbraro</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kristian Reale</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Francesco Ricca</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dipartimento di Matematica, Universita` della Calabria</institution>
          ,
          <addr-line>87030 Rende</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Answer Set Programming (ASP) is a purely declarative logic programming paradigm proposed in the area of non-monotonic reasoning and logic programming. In the last few years, a rich set of tools for ASP-program development were proposed, including editors and debuggers. However, the task of designing a logic program consists of writing text files (more or less computerassisted). In this paper we present a system that allows for drawing an ASPprogram on the screen. The user does not have to edit text files or know the details of a specific ASP dialect, since our approach offers a fully graphic environment, inspired by QBE editors, for designing ASP programs.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        Answer Set Programming (ASP) is a declarative programming paradigm which has
been proposed in the area of non-monotonic reasoning and logic programming. The
idea of ASP is to represent a given computational problem by a logic program whose
answer sets correspond to solutions, and then use a solver to find such a solution [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
The language of ASP is expressive (it is able to express all problems belonging to the
complexity classes Σ2P and Π2P , under brave and cautious reasoning, respectively [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]);
furthermore, the availability of some efficient ASP systems [
        <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
        ] made ASP a powerful
tool for developing advanced knowledge-based applications [
        <xref ref-type="bibr" rid="ref5 ref6 ref7">5–7</xref>
        ].
      </p>
      <p>
        In order to facilitate the design of ASP applications, a rich set of tools for
ASPprogram development were proposed in the last few years, including editors [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ] and
debuggers [
        <xref ref-type="bibr" rid="ref10 ref11 ref12">10–12</xref>
        ]. However, the task of designing a logic program consists of writing
text files (more or less computer-assisted). Although the basic syntax of ASP is not
particularly difficult, writing ASP programs might be uncomfortable for novices and
error-prone; moreover, programmers often have to know the details of a specific ASP
input dialect. To face with a similar problem in the field of databases, a number of tools
and graphical user interfaces were proposed [
        <xref ref-type="bibr" rid="ref13 ref14 ref15 ref16">13–16</xref>
        ] starting from the 70s for
facilitating the specification of queries. Today many commercial and free relational database
query tools offer fully graphical Query By Example (QBE) interfaces for facilitating
the end approach of users to systems and languages. The practical relevance of graphic
tools is now well-recognized: a QBE interface is, indeed, the default in the user-oriented
Microsoft Access.
      </p>
      <p>However ASP still lacks this kind of tools, which might serve for reducing the
difficulty of producing ASP programs for both novice and unexperienced programmers,
and easing the encoding tasks for experts that prefer graphic tools.</p>
      <p>
        In this paper we present Visual ASP, a system that allows for drawing an
ASPprogram on the screen. The user does not have to edit text files, or know the details of a
specific ASP dialect, but he can exploit a fully graphic environment, inspired by QBE
editors, for designing ASP programs. Currently, the system is able to load and store
ASP programs in the syntax of the state-of-the-art ASP system DLV [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] , and supports
all the main language extensions (i.e. disjunction, aggregates and constraints).
2
      </p>
      <p>Visual ASP
In the following paragraphs we show how to use Visual ASP by exploiting an example.
Example Program. We consider the well-known Hamiltonian Path problem: Given a
finite directed graph G = (V, A) and a node a ∈ V of this graph, does there exist a
path in G starting at a and passing through each node in V exactly once? This is a
classical NP-complete problem in graph theory. Suppose that the graph G is specified
by using facts over predicates vtx (unary) and edge (binary), and the starting node a is
specified by the predicate start (unary). The following program solves the problem:
The disjunctive rule (r1) guesses a subset S of the arcs to be in the path, while the rest
of the program checks whether S constitutes a Hamiltonian Path. Here, an auxiliary
predicate reached is defined, which specifies the set of nodes which are reached from
the starting node. In the checking part, the first two constraints (namely, r4 and r5)
ensure that the set of arcs S selected by inPath meets the following requirements, which
any Hamiltonian Path must satisfy: (i) a vertex must have at most one incoming edge,
and (ii) a vertex must have at most one outgoing edge. The third constraint enforces that
all nodes in the graph are reached from the starting node in the subgraph induced by S.
System Usage. We now show how to employ Visual ASP for drawing that solution on
the computer’s screen. Note that, the system supports many different ways of creating
and modifying rules and constraints. For respecting the space constraints, we report
only one of the possible combination of commands and shortcuts that can be exploited
for designing a program solving the considered problem;1 however, the application can
be tried by downloading it from http://www.mat.unical.it/ricca/programgui.html. We
start by adding the input predicates: vtx and edge. More in detail, to add a predicate
to the program (see Figure 1a) click on the Program menu, select New Predicate. A
dialog will ask for the name of the predicate to be inserted, and after specifying the
required information and confirming the command, a new predicate icon appears on the
left panel (labelled Program). In the panel placed in the bottom-right (labelled Entity
Details) one can specify the arity of the predicate (currently selected in the program
1 Note also that the example program reported here only contains non-ground rules and facts;
but, if needed, the interface also allows for writing ground rules.</p>
      <p>
        Fig. 1. Creating a program with Visual ASP.
panel) by adding a number of attributes.The system allows for specifying a name for
each attribute, and a type. This additional information is very useful during the editing
phase, since it allows for rapidly identifying and joining attributes. The result of the
insertion of predicates vtx, start and edge having attributes with labels is depicted in
Figure 1b. Now we insert the disjunctive rule r1 by selecting ”New Disjunctive Rule”
on the Program menu. The system opens a dialog window used to specify the head of
the rule (see Figure 1b), and adds this new rule in the panel on the left. Then, one can
specify its body by dragging predicates from the Program panel to a specific area in
the Body Graph panel (which is situated on the top-right part of the interface). In our
example, (see Figure 1c) we drag the edge predicate in the body graph corresponding
to our disjunctive rule; a box representing the just added body predicate appears and by
clicking on the Link button a pop-up menu allows for rapidly joining body and head (see
in Figure 1d). The creation of rule r2 is a bit more involved, since its body contains two
literals sharing variables. We insert a new rule by selecting on the Program menu the
New Rule; and, we name its head predicate reached; after that we drag in the body panel
inP ath and reached (note that this definition is recursive). Then, we join the two body
literals by selecting both of them (this is done by clicking on the corresponding boxes
in the body panel while pressing the shift key) and clicking on the join icon that appears
on the top left of the selected boxes (see Figure 1e). After that, the system will show
a dialog window where one can setup the join. The details of the join are reported in
the Body Details panel (see Figure 1f), where the joined attributes can further modified.
As before, we properly link head and body attributes, in this case by acting on the
link button corresponding to the second attribute of inP ath. We continue our example
by specifying the constraints. To create the constraint defined by the rule r4 we select
New Constraint from the Program menu. The constraint, having a “forbidden” icon,
appears on the Program panel. The body of constraints can be specified in the same
way as the body of rules i.e. by dragging predicates from the Program panel. In our
case we drag vtx and inP ath. To aggregate the information contained in the predicate
inP ath we select that predicate and, with a right-click, we click on Aggregate and select
Count from a drop-down menu. The result, shown in Figure 1g, is the specification of
that new constraint. Note that, in the BodyDetails panel, an aggregate-specific box
allows for setting guards, local variables etc. At this point we repeat a similar procedure
to insert the remaining rule and constraint. The entire graphical representation of our
program solving the Hamiltonian Path is reported in Figure 1h. Note that, the program
panel offers a sort of outline, listing on a tree-shaped view predicates and rules defining
them. An alternative view of the program, merely reporting the list of its rules, can be
displayed by clicking on the tab ”Rules” placed on the top of the panel. In order to
test our program we specify an instance of the problem by adding some fact. More in
detail, to add facts to a predicate (e.g. edge), we select Facts of edge on the P rogram
panel, and add the facts in the table shown in the EntityDetails panel (see Figure 1h).
Finally, to execute the program, we set up a Run Configuration where we can specify
the path of the solver that we want to use. Currently we support the DLV system only.
To open the Run Configuration we select Run from the menu Execute. Answer sets
are reported on a user-friendly output form exploiting a tree-shaped list of models, and
the output is shown in tabular form on the right. Basically, it is sufficient to select a
predicate leaf in the answer-sets tree to display the corresponding table on the right part
of the form (predicate inP ath of the first answer set is selected, see Figure 1i).
Some Implementation Detail. Logic programs are internally represented by suitable
Data Structures that are exploited by the GUI. Input programs are loaded in the system
by the Parser module, which creates a representation of logic rules according to the
internal data structures. The output of the system is produced by the Output Builder
module, which can either write the designed program in a file or feed it as input of an
ASP solver. The output of the ASP solver is then represented on the screen in a
userfriendly interface. The system has been implemented in Java. In particular, the GUI is
based on the JGraph (http://www.jgraph.com/) library, and the system is
currently able to handle programs in DLV format. The system features a flexible design for
all its modules, based on the composite, strategy and builder design patters [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ],
conceived for being extended for supporting other language features, dialects and systems.
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>Related Work and Conclusion</title>
      <p>
        In this paper, we presented a graphical interface for designing ASP programs, that is
able to support all the powerful language constructs of ASP, like disjunction, recursion,
unstratified negation, constraints, and aggregates. In the literature different formalisms
were proposed that use a visual approach to logic programming. The articles [
        <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
        ]
describe a visual logic programming language based on a topological diagrammatic
notation which combines Venn/Euler-like diagrams and DAGs (directed acyclic graphs).
This formalism allows to represent, by basic syntactic elements (square boxes, rounded
boxes, circles, arrows, lines) the constructs used in logic programming, including
function symbols. Comparing the approach of [
        <xref ref-type="bibr" rid="ref20 ref21">20, 21</xref>
        ] with the one proposed in this paper
we note that the latter does not directly support aggregates that are widely used in real
applications. Moreover our visual interface recalls the very well known and widely
adopted QBE formalism for relational databases, and thus it has a clear advantage in
familiarity with a large community that already uses this kind of visual languages.
Concerning other systems that feature a full graphic tool for creating logic programs, we
mention OntoDLV [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] and OntoStudio (http://www.ontoprise.de) that allow for
specifying conjunctive queries and rules respectively and are strongly dependent on the
features of the underlying logic-based ontology language; contrarily, Visual ASP supports
all the major language features of ASP, and can be easily extended to support other
languages (including OntoDLP). A practical advantage of Visual ASP is its similarity with
the well-known QBE editors, that makes it more familiar for developers accustomed to
database tools. As far as future work is concerned, we plan to extend our system by
adding a reverse-rengineering tool (allowing for seamless editing of programs in both
text and graphical form); and by including advanced error checking, debugging tools
and rewring procedures in order to optimize the programs self. We plan also to enrich
the interface with other advanced tools for improving search and visualization of logic
entities. An interesting task to develop can be also the possibility of executing the
programs in other solvers; the Run Configuration, for example, already allows for setting a
different solver, and we planned to develop some other solver-specific output builders.
An assessment of Visual ASP in a logic programming course of our University is also
planned for verifying its applicability for teaching ASP.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Lifschitz</surname>
          </string-name>
          , V.:
          <article-title>Answer Set Planning</article-title>
          .
          <source>Proc. of the ICLP'99</source>
          ,
          <string-name>
            <surname>Las</surname>
            <given-names>Cruces</given-names>
          </string-name>
          , New Mexico, USA, The MIT Press (
          <year>November 1999</year>
          )
          <fpage>23</fpage>
          -
          <lpage>37</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Eiter</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gottlob</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mannila</surname>
          </string-name>
          , H.:
          <article-title>Disjunctive Datalog</article-title>
          .
          <source>ACM Transactions on Database Systems</source>
          <volume>22</volume>
          (
          <issue>3</issue>
          ) (
          <year>September 1997</year>
          )
          <fpage>364</fpage>
          -
          <lpage>418</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Gebser</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Namasivayam</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neumann</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schaub</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          , Truszczyn´ ski,
          <string-name>
            <surname>M.:</surname>
          </string-name>
          <article-title>The First Answer Set Programming System Competition</article-title>
          .
          <source>Proc. of the LPNMR</source>
          <year>2007</year>
          .,
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Denecher</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vennekens</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bond</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gebser</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , Truszczyn´ ski,
          <string-name>
            <surname>M.:</surname>
          </string-name>
          <article-title>The Second Answer Set Programming Competition</article-title>
          .
          <source>Proc. of the LPNMR</source>
          <year>2009</year>
          .,
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Baral</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Knowledge Representation, Reasoning and Declarative Problem Solving</article-title>
          . Cambridge University Press (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Lobo</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Minker</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rajasekar</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Foundations of Disjunctive Logic Programming</article-title>
          . The MIT Press, Cambridge, Massachusetts (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Grasso</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Iiritano</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Some DLV Applications for Knowledge Management</article-title>
          .
          <source>: Proc. of the LPNMR 2009</source>
          . Vol.
          <volume>5753</volume>
          of LNCS, Springer (
          <year>2009</year>
          )
          <fpage>591</fpage>
          -
          <lpage>597</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Perri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Terracina</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cianni</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Veltri</surname>
            ,
            <given-names>P.:</given-names>
          </string-name>
          <article-title>An integrated graphic tool for developing and testing DLV programs</article-title>
          .
          <source>Proc. of the SEA'07</source>
          . (
          <year>2007</year>
          )
          <fpage>86</fpage>
          -
          <lpage>100</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Sureshkumar</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vos</surname>
            ,
            <given-names>M.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brain</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fitch</surname>
            ,
            <given-names>J.: APE</given-names>
          </string-name>
          :
          <article-title>An AnsProlog* Environment</article-title>
          .
          <source>Proc. of the SEA'07</source>
          . (
          <year>2007</year>
          )
          <fpage>101</fpage>
          -
          <lpage>115</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Brain</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gebser</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Puhrer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schaub</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tompits</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Woltran</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>That is Illogical Captain! The Debugging Support Tool spock for Answer-Set Programs: System Description</article-title>
          .
          <source>Proc. of the SEA'07</source>
          . (
          <year>2007</year>
          )
          <fpage>71</fpage>
          -
          <lpage>85</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Brain</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De Vos</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>Debugging Logic Programs under the Answer Set Semantics</article-title>
          .
          <source>: Proc. ASP05</source>
          , Bath,
          <string-name>
            <surname>UK</surname>
          </string-name>
          (
          <year>July 2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>El-Khatib</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pontelli</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Son</surname>
          </string-name>
          , T.C.
          <article-title>: Justification and debugging of answer set programs in ASP. : Proc. of the IWAD, California</article-title>
          , USA, ACM (
          <year>September 2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Young</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shneiderman</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>A Graphical Filter/Flow Representation of Boolean Queries: A Prototype Implementation and Evaluation</article-title>
          . HCI Lab. &amp; Dep. of Computer Science (
          <year>1993</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Proper</surname>
            ,
            <given-names>H.A.</given-names>
          </string-name>
          :
          <article-title>Interactive Query Formulation using Query by Navigation</article-title>
          .
          <source>Asymetrix Research Report 94-4</source>
          , Asymetrix Research Laboratory (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Polyviou</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Evripidou</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.S.:</surname>
          </string-name>
          <article-title>Query by Browsing: A Visual Query Language Based on the Relational Model and the Desktop User Interface Paradigm</article-title>
          ., University of Cyprus (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Santucci</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sottile</surname>
            ,
            <given-names>P.A.</given-names>
          </string-name>
          :
          <article-title>Query by Diagram: a Visual Environment for Querying Databases</article-title>
          ., Dip. di Informatica e Sistemistica,
          <source>Universita´ di Roma 0La Sapienza0</source>
          (
          <year>1993</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pfeifer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Faber</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eiter</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gottlob</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scarcello</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>The DLV System for Knowledge Representation and Reasoning</article-title>
          .
          <source>ACM TCL 7</source>
          (
          <issue>3</issue>
          )
          <issue>(</issue>
          <year>July 2006</year>
          )
          <fpage>499</fpage>
          -
          <lpage>562</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Gamma</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Helm</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Johnson, R.,
          <string-name>
            <surname>Vlissides</surname>
          </string-name>
          , J.:
          <article-title>Design patterns: elements of reusable object-oriented software</article-title>
          .
          <source>Addison Wesley</source>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
          </string-name>
          , N.:
          <article-title>Disjunctive Logic Programming with types and objects: The DLV+ System</article-title>
          .
          <source>Journal of Applied Logics</source>
          <volume>5</volume>
          (
          <issue>3</issue>
          ) (
          <year>2007</year>
          )
          <fpage>545</fpage>
          -
          <lpage>573</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Puigsegur</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Agust´ı, J.:
          <article-title>Visual Logic Programming by means of Diagram Transformations</article-title>
          .
          <source>Proc. of the APPIA-GULP-PRODE, Conference on Declarative Programming (July</source>
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Puigsegur</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Agust´ı, J.,
          <string-name>
            <surname>Robertson</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shorlemmer</surname>
            ,
            <given-names>W.M.:</given-names>
          </string-name>
          <article-title>Visual Logic Programming through Set Inclusion and Chaining</article-title>
          .
          <string-name>
            <surname>II IA R.R. Visual Reasoning Workshop</surname>
          </string-name>
          (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>