<!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>Integrated Planning and Execution on Read-Write Linked Data</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Nico Aßfalg</string-name>
          <email>nico.assfalg@student.kit.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Helen Schneider</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tobias Käfer</string-name>
          <email>tobias.kaefer@kit.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Karlsruhe Institute of Technology (KIT)</institution>
          ,
          <addr-line>Karlsruhe</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <fpage>2</fpage>
      <lpage>8</lpage>
      <abstract>
        <p>We present (1) a virtual flamethrower factory as an abstraction of a real-world industrial setting that provides Read-Write Linked Data interfaces to devices, and (2) an agent that operates in this environment with the aim to produce flamethrowers. The interfaces allow for (1) obtaining information about state and capabilities of the devices, and (2) controlling the devices. The agent can (1) plan and (2) execute workflows. The agent is written in the Notation 3 language with ASM4LD semantics, can perform Hierarchical Task Network planning, and can execute workflows described in the WiLD ontology.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Under the impression of the recently standardised Web of Things descriptions1, which are a step
towards read access to descriptions of (Internet of Things) device capabilities and read-write
access to such devices’ state and functionality using Linked Data and other web technologies,
we want to provide a showcase on the “demand” side for such possibilities for access to devices.
Also outside of the Internet of Things, read-write capabilities to state maintained in Linked Data
is on the rise around the SoLiD project2. Our showcase is therefore based on Read-Write Linked
Data access to devices. As the stack of Linked Data is all about interoperability, facilitated in
part using reasoning, e. g. to flexibly swap components that speak diferent vocabularies, we
want rule-based reasoning as part of our showcase. To make use of the functional descriptions
and write access, we want in our showcase to add to this traditional setting (Linked Data and
rule-based reasoning) an agent that plans a workflow (from the functional descriptions and a
goal) and executes this workflow.</p>
      <p>
        Technologically, we therefore built an agent that uses HTTP for communicating with devices,
where messages are described in RDF. We use rules to express reasoning. To describe the agent’s
behaviour, we employ a workflow language that can be executed on Linked Data, specifically
the WiLD ontology [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], whose operational semantics can also get expressed in a rule language,
https://nico-assfalg.de/ (N. Aßfalg); https://www.aifb.kit.edu/web/Tobias_Käfer (T. Käfer)
      </p>
      <p>
        © 2021 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
CEUR
Workshop
Proceedings
ASM4LD [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Lastly, our agent makes use of an ontology to express planning problems according
to the Hierarchical Task Network (HTN) method [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], for which we formulated operational
semantics in ASM4LD. Conveniently, all diferent rule aspects of this agent can be expressed in
the same syntax, Notation3, and executed on the same interpreter, Linked Data-Fu [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>As a setting, we chose manufacturing, where interoperability is a challenge and the increasing
requirement for small lot sizes requires flexibility. To simplify the prototype development, we
work in a virtual setting based on Factorio, a video game. Factorio3 is all about automation and
the eficient and flexible production of various goods. Tech-trees and resource distribution in
the virtual environments require you to repeatedly adapt your strategy. One of the less complex
products in the game is a flamethrower, using which (1) enemies can be fought who want to
destroy the manufacturing line or (2) trees can get burned down to make room for extensions of
the manufacturing line. To build a flamethrower in Factorio, you need a set of iron gearwheels
and steel plates which themselves are made using raw iron ore. In the game, you could go and
do all the crafting by hand but it is cumbersome and not time-eficient. Therefore, you build
a factory with ovens and other assembly machines, connected by robotic arms and transport
belts. We want to make use of this game scenario, have re-built parts in Virtual Reality with
Linked Data interfaces, and for our showcase, control it using an agent that builds and executes
a workflow that produces a flamethrower. We have a virtual flamethrower manufacturing line
which we know to work, which allows us to validate if the planned workflow works by checking
if after execution a flamethrower is produced.</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        Planning with semantic technologies has been investigated in diferent technology settings:
SHOP2 [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] is an implementation of HTN, which has been used in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to compose Semantic Web
Services (SWS). In SWS, function calls via POST requests are in the focus, whereas we build on
state information provided via REST [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Similarly, [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] do planning on the semantic web, using
proofs, and consider function calls, but as they never retract knowledge, they cannot work with
scenarios in which function calls may contradict each other over time, whereas we determine
the state afresh in each ASM step. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] use an of-the-shelf AgentSpeak(L)-based [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] planner in
a semantic manufacturing environment. Our approach however is an integrated planning and
execution approach implemented on the web architecture.
      </p>
      <p>
        ROSPlan [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] is also an integrated planning/execution approach, but made for the
pubsub ROS architecture, which is fundamentally diferent from REST [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. ROSplan uses an
ontology for the world state, which they update using ROS messages, whereas we assume
semantic information provided by the environment itself. The integrated CX [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] is also built
on a rule engine, but for a diferent environment. CX uses PDDL planning instead and has
separate modules for world, planner, execution, and domain, whereas we combine all into one.
Approaches based on Golog [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] such as [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] are also for a diferent assumption set: They are
based on the history-based situation calculus, which is diferent from working with states [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>OperaHtTioNna+l WSeiLmDantics</p>
      <p>ASM4LD
Implementation
RDF(S) Semantics</p>
      <p>Linked Data
Platform Container
Factory Component 1
Factory Component n</p>
      <p>HTN + WiLD Models
1. HTN Plan Instances
2. WiLD Workflow Instances</p>
      <p>System under
Observation
and Control</p>
    </sec>
    <sec id="sec-3">
      <title>Virtual Manufacturing Environment</title>
      <p>Our virtual factory shown in Figure 1 includes a set of robotic arms, transport belts and machines.
All of them provide RESTful Linked Data interfaces and allow user agents to control them using
unsafe HTTP requests. Moreover, we have descriptions of the device capabilities. The factory
is built using the Java-based jMonkeyEngine4 along with 3D models built and animated using
Blender5. In the next section we will explain the details of our prototype.</p>
    </sec>
    <sec id="sec-4">
      <title>HTN Planning for Linked Data</title>
      <p>
        The theoretical foundation of our planner lies in Hierarchical Task Networks (HTN), first
designed by Sacerdoti [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and later formalized as UMCP by Erol et al. [16]. The key idea of
HTN planning lies in the problem structure, where a goal is defined along with a set of methods
that contain task networks, describing more specifically what needs to be done and which
constraints apply. The tasks of the task networks may also need to be further decomposed
using other methods until you have a set of primitive tasks in an order that can be executed.
      </p>
      <p>However, our main goal was not to implement a full-blown HTN planner, but rather provide a
set of rules that fulfil the core HTN decomposition principle, but with less technical complexity.
There is no algorithm besides a processing engine that applies rules to a set of data, leading to
easier implementation and acceptance through explainability.</p>
      <p>We built an HTN vocabulary along with an operational semantics in the Notation3 language
with ASM4LD semantics [17]. Using this approach, we can plan workflows in the WiLD [ 18]
ontology for specifying workflows that can be executed on Linked Data. The operational
semantics for WiLD can also be given in Notation3/ASM4LD. In our setup, see Fig. 1, an agent
orchestrates the virtual devices along with a Linked Data Platform Container [19] that stores the
vocabularies along with workflow models and instances. The agent runs the operational
semantics for HTN planning and WiLD workflow execution using the Linked Data-Fu 6 interpreter.
The code, including an HTN problem description, along with setup instructions is available
4https://jmonkeyengine.org/
5https://www.blender.org/
6https://linked-data-fu.github.io/
online, see the links on Page 1. In the following we want to give you an overview of how HTN
works along with WiLD [18] and where it provides flexibility.</p>
      <sec id="sec-4-1">
        <title>Notation</title>
        <p>First, we need to introduce basic technologies from our environment Read-Write Linked Data.</p>
        <p>We assume the data transferred in the message body of HTTP requests to be given using the
Resource Description Framework (RDF) [20]. RDF is a graph-based data model, where the data
is encoded in (subject , predicate, object ) triples. With  as the set of all URIs, ℬ the set of all
blank nodes, and ℒ the set of all literals (e. g. strings, numerical values), triples are restricted as
follows: (subject , predicate, object ) ∈  ∪ ℬ ×  ×  ∪ ℬ ∪ ℒ . In this paper, we use a logical
notation for RDF. As a triple encodes a binary predicate, we use predicate(subject , object ) to talk
about a triple. As triples in RDF are valid conjunctively, we use the logical and (∧) to connect
triples to a graph. We use Uniform Resource Identifiers (URIs) [ 21] to denote things, abbreviated
as CURIEs7 and follow the abbreviations from prefix.cc8. We thus write a triple as follows:
rdf:type(ex:produce-flamethrower-method , :Method )
As rdf:type assigns things to a class, we use the unary predicate for a class assignment:
:Method (ex:produce-flamethrower-method )</p>
      </sec>
      <sec id="sec-4-2">
        <title>HTN Planning of our Manufacturing Workflow</title>
        <p>Before we add modifications, we need to (simplifying) present how the planning works for our
manufacturing workflow.</p>
        <p>We can manufacture a flamethrower by executing tasks, which we identify using URIs. The
tasks need to be in a specific order (workflow). The tasks can be executed as HTTP requests to
a manufacturing device, which we can describe in RDF. We thus need to embed the requests in
a structure that tells us to execute the requests (we call it primitive task).</p>
        <p>:PrimitiveTask(ex:assemble-plate)
∧ :hasHttpRequest (ex:assemble-plate, ex:assemble-plate-request )</p>
        <p>∧ :PrimitiveTask(ex:assemble-gearwheel)
∧ :hasHttpRequest (ex:assemble-gearwheel, ex:assemble-gearwheel-request )</p>
        <p>∧ :PrimitiveTask(ex:produce-flamethrower )
∧ :hasHttpRequest (ex:produce-flamethrower , ex:produce-flamethrower-request ) ∧ …
Next, we need a another structure to determine the tasks’ order. We use a network of tasks
based on the (linked) RDF list and some enclosing RDF for that purpose:</p>
        <p>:TaskNetwork(ex:task-network)
7https://www.w3.org/TR/curie/
8http://prefix.cc/. We use the empty prefix to denote https://purl.org/uberq/htn/vocab# and the prefix ex: to
denote http://example.org/#. An underscore in prefix position indicates a blank node.</p>
        <p>∧ :hasTaskList(ex:task-network, _:li1)
∧ rdf:first(_:li1, ex:assemble-plate) ∧ rdf:rest(_:li1, _:li2)
∧ rdf:first(_:li2, ex:assemble-gearwheel) ∧ rdf:rest(_:li2, _:li3)
∧ rdf:first(_:li3, ex:produce-flamethrower ) ∧ rdf:rest(_:li3, rdf:nil)
The question a planner has to answer is to come up with such an order, i. e. workflow.</p>
        <p>To determine such an order, a planner needs descriptions of the outcome of each task. We
model the outcome as a postcondition (in HTN, this is called Literal) in the form of a SPARQL
ASK query [22] in SPIN notation9. Such literals can be regarded as the goals the tasks fulfil.</p>
        <p>sp:Ask(ex:literal-flamethrower ) ∧ sp:where(ex:literal-flamethrower , … ) ∧ …
The task network can now be regarded as fulfilling the goal of manufacturing the flamethrower.
:Goal(ex:goal-flamethrower ) ∧ :hasLiteral(ex:goal-flamethrower , ex:literal-flamethrower )
The method to achieve the goal now holds the task network, to be decomposed by the planner:
:Method(ex:flamethrower-method)
∧ :forGoalTask(ex:flamethrower-method, ex:goal-flamethrower )
∧ :hasTaskNetwork(ex:flamethrower-method, ex:task-network)</p>
      </sec>
      <sec id="sec-4-3">
        <title>Modification</title>
        <p>Now imagine we also want to manufacture a more precise flamethrower, by attaching
midrange optics to it. We could define a completely new task network. Instead, we leverage the
hierarchy of HTN and reuse our goal along with the method. We define additional goal tasks
and primitive tasks, e. g. for a precise flamethrower. Now we can define a method to create the
precise flamethrower, which re-uses ex:goal-flamethrower from earlier.</p>
        <p>:Method(ex:precise-flamethrower-method)
∧ :forGoalTask(ex:precise-flamethrower-method, ex:goal-precise-flamethrower )
∧ :hasTaskNetwork(ex:precise-flamethrower-method, _:tn)</p>
        <p>∧ :hasTaskList(_:tn, _:tl1)
∧ rdf:first(_:tl1, ex:goal-flamethrower ) ∧ rdf:rest(_:tl1, _:tl2)</p>
        <p>∧ rdf:first(_:tl2, ex:attach-optics) ∧ rdf:rest(_:tl2, rdf:nil)
Goal ex:precise-flamethrower-goal can then get decomposed into ex:goal-flamethrower and the
primitive task ex:attach-optics. Further decomposition gives us the new workflow.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>We presented an agent that does integrated planning and execution of workflows in Linked
Data. We showcased the agent in a virtual manufacturing setting and outlined how the set of
technologies can facilitate flexibility, next to the flexibility gained by using semantic reasoning.</p>
      <p>Actions and Change 2 (1998). URL: http://www.ep.liu.se/ej/enrac/1997/.
[16] K. Erol, J. A. Hendler, D. S. Nau, Umcp: A sound and complete procedure for hierarchical
task-network planning., in: AIPS, volume 94, 1994, pp. 249–254.
[17] T. Käfer, A. Harth, Rule-based programming of user agents for linked data, in: LDOW@</p>
      <p>WWW, 2018.
[18] T. Käfer, A. Harth, Specifying, monitoring, and executing workflows in linked data
environments, in: International Semantic Web Conference, Springer, 2018, pp. 424–440.
[19] S. Speicher, J. Arwe, A. Malhotra, Linked data platform 1.0, 2015. URL: https://www.w3.</p>
      <p>org/TR/ldp, w3C Recommendation.
[20] R. Cyganiak, D. Wood, M. Lanthaler, RDF 1.1 Concepts and Abstract Syntax,
Recommendation, W3C, 2014. http://www.w3.org/TR/rdf11-concepts/.
[21] T. Berners-Lee, R. Fielding, L. Masinter, Uniform Resource Identifier (URI): Generic Syntax,
RFC 3986, IETF, 2005. URL: http://www.ietf.org/rfc/rfc3986.txt, updated by RFCs 6874,
7320.
[22] S. Harris, A. Seaborne, SPARQL 1.1 Query Language, Recommendation, W3C, 2013. http:
//www.w3.org/TR/sparql11-query/.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>T.</given-names>
            <surname>Käfer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          , Specifying, monitoring, and
          <article-title>executing workflows in linked data environments</article-title>
          ,
          <source>in: Proceedings of the 17th International Semantic Web Conference (ISWC)</source>
          ,
          <year>2018b</year>
          , pp.
          <fpage>424</fpage>
          -
          <lpage>440</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>T.</given-names>
            <surname>Käfer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          ,
          <article-title>Rule-based programming of user agents for linked data</article-title>
          ,
          <source>in: Proceedings of the 11th International Workshop on Linked Data on the Web (LDOW) at the Web Conference (27th WWW)</source>
          ,
          <year>2018a</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>E. D.</given-names>
            <surname>Sacerdoti</surname>
          </string-name>
          ,
          <article-title>Planning in a hierarchy of abstraction spaces</article-title>
          ,
          <source>Artificial intelligence 5</source>
          (
          <year>1974</year>
          )
          <fpage>115</fpage>
          -
          <lpage>135</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Stadtmüller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Speiser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Studer</surname>
          </string-name>
          ,
          <article-title>Data-fu: a language and an interpreter for interaction with read/write linked data</article-title>
          ,
          <source>in: Proceedings of the 22nd International World Wide Web Conference (WWW)</source>
          ,
          <year>2013</year>
          , pp.
          <fpage>1225</fpage>
          -
          <lpage>1236</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>D.</given-names>
            <surname>Nau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Munoz-Avila</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Cao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lotem</surname>
          </string-name>
          , S. Mitchell,
          <article-title>Total-order planning with partially ordered subtasks</article-title>
          ,
          <source>in: IJCAI</source>
          , volume
          <volume>1</volume>
          ,
          <year>2001</year>
          , pp.
          <fpage>425</fpage>
          -
          <lpage>430</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D.</given-names>
            <surname>Wu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Sirin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hendler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Nau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Parsia</surname>
          </string-name>
          ,
          <source>Automatic web services composition using SHOP2</source>
          ,
          <source>Technical Report</source>
          , University of Maryland, USA,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R.</given-names>
            <surname>Fielding</surname>
          </string-name>
          ,
          <article-title>Architectural Styles and the Design of Network-based Software Architectures</article-title>
          ,
          <source>Ph.D. thesis</source>
          , University of California, Irvine, USA,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R.</given-names>
            <surname>Verborgh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Arndt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. van Hoecke</given-names>
            ,
            <surname>J. de Roo</surname>
          </string-name>
          , G. Mels,
          <string-name>
            <given-names>T.</given-names>
            <surname>Steiner</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Gabarro,</surname>
          </string-name>
          <article-title>The pragmatic proof: Hypermedia api composition and execution</article-title>
          ,
          <source>Theory and Practice of Logic Programming</source>
          <volume>17</volume>
          (
          <year>2017</year>
          )
          <fpage>1</fpage>
          -
          <lpage>48</lpage>
          .
          <source>doi:1 0 . 1 0 1 7 / S 1 4</source>
          <volume>7 1 0 6 8 4 1 6 0 0 0 0 1 6 .</volume>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Ciortea</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Mayer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Michahelles</surname>
          </string-name>
          ,
          <article-title>Repurposing manufacturing lines on the fly with multi-agent systems for the web of things</article-title>
          ,
          <source>in: Proceedings of the 17th International Conference on Autonomous Agents and MultiAgent Systems (AAMAS)</source>
          ,
          <year>2018</year>
          , pp.
          <fpage>813</fpage>
          -
          <lpage>822</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A. S.</given-names>
            <surname>Rao</surname>
          </string-name>
          , Agentspeak (l):
          <article-title>Bdi agents speak out in a logical computable language</article-title>
          , in: European workshop on modelling
          <article-title>autonomous agents in a multi-agent world</article-title>
          , Springer,
          <year>1996</year>
          , pp.
          <fpage>42</fpage>
          -
          <lpage>55</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Cashmore</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fox</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Long</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Magazzeni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Ridder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Carrera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Palomeras</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Hurtós</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Carreras</surname>
          </string-name>
          ,
          <article-title>Rosplan: Planning in the robot operating system</article-title>
          ,
          <source>in: Proceedings of the 25th International Conference on Automated Planning and Scheduling (ICAPS)</source>
          , AAAI Press,
          <year>2015</year>
          , pp.
          <fpage>333</fpage>
          -
          <lpage>341</lpage>
          . URL: http://www.aaai.org/ocs/index.php/ICAPS/ICAPS15/paper/view/ 10619.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>T.</given-names>
            <surname>Niemueller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Hofmann</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Lakemeyer, Goal reasoning in the CLIPS executive for integrated planning and execution</article-title>
          ,
          <source>in: Proceedings of the 29th International Conference on Automated Planning and Scheduling (ICAPS)</source>
          , AAAI Press,
          <year>2019</year>
          , pp.
          <fpage>754</fpage>
          -
          <lpage>763</lpage>
          . URL: https://aaai.org/ojs/index.php/ICAPS/article/view/3544.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>H. J.</given-names>
            <surname>Levesque</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Reiter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Lespérance</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Lin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. B.</given-names>
            <surname>Scherl</surname>
          </string-name>
          ,
          <string-name>
            <surname>GOLOG:</surname>
          </string-name>
          <article-title>A logic programming language for dynamic domains</article-title>
          ,
          <source>J. Log. Program</source>
          .
          <volume>31</volume>
          (
          <year>1997</year>
          )
          <fpage>59</fpage>
          -
          <lpage>83</lpage>
          . URL: https://doi.org/10. 1016/S0743-
          <volume>1066</volume>
          (
          <issue>96</issue>
          )
          <fpage>00121</fpage>
          -
          <lpage>5</lpage>
          .
          <source>doi:1 0 . 1 0 1 6 / S 0 7</source>
          <volume>4 3 - 1 0 6 6 ( 9 6 ) 0 0 1 2 1 - 5</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>T.</given-names>
            <surname>Hofmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Niemueller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Claßen</surname>
          </string-name>
          , G. Lakemeyer,
          <article-title>Continual planning in golog</article-title>
          ,
          <source>in: Proceedings of the 30th AAAI Conference on Artificial Intelligence</source>
          , AAAI Press,
          <year>2016</year>
          , pp.
          <fpage>3346</fpage>
          -
          <lpage>3353</lpage>
          . URL: http://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12435.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>R.</given-names>
            <surname>Reiter</surname>
          </string-name>
          ,
          <article-title>The situation calculus ontology</article-title>
          ,
          <source>Electronic News Journal on Reasoning about</source>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>