OpenLLM-France/wikimedia huggingface dataset:
# Beekeeping/Nosema
## Nosema spp

Nosema ceranae originates from Asia and was originally described as a pathogen of the Asian cavity nesting bee Apis cerana (Fries et al., 1996). It was later found to occur in colonies of Apis mellifera in Taiwan(Huang et al., 2007) and reported from Spain (Higes et al., 2006). It has been suggested that N. ceranae may be more virulent than Nosema apis when infecting A. mellifera, and it has been reported to cause severe colony losses, especially in southern Europe (Higes et al., 2007, 2008). N. ceranae has been present in the US since at least 1995 (Chen et al., 2007a, 2007b) and in Europe (Finland) since 1998 (Paxton et al., 2007). Nosema disease (nosemosis) caused by the honeybee microsporidia is one of the most important diseases in honeybees and is worldwide in distribution (Nixon, 1982). Microsporidia are possibly the smallest single-cell organisms with a true nucleus. The genus Nosema is a parasitic fungus that infects insects such as honeybees, bumble bees and silkworms. Nosema apis, which infects the Western honeybee, Apis mellifera, was first described by Zander (1909). Nosema ceranae, which attacks the Asian honeybee, Apis cerana, was reported in 1996 by Fries et al. (1996). They invade the midgut epithelial cells of the worker bees, queens and drones. Nosema has negative effects on the bee colony. It can affect the productivity and survival of honeybee colonies including adult bee longevity, queen bees, brood rearing, bee biochemistry, pollen collection and other bee behavior (Kang et al., 1976). The prevalence of Nosema has raised concerns especially with the recent declines in honeybee populations. Many of these losses have been attributed to Colony Collapse Disorder (CCD), although the specific causes of most losses are undetermined. It was reported that co-infection by virus and Nosema in honeybee might be associated with colony collapse (Bromenshenk et al., 2010).
# Beekeeping/Mouse Guard

Mouse guards serve the purpose of restricting access to a beehive by pests such as mice and skunks. Some can simultaneously be used like a entrance reducer and control traffic, temperature and ventilation within a hive.

## Usage

Most often, mouse guards are used prior to the onset and during the winter months to prevent mice from choosing a beehive as a hibernation spot. It is also not uncommon for mouse guards to be used year round in some locales to help in the control of pests. Mouse guards are often designed to be nailed or stapled across the entrance of a hive, between the bottom board and the lower hive body.

## Selecting an Entrance Reducer

When selecting an entrance reducer, be sure that it is made of a material that a mouse or other pest cannot chew through. Mice will gleefully chew through wooden or thin plastic guards; thus, metal is often the best option. Some mouse guards are similar in design to small queen excluder; using one of these means that not only is the queen stuck inside the hive, but so are the drones. Dead and dying drone bodies can easily seal up the entrance and prevent worker bees from transiting to complete their necessary business.

## Maintenance

* Entrance reducers may need to be occasionally scraped of propolis but should otherwise not need any real maintenance.
* Be sure to regularly clean dead bees from the entrance reducer and the opening to the beehive; this will help to prevent the hive from accidentally being sealed.
# Definition of Closure

Let G be a group with binary operation $\ast$
    $\forall \;a,b\in G:a\ast b\in G$

# Usage

* If a, b are in G, a $\ast$ b is in G.

# Notice

* G has to be a group
* Both a and b have to be elements of G.
* $\ast$ has to be the binary operation of G
* The converse is not necessary true:
** a $\ast$ b is in G does not mean a or b must be in G.
# Abstract Algebra/Group Theory/Group/Definition of a Group/Definition of Identity

Let G be a group with binary operation $\ast$
    $\exists \;e_{G}\in G:\forall \;g\in G:e_{G}\ast g=g\ast e_{G}=g$

## Usages

* The identity of G, e$_G$, is in group G.
* Group G has an identity e$_G$
* If g is in G, e$_G$ $\ast$ g = g $\ast$ e$_G$ = g
* e is the identity of group G if
    e is in group G, and
    e $\ast$ g = g $\ast$ e = g for every element g in G.

## Notice

* e$_G$ always mean identity of group G throughout this section.
* G has to be a group
* If a is not in group G, a $\ast$ e$_G$ may not equal to a
* If $\circledast$ is not the binary operation of G, a $\circledast$ e$_G$ may not equal to a
# Theorem

Let G be any group with operation $\ast$.
    $\forall \;g\in G:[g^{-1}]^{-1}=g$
    In Group G, inverse of inverse of any element g is g.

# Proof

    0. Choose ${\color {OliveGreen}g}\in G$ 1. $\exists \;{\color {BrickRed}g^{-1}}\in G:{\color {OliveGreen}g}\ast {\color {BrickRed}g^{-1}}={\color {BrickRed}g^{-1}}\ast {\color {OliveGreen}g}=e_{G}$ definition of inverse of g in G (usage 1,3) 2. ${\color {OliveGreen}g}\ast {\color {BrickRed}a}={\color {BrickRed}a}\ast {\color {OliveGreen}g}=e_{G}$ let a = g$^{−1}$ 3. ${\color {BrickRed}a}\ast {\color {OliveGreen}g}={\color {OliveGreen}g}\ast {\color {BrickRed}a}=e_{G}$ 4. $[{\color {BrickRed}a}]^{-1}={\color {OliveGreen}g}$ definition of inverse of a in G (usage 2) 5. $[{\color {BrickRed}g^{-1}}]^{-1}={\color {OliveGreen}g}$ as a = g$^{−1}$

# Diagrams

| 1. inverse of filled circle is empty circle. | 2. inverse of empty circle is filled circle, given 1. |
# Theorem

Let G be any Group.
Let $Ga=\lbrace g\ast a\;|\;g\in G\rbrace$
    $\forall \;a\in G:Ga=G$

# Proof

Part A. $\color {RawSienna}Ga\subseteq G$
    0. Choose ${\color {OliveGreen}a}\in G$ 1. Choose $x\in G{\color {OliveGreen}a}=\lbrace g\ast {\color {OliveGreen}a}\;|\;g\in G\rbrace$ 2. $\exists \;g\in G:x=g\ast {\color {OliveGreen}a}$ 1. 3. $g\ast {\color {OliveGreen}a}\in G$ closure of G, $g,a\in G$ 4. $x=g\ast {\color {OliveGreen}a}\in G$ 2,
Part B. $\color {RawSienna}G\subseteq Ga$
    5. Choose ${\color {OliveGreen}a}\in G$ 6. $\exists \;{\color {BrickRed}a^{-1}}\in G:{\color {BrickRed}a^{-1}}\ast {\color {OliveGreen}a}=e_{G}$ definition of inverse 7. Choose $y\in G$ 8. $y\ast {\color {BrickRed}a^{-1}}\in G$ closure of G, and, y, a$^{−1}$ are in G 9. $(y\ast {\color {BrickRed}a^{-1}})\ast {\color {OliveGreen}a}\in G{\color {OliveGreen}a}$ definition of Ga 10. $y\ast ({\color {BrickRed}a^{-1}}\ast {\color {OliveGreen}a})\in G{\color {OliveGreen}a}$ associativity on G (not Ga) 11. $y\ast e_{G}\in G{\color {OliveGreen}a}$ e$_G$ is identity of G 12. $y\in G{\color {OliveGreen}a}$
Part C. $\color {RawSienna}Ga=G$
| $Ga=G\,$ | $G\subseteq Ga$ and $Ga\subseteq G$, |
# Definition of Associativity

Let G be a group with binary operation $\ast$
    $\forall \;a,b,c\in G:(a\ast b)\ast c=a\ast (b\ast c)$

# Usage

* If a, b, c are in G, (a $\ast$ b) $\ast$ c = a $\ast$ (b $\ast$ c)

# Notice

* G has to be a group
* All of a, b and c have to be elements of G.
* $\ast$ has to be the binary operation of G
* The converse is not necessary true:
       a (a $\ast$ b) $\ast$ c = a $\ast$ (b $\ast$ c) does not mean a, b or c must be in G.
# Definition of Inverse

Let G be a group with operation $\ast$
    $\forall \;g\in G:\exists \;g^{-1}\in G:g\ast g^{-1}=g^{-1}\ast g=e_{G}$

# Usages

* If g is in G, g has an inverse g$^{−1}$ in G
* b is the inverse of g on group G if
    b is in G, and
    b $\ast$ g = g $\ast$ b = e$_G$.
    e$_G$ here again means the Identity of group G.
* If b is the inverse of g on group G, then
    b is in G, and
    b $\ast$ g = g $\ast$ b = e$_G$.

# Notice

* G has to be a group
# Theorem

    Each group only has one identity

# Proof

    0. Let G be any group. Then G has an identity, say e$_1$.
    1. Assume G has a different identity e$_2$
| As e$_1$ is identity of G (usage 1), | As e$_2$ is identity of G (usage 1), |
| 2a. ${\color {blue}e_{1}}\in G$ | 2b. ${\color {OliveGreen}e_{2}}\in G$ |
| e$_2$ is identity of G (usage 3), | As e$_1$ is identity of G (usage 3), |
| 3a. $\forall \;g\in G:g\ast {\color {OliveGreen}e_{2}}=g$ | 3b. $\forall \;g\in G:{\color {Blue}e_{1}}\ast g=g$ |
| By 2a. and 3a., | By 2b. and 3b., |
| 4a. ${\color {blue}e_{1}}\ast {\color {OliveGreen}e_{2}}={\color {blue}e_{1}}$ | 4b. ${\color {blue}e_{1}}\ast {\color {OliveGreen}e_{2}}={\color {OliveGreen}e_{2}}$ |
By 4a. and 4b.,
       5. ${\color {blue}e_{1}}={\color {OliveGreen}e_{2}}$, contradicting 1.
Since a right assumption can't lead to a wrong or contradicting conclusion, our assumption (1.) is false and identity of a group is unique.

# Diagrams

| 1. Assume a group has two identities. | 2. e$_1$ * e$_2$ = e$_1$ as e$_2$ is identity of G, and e$_1$ is in G. | 3. e$_1$ * e$_2$ = e$_2$ as e$_1$ is identity of G, and e$_2$ is in G |
| 4. The two identities are the same. | 5. a group only has one identity |
# Theorem

    Let G be a Group.
    1. $\forall \;g,a,b\in G:(g\ast a=g\ast b)\rightarrow (a=b)$
    2. $\forall \;g,a,b\in G:(a\ast g=b\ast g)\rightarrow (a=b)$

# Proof

    0. Choose ${\color {OliveGreen}g},a,b\in G$ such that ${\color {OliveGreen}g}\ast a={\color {OliveGreen}g}\ast b$ 1. ${\color {BrickRed}g^{-1}}\in G$ definition of inverse of g in G (usage 1) 2. ${\color {BrickRed}g^{-1}}\ast ({\color {OliveGreen}g}\ast a)={\color {BrickRed}g^{-1}}\ast ({\color {OliveGreen}g}\ast b)$ 0. 3. $({\color {BrickRed}g^{-1}}\ast {\color {OliveGreen}g})\ast a=({\color {BrickRed}g^{-1}}\ast {\color {OliveGreen}g})\ast b$ $\ast$ is associative in G 4. $e_{G}\ast a=e_{G}\ast b$ g$^{-1}$ is inverse of g (usage 3) 5. $a=b\,$ e$_G$ is identity of G(usage 3)

# Diagrams

| if a*g = b*g... | a = a*g*g$^{-1}$ | b*g*g$^{-1}$ = b | then a = b. |

# Usage

* if a, b, x are in the same group, and x*a = x*b, then a = b

# Notice

* a, b, and g have to be all in the same group.
* $\ast$ has to be the binary operator of the group.
* G has to be a group.
# Definition of a Group

Firstly, a Group is
    a non-empty set, with a binary operation.
Secondly, if G is a Group, and the binary operation of Group G is $\ast$, then
    1. Closure
       $\forall \;a,b\in G:a\ast b\in G$
    2. Associativity
       $\forall \;a,b,c\in G:(a\ast b)\ast c=a\ast (b\ast c)$
    3. Identity
       $\exists \;e_{G}\in G:\forall \;g\in G:e_{G}\ast g=g\ast e_{G}=g$
    4. Inverse
       $\forall \;g\in G:\exists \;g^{-1}\in G:g\ast g^{-1}=g^{-1}\ast g=e_{G}$
From now on, e$_G$ always means identity of group G.

# Order of a Group

    Order of group G, o(G), is the number of distinct elements in G

# Diagram

| Closure: a*b is in G if a, b are in Group G | Associativity: (a*b)*c = a*(b*c) if a, b, c are in Group G | Identity: 1. Group G has an identity e$_G$. 2. e$_G$*c = c*e$_G$ = c if c is in Group G | Inverse: 1. if c is in G, c$^{-1}$ is in G. 2. c*c$^{-1}$ = c$^{-1}$*c = e$_G$ |

# References

* ↑ Binary operation at wikipedia
# Functions
## CreateSocketStream

Function CreateSocketStream:TSocketStream( socket:TSocket,autoClose=True )
Description: Create a socket stream
Returns: A new socket stream
Information: A socket stream allows you to treat a socket as if it were a stream.
If autoClose is true, socket will be automatically closed when the socket stream is closed. Otherwise, it is up to you to somehow close socket at a later time.

## SocketStreamSocket

Function SocketStreamSocket:TSocket( stream:TSocketStream )
Description: Get underlying socket from a socket stream
Returns: The socket used to create the socket stream
# BlitzMax/Modules/Streams/Text streams

The Text Stream module allows you to load and save text in a number of formats: LATIN1, UTF8 and UTF16.
The LATIN1 format uses a single byte to represent each character, and is therefore only capable of manipulating 256 distinct character values.
The UTF8 and UTF16 formats are capable of manipulating up to 1114112 character values, but will generally use greater storage space. In addition, many text processing applications are unable to handle UTF8 and UTF16 files.

# Functions
## LoadText

Function LoadText$( url:Object )
Description: Load text from a stream
Returns: A string containing the text
Information: LoadText loads LATIN1, UTF8 or UTF16 text from url.
The first bytes read from the stream control the format of the text:
| &$fe $ff | Text is big endian UTF16 |
| &$ff $fe | Text is little endian UTF16 |
| &$ef $bb $bf | Text is UTF8 |
If the first bytes don't match any of the above values, the stream is assumed to contain LATIN1 text.
A TStreamReadException is thrown if not all bytes could be read.

## SaveText

Function SaveText( str$,url:Object )
Description: Save text to a stream
Information: SaveText saves the characters in str to url.
If str contains any characters with a character code greater than 255, then str is saved in UTF16 format. Otherwise, str is saved in LATIN1 format.
A TStreamWriteException is thrown if not all bytes could be written.
# BlitzMax/Modules/System/Lua scripting

The MaxLua module provides a way to use the Lua scripting language from within Blitzmax programs.
Lua is a simple but fast and powerful scripting language. For more information on programming in Lua, please visit the official Lua site at http://www.lua.org
Here is an example of the MaxLua module in action:

# Types
## TLuaObject

A Lua 'object'
* Init
* Invoke
* Create

## TLuaObject: Methods

Method Init:TLuaObject( class:TLuaClass,supr:Object )
Description: Initialize the Lua object
Information: Sets the object's class and super object.
If the object was created with the TLuaObject.Create function, you do not need to call this method.
Method Invoke:Object( name$,args:Object )
Description: Invoke an object method
Information: name should refer to a function within the object's classes' source code.

## TLuaObject: Functions

Function Create:TLuaObject( class:TLuaClass,supr:Object )
Description: Create a Lua object
Information: Once a lua object has been created, object methods (actually Lua functions defined in the class) can be invoked using the Invoke method.

## TLuaClass

A Lua 'class'
The TLuaClass type is used to contain Lua source code.
The source code should consist of a series of one or more Lua functions.
To actually invoke these functions a lua object must first be created - see TLuaObject.
* SourceCode
* SetSourceCode
* Create

## TLuaClass: Methods

Method SourceCode$
Description: Get source code
Returns: The Lua source code for the class.
Method SetSourceCode:TLuaClass( source$ )
Description: Set source code
Information: Sets the class source code.
If the class was created with the TLuaClass.Create function, you do not need to call this method.

## TLuaClass: Functions

Function Create:TLuaClass( source$ )
Description: Create a Lua class
Returns: A new Lua class object.
Information: The source parameter must be valid Lua source code, and should contain a series of one or more lua function definitions.
These functions can later be invoked by using the TLuaObject.Invoke method.

# Functions
## LuaRegisterObject

Function LuaRegisterObject( obj:Object,name$ )
Description: Register a global object with Lua
Information: Once registered, the object can be accessed from within Lua scripts using the name identifier.
# BlitzMax/Modules/User input/Key codes

The key codes module contains a list of constants representing numeric codes for keys, modifiers and mouse buttons.
These codes are used by key and mouse events, and by the polled input module.
| Mouse Button | Value |
| Left mouse button | MOUSE_LEFT |
| Right mouse button | MOUSE_RIGHT |
| Middle mouse button | MOUSE_MIDDLE |
| Modifier | Value |
| Shift modifier | MODIFIER_SHIFT |
| Control modifier | MODIFIER_CONTROL |
| Option modifier | MODIFIER_OPTION |
| System modifier | MODIFIER_SYSTEM |
| Command modifier | MODIFIER_COMMAND |
| Key | Value |
| Backspace | KEY_BACKSPACE |
| Tab | KEY_TAB |
| Clear | KEY_CLEAR |
| Return | KEY_RETURN |
| Enter | KEY_ENTER |
| Pause | KEY_PAUSE |
| Escape | KEY_ESCAPE |
| Space | KEY_SPACE |
| Page Up | KEY_PAGEUP |
| Page Down | KEY_PAGEDOWN |
| End | KEY_END |
| Home | KEY_HOME |
| Cursor (Left) | KEY_LEFT |
| Cursor (Up) | KEY_UP |
| Cursor (Right) | KEY_RIGHT |
| Cursor (Down) | KEY_DOWN |
| Select | KEY_SELECT |
| Print | KEY_PRINT |
| Execute | KEY_EXECUTE |
| Screen | KEY_SCREEN |
| Insert | KEY_INSERT |
| Delete | KEY_DELETE |
| Help | KEY_HELP |
| 0 | KEY_0 |
| 1 | KEY_1 |
| 2 | KEY_2 |
| 3 | KEY_3 |
| 4 | KEY_4 |
| 5 | KEY_5 |
| 6 | KEY_6 |
| 7 | KEY_7 |
| 8 | KEY_8 |
| 9 | KEY_9 |
| A | KEY_A |
| B | KEY_B |
| C | KEY_C |
| D | KEY_D |
| E | KEY_E |
| F | KEY_F |
| G | KEY_G |
| H | KEY_H |
| I | KEY_I |
| J | KEY_J |
| K | KEY_K |
| L | KEY_L |
| M | KEY_M |
| N | KEY_N |
| O | KEY_O |
| P | KEY_P |
| Q | KEY_Q |
| R | KEY_R |
| S | KEY_S |
| T | KEY_T |
| U | KEY_U |
| V | KEY_V |
| W | KEY_W |
| X | KEY_X |
| Y | KEY_Y |
| Z | KEY_Z |
| Sys key (Left) | KEY_LSYS |
| Sys key (Right) | KEY_RSYS |
| Numpad 0 | KEY_NUM0 |
| Numpad 1 | KEY_NUM1 |
| Numpad 2 | KEY_NUM2 |
| Numpad 3 | KEY_NUM3 |
| Numpad 4 | KEY_NUM4 |
| Numpad 5 | KEY_NUM5 |
| Numpad 6 | KEY_NUM6 |
| Numpad 7 | KEY_NUM7 |
| Numpad 8 | KEY_NUM8 |
| Numpad 9 | KEY_NUM9 |
| Numpad * | KEY_NUMMULTIPLY |
| Numpad + | KEY_NUMADD |
| Numpad - | KEY_NUMSUBTRACT |
| Numpad . | KEY_NUMDECIMAL |
| Numpad / | KEY_NUMDIVIDE |
| F1 | KEY_F1 |
| F2 | KEY_F2 |
| F3 | KEY_F3 |
| F4 | KEY_F4 |
| F5 | KEY_F5 |
| F6 | KEY_F6 |
| F7 | KEY_F7 |
| F8 | KEY_F8 |
| F9 | KEY_F9 |
| F10 | KEY_F10 |
| F11 | KEY_F11 |
| F12 | KEY_F12 |
| Num Lock | KEY_NUMLOCK |
| Scroll Lock | KEY_SCROLL |
| Shift (Left) | KEY_LSHIFT |
| Shift (Right) | KEY_RSHIFT |
| Control (Left) | KEY_LCONTROL |
| Control (Right) | KEY_RCONTROL |
| Alt key (Left) | KEY_LALT |
| Alt key (Right) | KEY_RALT |
| Tilde | KEY_TILDE |
| Minus | KEY_MINUS |
| Equals | KEY_EQUALS |
| Bracket (Open) | KEY_OPENBRACKET |
| Bracket (Close) | KEY_CLOSEBRACKET |
| Backslash | KEY_BACKSLASH |
| Semi-colon | KEY_SEMICOLON |
| Quote | KEY_QUOTES |
| Comma | KEY_COMMA |
| Period | KEY_PERIOD |
| Slash | KEY_SLASH |
# BlitzMax/Modules/System/StandardIO

The BlitzMax StandardIO module contains commands for reading and writing text to the standard IO (Input/Output) stream.
The standard IO stream is generally connected to a 'console', allowing you to interact with an application in a very simple way.

# Globals
## StandardIOStream

Global StandardIOStream:TStream=TTextStream.Create( New TCStandardIO,TTextStream.UTF8 )
Description: BlitzMax Stream object used for Print and Input
Information: The Print and Input commands can be redirected by setting the StandardIOStream Global to an alternative Stream Object.

# Functions
## Print

Function Print( str$="" )
Description: Write a string to the standard IO stream
Information: A newline character is also written after str.
Example:

## Input

Function Input$( prompt$=">" )
Description: Receive a line of text from the standard IO stream
Information: The optional prompt is displayed before input is returned.
Example:
# Business Intelligence/Data extraction architecture frame

* Purpose:
* Input: Scorecard, KPI's, budgets, dimensions and data sources
* Activities: Create data extraction architecture for frame
* Outputs: Diagrams and explanations of data extraction architecture
* Documentation: Data extraction and integration architecture and metadata
This step details the architecture for extracting the data from the source. Remember that data architecture identifies data sources used to populate the data warehouse, the structure of the data warehouse, the extraction of data from the data warehouse into data marts and how this data is then extracted and used by users or business units. Here we are building the integration metadata that shows the associations between the source systems and our data mart.
The data architecture will depend on the type and location of data sources. In his step we will examine a few example architectures. However, we should start with a few rules of thumb regarding the creation of the diagrams:
* Begin by identifying all data sources
* Next, one data mart for the frame must end the data architecture
* All intermediate steps should be identified, including all data stores
* The need to extract, transform and load should be identified between all data stores
# Business Intelligence/ETL system

* Purpose:
* Input: Data extraction architecture
* Activities: Create ETL infrastructure
* Outputs: ETL infrastructure
* Documentation: ETL system
# Business Intelligence/Frame Testing acceptance

* Purpose: to determine if users accept the frame
* Input: BI Frame
* Activities: Decision makers test and accept prototype
* Outputs: Completed BI System
* Documentation: User acceptance of BI Frame
The final stage of building a BI frame is to gain stakeholder acceptance. This includes individuals from all parts of the business, from the IT department to the business unit. It also requires each aspect of the BI Frame architecture and infrastructure withstand scrutiny. It also requires discussion of how to maintain and update the frame.
A frame is never complete. It is always possible to improve or update a frame. Changes in the organization or environment may require strategy changes and this requires updating the architecture. Technology that can enhance the infrastructure and improve the ability of decision makers to monitor the business and make strategic changes should be implement. For this reason the initial frame acceptance does not signal the end of building the BI system but rather the beginning.
The frame consists of the architecture, infrastructure and documentation. Once the frame is submitted to the users the completion of the project comes when they accept the production BI frame. The frame must also meet the policies and rules of the IT department.
Stakeholders
* Decision makers
* Data mart administrator
* Data warehouse administrator
# Business Intelligence/Framing the strategy

* Purpose: this step demonstrates how to turn decision maker strategy into diagrams
* Input: List of decision makers; Decision makers' business knowledge
* Activities: Interview decision makers; Create Strategy Diagrams
* Outputs: Formalized decision maker knowledge
* Documents: Strategy Diagrams
Strategy Diagrams
This book adopts the current top-down approach to building Business Intelligence systems. This approach assumes that BI is driven by management strategy. Strategy diagrams identify the critical activities that allow a company to differentiate itself from the competition in order to create value in the marketplace (Morgan et al. 2007). These diagrams are formal and explicit models of knowledge and strategy. The three strategy diagrams allow us to model strategy are:
* Activity Map (Porter)
* Customer Outcomes Map (Chatterjee)
* Strategy Map (Norton and Kaplan)
* Causal link Map (Norton and Kaplan)
The first step in creating a BI system is to develop all three maps. This first requires gaining a firm understanding of the business. The next step is to gain a firm understanding of the strategy. Then the architect begins by interviewing all decision makers required by the project. This will often include multiple interviews with the same decision makers and also group discussions. The input is a list of decision makers.
The final step is to create the causal link map. The causal link map removes all the features of the three strategy diagrams and focuses on the causal links. This allows the strategy to become a theory (causal link map) with testable hypotheses (links).
The testing of the causal link map is fundamental in building an effective BI system. An important function of the reports that the decision maker will examine assume that X causes Y. X serves as a leading indicator of Y. The assumption is that by focusing on X it is possible to make certain that Y occurs. If this is not the case then focusing on X is a waste to time and resources. Therefore, testing the causal links is perhaps the most important step in developing the BI system.