R-IOSEMIT

ID

Acronym: Simulation Environment Monitoring

Use-cases: Loire Flooding, HelloDiag

Description

R-IOSEMIT enables you to simulate a predefined set of data called events. An event has to follow a predefined structure and a topic. In R-IOSuite three types of sensors can be simulated: the events emitted from webservices, from tweets or from the Maple location tags.

Summary


The main functionalities

Synchronize

Create a sensor

Start/Stop/Play/Pause a sensor


How does the interpretation work?

R-IOSEMIT enables R-IOSUITE to interpret events in real-time. It uses a Complex Event Processing (CEP) engine to apply the interpretation rules available in your Use-Case (at src/main/resources/webjars/gind/usecases/loireflooding/interpretation-rules.

R-IORED will be design to update these rules through a dedicated tool.

  • The first event is notified to the CEP engine by the notify() method of the CEP rules manager
  • The second event is notified to the CEP engine etc.
    ...
  • When an event fulfills the conditions of an interpretation rule, the High level interpretation engine notifies that a node or a edge has to be deleted/updated or added to the ACTIVE WORLD (stored in Neo4J). This action is stated in the interpretation rule.
  • Then, the interpretation manager uses the notification to update the ACTIVE WORLD with the interpret() method.



How to add a sensor?


Concept of Data Source

Last update:

Type: Data Source

Extends: SemanticConcept

Category: Context

Origin: Native/Dedicated

ProtocolWSN/Twitter/Mapple

Type: SIMULATED/REAL


Simulated Data Source

Files (.xml) to be linked to a simulated WSN data source:

Illustration: Loire Flooding

  • Topic Set Producer - Topics corresponding to the events to be simulated
  • Sensors Event Topic Namespace - List of topics available
  • Event - file with the events to be simulated
  • Configuration - file with the configuration of the simulation: the frequency of the simulation and the configuration of the graph to be fed (on the interface during the simulation)

Files (.xml) to be linked to a simulated Mapple data source:

Illustration: HelloDiag

  • Event - file with the events to be simulated
  • Configuration - file with the configuration of the simulation, especially to configure the graph to be fed (on the interface during the simulation)

Structure of the configuration file

<datasetConfiguration>:

  • <emissions>: <frequency> (n <time>) OR <period>
  • <chartConfig>:
    • <title>
    • <lineChart> OR <map>

<lineChart>:

  • <eventType>
  • <axisX (1 fois)> : <title> 
    AND <mappingEventElement>
  • <axisY (n fois)> : <title>
    AND <mappingEventElement>
    AND <color (hexa)>
    AND <referenceLine> (<name> AND <value>)
  • <preview (boolean)>

<map>: <mapEvent> :

  • <eventType>
  • <latitudeMappingEventElement>
  • <longitudeMappingEventElement>
  • <preview (boolean)>
  • <polyline>: <color (hexa)>

How to configure the graph to be displayed on R-IOSEMIT during the simulation?


Example of event

Example of graph

Example of Mapping file


How to configure interpretation engines ?

R-IO Suite allows to define rules in order to consider and interpret incoming events. There are 2 ways to configure this interpretation.

We can either use a CEP or a ML mechanism. Both interpretations are configured with the same configuration schema (see following).

Interpretation configuration schema
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.gind.emac.fr/InterpretationConfigs"
	xmlns:tns="http://www.gind.emac.fr/InterpretationConfigs"
	elementFormDefault="qualified">

	<xsd:element name="interpretationConfigs">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="tns:interpretationConfig"
					minOccurs="0" maxOccurs="unbounded"></xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="cepRule">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="streamDefinition" type="xsd:string"></xsd:element>
				<xsd:element name="rule" type="xsd:string"></xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="mlConfig">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="moduleName" type="xsd:string"></xsd:element>
				<xsd:choice>
					<xsd:element name="dataSetToTrain" type="anyURI"></xsd:element>
					<xsd:sequence>
						<xsd:element name="features" type="anyURI"></xsd:element>
						<xsd:element name="labels" type="anyURI"></xsd:element>
					</xsd:sequence>
				</xsd:choice>
				<xsd:element name="trainedModel" type="anyURI"
					minOccurs="0"></xsd:element>
				<xsd:element name="useTrainedModel" type="xsd:boolean"></xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="interpretationConfig">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="name" type="QName"></xsd:element>
				<xsd:choice>
					<xsd:element ref="tns:cepRule"></xsd:element>
					<xsd:element ref="tns:mlConfig"></xsd:element>
				</xsd:choice>
				<xsd:element ref="tns:eventAction" maxOccurs="unbounded"
					minOccurs="0" />
				<xsd:element ref="tns:context" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="context">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="tns:subscriptionsRequired"
					minOccurs="0" maxOccurs="1" />
				<xsd:element name="collaborationName" type="xsd:string"
					minOccurs="0"></xsd:element>
				<xsd:element name="knowledgeSpaceName" type="xsd:string"
					minOccurs="0"></xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="eventAction">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="eventElementName" type="xsd:QName" />
				<xsd:element name="schemaDefinition">
					<xsd:complexType>
						<xsd:choice>
							<xsd:element name="content" type="xsd:string" />
							<xsd:element name="url" type="xsd:string" />
						</xsd:choice>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="topic" type="xsd:QName" />
				<xsd:element name="publishDestination" type="xsd:string"
					minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="subscriptionsRequired">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element maxOccurs="unbounded" minOccurs="0"
					name="entry">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="topic" type="xsd:QName" />
							<xsd:element name="correspondingEvent"
								type="xsd:QName" />
							<xsd:element minOccurs="0"
								name="endpointAddressToSubscribe" type="xsd:string" />
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>