<!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>
      <journal-title-group>
        <journal-title>Athens, Greece
* Corresponding author.
$ wout.slabbinck@ugent.be (W. Slabbinck); ruben.dedecker@ugent.be (R. Dedecker);
julianandres.rojasmelendez@ugent.be (J. A. Rojas); ruben.verborgh@ugent.be (R. Verborgh)
 https://rubendedecker.be/ (R. Dedecker); https://julianrojas.org/ (J. A. Rojas); https://ruben.verborgh.org/
(R. Verborgh)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>A Rule-Based Software Agent on Top of Personal Data Stores</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Wout Slabbinck</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ruben Dedecker</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Julián Andrés Rojas</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ruben Verborgh</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>IDLab, Departement of Electronics and Information Systems, Ghent University - imec</institution>
          ,
          <country country="BE">Belgium</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>As a response to centralised platforms hoarding user data on the web, Personal Data Stores (PDSs) are becoming more prominent. In this emerging space of decentralized PDS platforms, we see a growing need for automated agents to take over tasks that are normally handled by those data platforms. These intelligent agents already have their place in our daily lives, however, they are currently largely missing from the domain of Personal Data Stores. To address this need, we created a demonstrator software web agent that acts on the real world and personal data via condition-action rules. We applied this demonstrator to a smart home environment use case, where smart home appliances can be actuated and monitored via a personal data store. The generic architecture used by the implementation leads to maximal re-use of the agent, enabling multi-agent systems and researching more complex use cases.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Intelligent software web agents</kwd>
        <kwd>Personal Data Stores</kwd>
        <kwd>Linked Data</kwd>
        <kwd>Solid</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        who formalised a hybrid web agent architecture, we provide a reference implementation that
operates on behalf of a user utilizing a PDS. We created a demonstrator Solid Agent that is
capable of reasoning over PDSs and actuates in the context of smart home scenarios. It is
designed to be generic and extensible so that the agent is not limited to the concrete use case
presented in this paper. The agent uses Notation3 (N3) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] rules to reason over RDF graphs
present in PDSs, which contain the state of the world from the agent’s point of view, and
constitute the input for executing concrete tasks.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>
        Käfer et al. [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] presented a semantic user agent modelled on Abstract State Machines (ASMs)
using the Linked Data-Fu engine. This engine interacts with the environment via HTTP and
applies condition-action rules which are represented using N3.
      </p>
      <p>
        Schraudner et al.[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] also used Linked Data-Fu to model multi-agent systems (MAS) using the
stigmergy communication paradigm. With this concept, the agents act on the environment
rather than communicating directly with each other. Linked Data-Fu seems to be currently
unmaintained and no open-source implementations are available.
      </p>
      <p>Zimmerman et al. [5] introduced pody, which defines a Web Agent embodied in a Solid pod.
Through this embodiment, they envision that podies can participate as part of a MAS. No open
source implementations are currently available.</p>
      <p>
        Lastly, Kirrane [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] introduced a framework to assess task environment requirements of various
agent use case scenarios. Furthermore, she defined a hybrid semantic web agent architecture
consisting of five modular components: Interface, Controller, Reactive, Deliberative and Learning.
Our work follows such architecture given its comprehensive requirement analysis for agents
and aims to provide an initial reference implementation.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Demo</title>
      <p>
        Smart home applications such as security cameras, smart speakers and smart lights are becoming
increasingly popular in households. Ideally, this data would be securely stored and managed in
a personal data vault, so that managed access can be granted to external systems. To achieve
this, we created a web agent based on the hybrid agent architecture [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], that synchronises
the state of a smart device with a corresponding resource in a Solid pod. Figure 1 shows the
setup of this demo. It consists of a Philips Hue smart bulb that is actuated wireless by the Hue
Bridge via Zigbee2. Rather than directly integrating with Philips Hue, which would limit our
use cases to that particular system, we integrated with openHAB3, which is an open-source
platform with support for multiple smart home appliances (including Philips Hue). The state of
the openHAB item is then synchronised with a corresponding ldp:resource in a Solid pod
via the autonomous Solid Agent, such that the state of our smart home device is stored in our
PDS and external systems can interact with this store to actuate our home environment.
      </p>
      <sec id="sec-3-1">
        <title>2https://en.wikipedia.org/wiki/Zigbee 3https://www.openhab.org/</title>
        <p>PShmilaiprstbHuulbe PhBilirpidsgHeue openHAB
Figure 1: Setup of the demonstration: The Solid Agent synchronises the state of the Smart Bulb, through
openHAB with a resource in the Solid Pod.
3.1. Architecture of the Solid Agent
Figure 2 shows the architecture of our agent. For external observers, the Solid Agent acts
as one agent. However, internally it consists of multiple individual actors working together,
identifiable with their own WebID 4. We implemented two interfacing actors that percept and
actuate external things on the web: the OpenHAB Actor and the Solid Actor. At the core, the
Orchestration Actor routes the inputs from the interfacing actors to the reasoning engine
and executes actions on the resulting output. These actions are actuated by calling other actors
such as, but not limited to, the above-mentioned actors.</p>
        <p>The OpenHAB Actor monitors an OpenHAB platform for changes in the state of items. The
following functions were implemented: (i) retrieve the state of an item, (ii) map an item state
object to an RDF representation of the said item, and (iii) subscribe to an item. The agent can be
actuated directly to change the state of an item. To accomplish this actuation, two additional
functions are implemented: (i) map an RDF representation of the state of an item to an item
state object, and (ii) store the state of an item.</p>
        <p>The Solid Actor works in the environment of Solid Pods. This agent monitors an
ldp:resource for read/write updates.</p>
        <p>
          The Orchestration Actor implements an Interface, Reactive and Controller component [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. The
Interface component consists of a sensing part through an ldp:inbox and an actuation part
via HTTP. The inputs are in the form of ActivityStreams2 (AS2) [6] payloads and are either for
the initialisation of the agent or from other internal actors that communicate updates to the
agent. The Reactive component consists of the EYE [7] reasoning engine, a state knowledge
base and IF-THEN Rules written in N3. The Controller component forms the glue between
the other components in this actor. It retrieves a payload from the Interface component and
passes this payload as input to the Reactive component which results in a set of zero, one or
more actions. When applicable, this set of actions is forwarded to the Interface component to be
actuated. The implementation of this actor is based on the KoreoGrafeye5 library.
3.2. Initialising the Solid Agent for a synchronisation task
Given its generic design, the agent must be configured to autonomously execute its tasks. An
AS2 payload must be sent to the Inbox of the Solid Agent containing: (i) a reference to the Solid
Actor and the location of the state resource, (ii) the openHAB Actor together with the openHAB
endpoint, an access token and the smart home appliances and; (iii) the task of the agent, which
is formulated as a set of condition-action rules. A complete example of this configuration and a
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>4https://www.w3.org/2005/Incubator/webid/spec/identity/ 5https://github.com/eyereasoner/Koreografeye</title>
        <p>Solid Agent: Rule-based intelligent software agent</p>
        <p>Inbox</p>
        <p>AS2 messages
AS2 messages</p>
        <p>Inbox
Inbox</p>
        <p>Solid Actor
MessageClient</p>
        <p>Solid
ReadWrite</p>
        <p>Client
MessageClient</p>
        <p>OpenHAB Actor</p>
        <p>OpenHAB
ReadWrite</p>
        <p>Client
OpeRnDHFABTranslator</p>
        <p>Solid
Protocol
openHAB</p>
        <p>API
End User
Configures</p>
        <p>Inbox</p>
        <p>Controler Component
Interface Component
Reactive Component</p>
        <p>Orchestrator Actor</p>
        <p>ReadWrite</p>
        <p>Client
Rules State Plugins</p>
        <p>Koreografeye</p>
        <p>Reasoner exPtoralicctyor exPeocliuctyer
video demonstration can be found in the Solid Agent repository6. This Inbox makes possible
agent-to-agent communication, thus enabling the implementation of MAS systems.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Conclusion</title>
      <p>
        In this paper, we presented a web agent demonstration that incorporates several components
from the hybrid architecture proposed in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Our implementation supports condition-action
N3 rules and interacts, among others, with Solid PDSs. The generic nature of our reference
implementation aims for re-usability and to enable researching more complex MAS scenarios.
In future work, we target the evaluation of the approach and the implementation of the missing
architectural components.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgements</title>
      <p>Supported by SolidLab Vlaanderen (Flemish Government, EWI and RRF project VV023/10).</p>
      <p>Computer Science, Springer International Publishing, Cham, 2020, pp. 197–202. doi:10.
1007/978-3-030-62327-2\_34.
[5] A. Zimmermann, A. Ciortea, C. Faron, E. O’Neill, M. Poveda-Villalón, Pody: a Solid-based
Approach to Embody Agents in Web-based Multi-Agent-Systems, in: 11th International
Workshop on Engineering Multi-Agent Systems (EMAS2023), 2023.
[6] J. Snell, E. Prodomou, Activity Streams 2.0, 2017. URL: https://www.w3.org/TR/
activitystreams-core/.
[7] R. Verborgh, J. De Roo, Drawing Conclusions from Linked Data on the Web: The EYE
Reasoner, IEEE Software 32 (2015) 23–27. doi:10.1109/MS.2015.63, conference Name:
IEEE Software.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Sabrina</given-names>
            <surname>Kirrane</surname>
          </string-name>
          ,
          <article-title>Intelligent software web agents: A gap analysis</article-title>
          ,
          <source>Journal of Web Semantics</source>
          <volume>71</volume>
          (
          <year>2021</year>
          )
          <fpage>100659</fpage>
          . Publisher: Elsevier.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>T.</given-names>
            <surname>Berners-Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Connolly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kagal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Scharf</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Hendler,</surname>
          </string-name>
          <article-title>N3logic: A logical framework for the world wide web</article-title>
          ,
          <source>Theory and Practice of Logic Programming</source>
          <volume>8</volume>
          (
          <year>2008</year>
          )
          <fpage>249</fpage>
          -
          <lpage>269</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <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 Workshop on Linked Data on the Web</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Schraudner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Charpenay</surname>
          </string-name>
          ,
          <string-name>
            <surname>An</surname>
            <given-names>HTTP</given-names>
          </string-name>
          /
          <article-title>RDF-Based Agent Infrastructure for Manufacturing Using Stigmergy, in: The Semantic Web: ESWC 2020 Satellite Events</article-title>
          , Lecture Notes in
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>