SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Sociagrams
Demo
How to design a social machine
Alan Davoust, Petros Papapanagiotou,
Dave Murray-Rust, Max Van Kleek, Areti Manataki
First give them a whiteboard
Then Rapidly Prototype with The Sociagrammer!™
Step 1: Put in the roles
Step 2: Add (generic) protocols
Step 2(b): Customize generic protocols
Step 3: Automatically derive e/k
Behind the scenes: generic protocols
● Role1 → TELL[predicate(param1:type1, param2:type2)] → Role2
● Role1 → ASK[predicate(param1:type1, param2:type2)] → Role2
● Role1 → ASK_ALL[predicate(param1:type1, param2:type2)] → Role2
● Role1 → RESERVE[predicate(param1:type1, param2:type2)] →
Role2
● Role1 → SIGN UP [] → Role2
● ...
Role1 → ASK[predicate(param1:type1, param2:type2)] → Role2
To be a <Role1>:
if elicit[hasRole(R,<Role2>)] then Send message ask(<predicate>) to <Role2> R
then either (
Wait for message reply_yes(<predicate(P1,P2,...)>) from <Role2> R
then know[ <predicate(P1,P2,...)>]
) or (
Wait for message reply_no from <Role2> R ).
To be a <Role2>:
Wait for message ask(<predicate>) from <Role1> R
then either (
if elicit[<predicate(P1,P2,...)>] then
Send message reply_yes(<predicate(P1,P2,...)>) to <Role1> R
) or (
if elicit[not(<predicate(P1,P2,...)>)] then
Send message reply_no to <Role1> R ).
CyberMadre → ASK[have_food(name:String,quantity:Int,giver:ID)] → Giver
To be a Cybermadre:
if elicit[hasRole(R,Giver)] then Send message ask(have_food) to Giver R
then either (
Wait for message reply_yes(have_food(N,Q,ID)) from Giver R
then know[ have_food(N,Q,ID) ]
) or (
Wait for message reply_no from Giver R ).
To be a Giver:
Wait for message ask(have_food) from Cybermadre R
then either (
if elicit[have_food(N,Q,ID)] then
Send message reply_yes(have_food(N,Q,ID)) to Cybermadre R
) or (
if elicit[not(have_food(N,Q,ID))] then
Send message reply_no to Cybermadre R ).
Steps 2+3 iterated ...
What about custom protocols (e.g. “deliver”…) ?
Step 4: Link e/k
Behind the scenes: Composition
Giver → SIGN_UP[] → CyberMadre
+
CyberMadre → ASK_ALL[have_food(name,quantity,giver)] →
Giver
+
CyberMadre → RESERVE[food(name,quantity,giver)] → Giver
=
???
● Need composition semantics + alignment of e/k’s
CyberMadre → ASK_ALL[have_food(name,quantity,giver)] →
Giver
+ CyberMadre → RESERVE[food(name,quantity,giver)] → GiverTo be a CyberMadre: if getListOfRole(L,Giver) then Play role Asker(L).
To be a Asker(L):
either (
if L = [R|T] and hasRole(R,Giver) then Send message ask(have_food) to Giver R then
either (
Wait for message reply_yes(have_food(Name,Quantity,ID)) from Giver R then
Know have_food(Name,Quantity,ID) then
if hasRole(R,Giver) and reserve(food(Name,Quantity,R)) and not(reserved(food(Name,Quantity,R))) then
Send message reserve(food(Name,Quantity,R)) to Giver R then
either (
Wait for message reserved(food(Name,Quantity,R)) from Giver R then
Know reserved(food(Name,Quantity,R))
) or (
Wait for message failed from Giver R
)
) or ( Wait for message reply_no from Giver R then
Play role Asker(T))
) or ( if L = [] then Know not(have_food) ).
To be a Giver:
Wait for message ask(have_food) from CyberMadre R then
either (
if have_food(Name,Quantity,ID) then Send message reply_yes(have_food(Name,Quantity,ID)) to CyberMadre R then
Wait for message reserve(food(Name,Quantity,ID)) from CyberMadre R then
either (
if reserve(food(Name,Quantity,ID)) and not(reserved(food(Name,Quantity,ID))) then
Send message reserved(food(Name,Quantity,ID)) to CyberMadre Rtthen
Knowreserved(food(Name,Quantity,ID))
) or ( if not(reserve(food(Name,Quantity,ID))) then Send message failed to CyberMadre R
) or ( if reserved(food(Name,Quantity,ID)) then Send message failed to CyberMadre R )
) or ( if not(have_food(Name,Quantity,ID)) then Send message reply_no to CyberMadre R ).
CyberMadre → ASK_ALL[have_food(name,quantity,giver)] →
Giver
+ CyberMadre → RESERVE[food(name,quantity,giver)] → GiverTo be a CyberMadre: if getListOfRole(L,Giver) then Play role Asker(L).
To be a Asker(L):
either (
if L = [R|T] and hasRole(R,Giver) then Send message ask(have_food) to Giver R then
either (
Wait for message reply_yes(have_food(Name,Quantity,ID)) from Giver R then
Know have_food(Name,Quantity,ID) then
if hasRole(R,Giver) and reserve(food(Name,Quantity,R)) and not(reserved(food(Name,Quantity,R))) then
Send message reserve(food(Name,Quantity,R)) to Giver R then
either (
Wait for message reserved(food(Name,Quantity,R)) from Giver R then
Know reserved(food(Name,Quantity,R))
) or (
Wait for message failed from Giver R
)
) or ( Wait for message reply_no from Giver R then
Play role Asker(T))
) or ( if L = [] then Know not(have_food) ).
To be a Giver:
Wait for message ask(have_food) from CyberMadre R then
either (
if have_food(Name,Quantity,ID) then Send message reply_yes(have_food(Name,Quantity,ID)) to CyberMadre R
then
Wait for message reserve(food(Name,Quantity,ID)) from CyberMadre R then
either (
if reserve(food(Name,Quantity,ID)) and not(reserved(food(Name,Quantity,ID))) then
Send message reserved(food(Name,Quantity,ID)) to CyberMadre Rtthen
Know reserved(food(Name,Quantity,ID))
) or ( if not(reserve(food(Name,Quantity,ID))) then Send message failed to CyberMadre R
Step 5: derive data model (automatic)
k(Giver(name))
k(DeliveryPerson(name, location))
k(HungryPerson(name, location))
k(FoodAvailable(description, date, Giver))
k(Reserve(FoodAvailable))
k(Delivery(date,time,FoodAvailable,DeliveryPerson))
Step 5: derive data model (automatic)
k(Giver(name))
k(DeliveryPerson(name, location))
k(HungryPerson(name, location))
k(FoodAvailable(description, date, Giver))
k(Reserve(FoodAvailable))
k(Delivery(date,time,FoodAvailable,DeliveryPerson))
Giver
name
Step 5: derive data model (automatic)
k(Giver(name))
k(DeliveryPerson(name, location))
k(HungryPerson(name, location))
k(FoodAvailable(description, date, Giver))
k(Reserve(FoodAvailable))
k(Delivery(date,time,FoodAvailable,DeliveryPerson))
FoodAvailable
descr date
Giver
name
Step 5: derive data model (automatic)
k(Giver(name))
k(DeliveryPerson(name, location))
k(HungryPerson(name, location))
k(FoodAvailable(description, date, Giver))
k(Reserve(FoodAvailable))
k(Delivery(date,time,FoodAvailable,DeliveryPerson))
FoodAvailable
descr date
GiverReserve
name
Step 5: derive data model (automatic)
k(Giver(name))
k(DeliveryPerson(name, location))
k(HungryPerson(name, location))
k(FoodAvailable(description, date, Giver))
k(Reserve(FoodAvailable))
k(Delivery(date,time,FoodAvailable,DeliveryPerson))
HungryPerson
name location
FoodAvailable
descr date
GiverReserve
Delivery
Person
Delivery
date
name
Step 6: Generating agents
● Which are bots and which are people?
○ Autonomous agents (all e and k automated)
○ Interface agents (some manual e, some storage of k)
→ automatically generated UIs
○ Humans (connected via… web interface, twitter, etc ?)
automation
Demo
More questions to be addressed
What about decentralization?
Access control ?
How do agents know about each other?
Where to store the information?
Who needs to know about what?
FoodAvailable
descr date
Giver
Reserve
Madres will need to e(FoodAvailable(X)) in order to
decide to reserve it and schedule a delivery.
Madre
Giver Givers need to know that
food is reserved so they don’t
throw it out.
CyberMadres Central
Multiple Madres / Multiple Givers
FoodAvailable
descr date
Giver
Reserve
Madre
Giver
MadreMadre
Reserve
Giver
Access Control
Can anyone be a Giver?
An Informant?
A Madre?
A Delivery person?
A Hungry Person?
Access Control and protocol composition
The Reputation Issue (™)
Giver
Giver
SIGN UP
ASK
(Food)
Access Control and protocol composition
The Reputation Issue (™)
Giver
Giver
SIGN UP
Reputation
ASK
(Food)
Access Control and protocol composition
The Reputation Issue (™)
Giver
Giver
SIGN UP
Reputation
Unreputable
Giver
Reputable
Giver → Use predicate isReputableGiver(...) with
custom definition to trigger ASK
ASK
(Food)
That’s all folks!
Thanks!
Questions ?
Where to store the information?
Who needs to know about what?
HungryPerson
name location
FoodAvailable
descr date
GiverReserve
Delivery
Person
Delivery
date
Where to store the information?
Who needs to know about what?
HungryPerson
name location
FoodAvailable
descr date
GiverReserve
Delivery
Person
Delivery
date
Madres will need to e(FoodAvailable(X)) in order to decide to
reserve it and schedule a delivery.
Madre
Where to store the information?
Who needs to know about what?
HungryPerson
name location
FoodAvailable
descr date
GiverReserve
Delivery
Person
Delivery
date
Madres will need to e(FoodAvailable(X)) in order to decide to
reserve it and schedule a delivery.
Madre
Delivery People need to e(Delivery(., ME,..)) related to
themselves to know when to actually deliver the food
DeliveryPerson
How do agents know about each other?
Which actors are described in the system?
=> data model tells us about some (HungryPerson, DeliveryPerson, Giver).
=> actors with access control (Madres) presumably have accounts. They might
be automatically notified by a centralized system: Givers/Informants need to
know about CyberMadres Central, who then transfers all information to all
Madres.
=> Add Actor (central system) and protocol: if system is told X, system
broadcasts X to all Madres.

Weitere ähnliche Inhalte

Mehr von Ulrik Lyngs

SoLiD co operating.systems
SoLiD co operating.systemsSoLiD co operating.systems
SoLiD co operating.systemsUlrik Lyngs
 
Safe Haven in a Box, Petros Papapanagiotou
Safe Haven in a Box, Petros PapapanagiotouSafe Haven in a Box, Petros Papapanagiotou
Safe Haven in a Box, Petros PapapanagiotouUlrik Lyngs
 
Privacy-Preserving Data Analysis, Adria Gascon
Privacy-Preserving Data Analysis, Adria GasconPrivacy-Preserving Data Analysis, Adria Gascon
Privacy-Preserving Data Analysis, Adria GasconUlrik Lyngs
 
A Privacy Framework for Social Machines
A Privacy Framework for Social MachinesA Privacy Framework for Social Machines
A Privacy Framework for Social MachinesUlrik Lyngs
 
SOCIAM Book: The Theory and Practice of Social Machines
SOCIAM Book: The Theory and Practice of Social MachinesSOCIAM Book: The Theory and Practice of Social Machines
SOCIAM Book: The Theory and Practice of Social MachinesUlrik Lyngs
 
Provenance and Analytics for Social Machines, Trung Dong Huynh
Provenance and Analytics for Social Machines, Trung Dong HuynhProvenance and Analytics for Social Machines, Trung Dong Huynh
Provenance and Analytics for Social Machines, Trung Dong HuynhUlrik Lyngs
 

Mehr von Ulrik Lyngs (7)

SoLiD co operating.systems
SoLiD co operating.systemsSoLiD co operating.systems
SoLiD co operating.systems
 
Safe Haven in a Box, Petros Papapanagiotou
Safe Haven in a Box, Petros PapapanagiotouSafe Haven in a Box, Petros Papapanagiotou
Safe Haven in a Box, Petros Papapanagiotou
 
App Observatory
App ObservatoryApp Observatory
App Observatory
 
Privacy-Preserving Data Analysis, Adria Gascon
Privacy-Preserving Data Analysis, Adria GasconPrivacy-Preserving Data Analysis, Adria Gascon
Privacy-Preserving Data Analysis, Adria Gascon
 
A Privacy Framework for Social Machines
A Privacy Framework for Social MachinesA Privacy Framework for Social Machines
A Privacy Framework for Social Machines
 
SOCIAM Book: The Theory and Practice of Social Machines
SOCIAM Book: The Theory and Practice of Social MachinesSOCIAM Book: The Theory and Practice of Social Machines
SOCIAM Book: The Theory and Practice of Social Machines
 
Provenance and Analytics for Social Machines, Trung Dong Huynh
Provenance and Analytics for Social Machines, Trung Dong HuynhProvenance and Analytics for Social Machines, Trung Dong Huynh
Provenance and Analytics for Social Machines, Trung Dong Huynh
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 

Kürzlich hochgeladen (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 

Sociagrams: How to design a social machine

  • 1. Sociagrams Demo How to design a social machine Alan Davoust, Petros Papapanagiotou, Dave Murray-Rust, Max Van Kleek, Areti Manataki
  • 2. First give them a whiteboard
  • 3. Then Rapidly Prototype with The Sociagrammer!™
  • 4. Step 1: Put in the roles
  • 5. Step 2: Add (generic) protocols
  • 6. Step 2(b): Customize generic protocols
  • 8. Behind the scenes: generic protocols ● Role1 → TELL[predicate(param1:type1, param2:type2)] → Role2 ● Role1 → ASK[predicate(param1:type1, param2:type2)] → Role2 ● Role1 → ASK_ALL[predicate(param1:type1, param2:type2)] → Role2 ● Role1 → RESERVE[predicate(param1:type1, param2:type2)] → Role2 ● Role1 → SIGN UP [] → Role2 ● ...
  • 9. Role1 → ASK[predicate(param1:type1, param2:type2)] → Role2 To be a <Role1>: if elicit[hasRole(R,<Role2>)] then Send message ask(<predicate>) to <Role2> R then either ( Wait for message reply_yes(<predicate(P1,P2,...)>) from <Role2> R then know[ <predicate(P1,P2,...)>] ) or ( Wait for message reply_no from <Role2> R ). To be a <Role2>: Wait for message ask(<predicate>) from <Role1> R then either ( if elicit[<predicate(P1,P2,...)>] then Send message reply_yes(<predicate(P1,P2,...)>) to <Role1> R ) or ( if elicit[not(<predicate(P1,P2,...)>)] then Send message reply_no to <Role1> R ).
  • 10. CyberMadre → ASK[have_food(name:String,quantity:Int,giver:ID)] → Giver To be a Cybermadre: if elicit[hasRole(R,Giver)] then Send message ask(have_food) to Giver R then either ( Wait for message reply_yes(have_food(N,Q,ID)) from Giver R then know[ have_food(N,Q,ID) ] ) or ( Wait for message reply_no from Giver R ). To be a Giver: Wait for message ask(have_food) from Cybermadre R then either ( if elicit[have_food(N,Q,ID)] then Send message reply_yes(have_food(N,Q,ID)) to Cybermadre R ) or ( if elicit[not(have_food(N,Q,ID))] then Send message reply_no to Cybermadre R ).
  • 12. What about custom protocols (e.g. “deliver”…) ?
  • 14. Behind the scenes: Composition Giver → SIGN_UP[] → CyberMadre + CyberMadre → ASK_ALL[have_food(name,quantity,giver)] → Giver + CyberMadre → RESERVE[food(name,quantity,giver)] → Giver = ??? ● Need composition semantics + alignment of e/k’s
  • 15. CyberMadre → ASK_ALL[have_food(name,quantity,giver)] → Giver + CyberMadre → RESERVE[food(name,quantity,giver)] → GiverTo be a CyberMadre: if getListOfRole(L,Giver) then Play role Asker(L). To be a Asker(L): either ( if L = [R|T] and hasRole(R,Giver) then Send message ask(have_food) to Giver R then either ( Wait for message reply_yes(have_food(Name,Quantity,ID)) from Giver R then Know have_food(Name,Quantity,ID) then if hasRole(R,Giver) and reserve(food(Name,Quantity,R)) and not(reserved(food(Name,Quantity,R))) then Send message reserve(food(Name,Quantity,R)) to Giver R then either ( Wait for message reserved(food(Name,Quantity,R)) from Giver R then Know reserved(food(Name,Quantity,R)) ) or ( Wait for message failed from Giver R ) ) or ( Wait for message reply_no from Giver R then Play role Asker(T)) ) or ( if L = [] then Know not(have_food) ). To be a Giver: Wait for message ask(have_food) from CyberMadre R then either ( if have_food(Name,Quantity,ID) then Send message reply_yes(have_food(Name,Quantity,ID)) to CyberMadre R then Wait for message reserve(food(Name,Quantity,ID)) from CyberMadre R then either ( if reserve(food(Name,Quantity,ID)) and not(reserved(food(Name,Quantity,ID))) then Send message reserved(food(Name,Quantity,ID)) to CyberMadre Rtthen Knowreserved(food(Name,Quantity,ID)) ) or ( if not(reserve(food(Name,Quantity,ID))) then Send message failed to CyberMadre R ) or ( if reserved(food(Name,Quantity,ID)) then Send message failed to CyberMadre R ) ) or ( if not(have_food(Name,Quantity,ID)) then Send message reply_no to CyberMadre R ).
  • 16. CyberMadre → ASK_ALL[have_food(name,quantity,giver)] → Giver + CyberMadre → RESERVE[food(name,quantity,giver)] → GiverTo be a CyberMadre: if getListOfRole(L,Giver) then Play role Asker(L). To be a Asker(L): either ( if L = [R|T] and hasRole(R,Giver) then Send message ask(have_food) to Giver R then either ( Wait for message reply_yes(have_food(Name,Quantity,ID)) from Giver R then Know have_food(Name,Quantity,ID) then if hasRole(R,Giver) and reserve(food(Name,Quantity,R)) and not(reserved(food(Name,Quantity,R))) then Send message reserve(food(Name,Quantity,R)) to Giver R then either ( Wait for message reserved(food(Name,Quantity,R)) from Giver R then Know reserved(food(Name,Quantity,R)) ) or ( Wait for message failed from Giver R ) ) or ( Wait for message reply_no from Giver R then Play role Asker(T)) ) or ( if L = [] then Know not(have_food) ). To be a Giver: Wait for message ask(have_food) from CyberMadre R then either ( if have_food(Name,Quantity,ID) then Send message reply_yes(have_food(Name,Quantity,ID)) to CyberMadre R then Wait for message reserve(food(Name,Quantity,ID)) from CyberMadre R then either ( if reserve(food(Name,Quantity,ID)) and not(reserved(food(Name,Quantity,ID))) then Send message reserved(food(Name,Quantity,ID)) to CyberMadre Rtthen Know reserved(food(Name,Quantity,ID)) ) or ( if not(reserve(food(Name,Quantity,ID))) then Send message failed to CyberMadre R
  • 17. Step 5: derive data model (automatic) k(Giver(name)) k(DeliveryPerson(name, location)) k(HungryPerson(name, location)) k(FoodAvailable(description, date, Giver)) k(Reserve(FoodAvailable)) k(Delivery(date,time,FoodAvailable,DeliveryPerson))
  • 18. Step 5: derive data model (automatic) k(Giver(name)) k(DeliveryPerson(name, location)) k(HungryPerson(name, location)) k(FoodAvailable(description, date, Giver)) k(Reserve(FoodAvailable)) k(Delivery(date,time,FoodAvailable,DeliveryPerson)) Giver name
  • 19. Step 5: derive data model (automatic) k(Giver(name)) k(DeliveryPerson(name, location)) k(HungryPerson(name, location)) k(FoodAvailable(description, date, Giver)) k(Reserve(FoodAvailable)) k(Delivery(date,time,FoodAvailable,DeliveryPerson)) FoodAvailable descr date Giver name
  • 20. Step 5: derive data model (automatic) k(Giver(name)) k(DeliveryPerson(name, location)) k(HungryPerson(name, location)) k(FoodAvailable(description, date, Giver)) k(Reserve(FoodAvailable)) k(Delivery(date,time,FoodAvailable,DeliveryPerson)) FoodAvailable descr date GiverReserve name
  • 21. Step 5: derive data model (automatic) k(Giver(name)) k(DeliveryPerson(name, location)) k(HungryPerson(name, location)) k(FoodAvailable(description, date, Giver)) k(Reserve(FoodAvailable)) k(Delivery(date,time,FoodAvailable,DeliveryPerson)) HungryPerson name location FoodAvailable descr date GiverReserve Delivery Person Delivery date name
  • 22. Step 6: Generating agents ● Which are bots and which are people? ○ Autonomous agents (all e and k automated) ○ Interface agents (some manual e, some storage of k) → automatically generated UIs ○ Humans (connected via… web interface, twitter, etc ?) automation
  • 23. Demo
  • 24. More questions to be addressed What about decentralization? Access control ? How do agents know about each other?
  • 25. Where to store the information? Who needs to know about what? FoodAvailable descr date Giver Reserve Madres will need to e(FoodAvailable(X)) in order to decide to reserve it and schedule a delivery. Madre Giver Givers need to know that food is reserved so they don’t throw it out.
  • 26. CyberMadres Central Multiple Madres / Multiple Givers FoodAvailable descr date Giver Reserve Madre Giver MadreMadre Reserve Giver
  • 27. Access Control Can anyone be a Giver? An Informant? A Madre? A Delivery person? A Hungry Person?
  • 28. Access Control and protocol composition The Reputation Issue (™) Giver Giver SIGN UP ASK (Food)
  • 29. Access Control and protocol composition The Reputation Issue (™) Giver Giver SIGN UP Reputation ASK (Food)
  • 30. Access Control and protocol composition The Reputation Issue (™) Giver Giver SIGN UP Reputation Unreputable Giver Reputable Giver → Use predicate isReputableGiver(...) with custom definition to trigger ASK ASK (Food)
  • 32. Where to store the information? Who needs to know about what? HungryPerson name location FoodAvailable descr date GiverReserve Delivery Person Delivery date
  • 33. Where to store the information? Who needs to know about what? HungryPerson name location FoodAvailable descr date GiverReserve Delivery Person Delivery date Madres will need to e(FoodAvailable(X)) in order to decide to reserve it and schedule a delivery. Madre
  • 34. Where to store the information? Who needs to know about what? HungryPerson name location FoodAvailable descr date GiverReserve Delivery Person Delivery date Madres will need to e(FoodAvailable(X)) in order to decide to reserve it and schedule a delivery. Madre Delivery People need to e(Delivery(., ME,..)) related to themselves to know when to actually deliver the food DeliveryPerson
  • 35. How do agents know about each other? Which actors are described in the system? => data model tells us about some (HungryPerson, DeliveryPerson, Giver). => actors with access control (Madres) presumably have accounts. They might be automatically notified by a centralized system: Givers/Informants need to know about CyberMadres Central, who then transfers all information to all Madres. => Add Actor (central system) and protocol: if system is told X, system broadcasts X to all Madres.

Hinweis der Redaktion

  1. (=>manually select which ones need accounts, which ones need to be described in the “system” (data storage) [e.g. hungry people must be described but don’t need accounts]) (for others (informants?), perhaps allow for protocols to be initiated via email, twitter…)
  2. (vague) proposal: There are two issues: - One is annotating the people’s description with annotations (like marking food as reserved, only marking people as having different achievements, possibly aggregated by a bot) - The other is relevant to access control : create more than one role and make the reputation bot move people between roles.
  3. (vague) proposal: There are two issues: - One is annotating the people’s description with annotations (like marking food as reserved, only marking people as having different achievements, possibly aggregated by a bot) - The other is relevant to access control : create more than one role and make the reputation bot move people between roles.
  4. (vague) proposal: There are two issues: - One is annotating the people’s description with annotations (like marking food as reserved, only marking people as having different achievements, possibly aggregated by a bot) - The other is relevant to access control : create more than one role and make the reputation bot move people between roles.
  5. (vague) proposal: There are two issues: - One is annotating the people’s description with annotations (like marking food as reserved, only marking people as having different achievements, possibly aggregated by a bot) - The other is relevant to access control : create more than one role and make the reputation bot move people between roles.