SlideShare uma empresa Scribd logo
1 de 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.

Mais conteúdo relacionado

Mais de 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
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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?
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

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.

Notas do Editor

  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.