dmcs is the name of a prototypical implementation of a fully distributed algorithm to evaluate Multi-Context Systems.
The source code of dmcs is hosted at SourceForge.
Multi-Context Systems (MCS) are formalisms that enable the interlinkage of single knowledge bases, called contexts, via bridge rules, which allow to add knowledge to a context depending on knowledge in other contexts. For instance, the bridge rule a :- (2:b) of a context C1 means that C1 should conclude a if context C2 believes b. On the other hand, each context has a local knowledge base based on some logic. This makes MCS generic for distributed knowledge based representation problem.
MCS have applications in various areas, such as argumentation, data integration, or multi-agent systems. There, each context may model the beliefs of an agent while the bridge rules model an agent's perception of the environment, i.e., other contexts.
The “Scientists Example” gives a concrete scenario for MCS: a group of four scientists, Ms.1, Mr.2, Mr.3, and Ms.4, just finished their conference visit and are now arranging a trip back home. They can choose between going by train or by car (which is usually slower than the train); and if they use the train, they should bring along some food. Moreover, Mr.3 and Ms.4 have additional information from home that might affect their decision.
Mr.3 has a daughter, Ms.6. He is fine with either transportation option, but if Ms.6 is sick then he wants to use the fastest vehicle to get home. Ms.4 just got married, and her husband, Mr.5, wants her to come back as soon as possible. He urges her to to try to come home even sooner, while Ms.4 tries to yield to her husband's plea.
If they go by train, Mr.3 is responsible for buying provisions. He might choose either sandwiches or chocolate peanuts. The options for beverages are coke or juice. Mr.2 is a modest person as long as he gets home. He agrees to any choice that Mr.3 and Ms.4 select for vehicle but he dislikes coke. Ms.1 is the leader of the group and prefers to go by car, but if Mr.2 and 3 want to go by train then she would not object. The only problem is that Ms.1 is allergic to peanuts.
Mr.3 and Ms.4 do not want to bother the others with their personal situation and communicate just their preferences, which is sufficient for reaching an agreement. Ultimately, Ms.1 decides which option to take based on the information she gets from Mr.2 and Mr.3.
There are three agreements for this scenario, in one of those, the group goes by train, brings juice and sandwiches along, while Mr.5 is urging his wife to come home and Ms.6 is sick.
The encoding for this example in MCS is as follows:
car1 :- not train1.
fail1 :- peanuts1, not fail1.
train1 :- (2:train2), (3:train3).
peanuts1 :- (3:chocolate_peanuts3).
|C2||fail2 :- not car2, not train2, not fail2.||
car2 :- (3:car3), (4:car4).
train2 :- (3:train3), (4:train4), not (3:coke3)
car3 v train3.
train3 :- urgent3.
sandwiches3 v chocolate_peanuts3 :- train3.
coke3 v juice3 :- train3.
urgent3 :- (6:sick6).
train3 :- (4:train4).
|C4||car4 v train4.||train4 :- (5:want_sooner5).|
|C5||want_sooner5 :- soon5.||soon5 :- (4:train4).|
|C6||sick6 v fit6.|