SlideShare una empresa de 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.

Más contenido relacionado

Más de 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
 

Más 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

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
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 2024The Digital Insurer
 
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
 
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 BusinessPixlogix Infotech
 
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 Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
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
 
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 DevelopmentsTrustArc
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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...apidays
 
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
 
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
 

Último (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
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
 
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
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
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
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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...
 
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
 
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
 

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 del 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.