Initialisierung einer OMNeT++-Simulation mit dem - RWTH

Werbung
Initialisierung einer OMNeT++-Simulation mit
dem RDF-Datenformat
Thomas Salzmann
Halil Alper Tokel
Lehrstuhl für Theoretische Informationstechnik
Prof. Dr. Rudolf Mathar
RWTH Aachen
January 9, 2016
Inhaltsverzeichnis
• Einleitung
• OMNeT++
• Das Semantische Web
• Modellierung von Smart Grids
• Implementierung
• Ausblick
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
2 / 25
Einleitung
Wandel des Energienetzes
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
3 / 25
Einleitung
Ziele des Projektes SINERGIEN
• Entwicklung einer Softwareplattform zur allumfassenden
Simulation zukünftiger Verteilnetze
• Betrachtung der Teilsysteme Energienetz,
Kommunikationsnetz und Markt
• Analyse und Bewertung wirtschaftlicher Risiken eines
Investitionsvorhabens
• Fundierte Investitionsentscheidung der Verteilnetzbetreiber
ermöglichen
• Umbau der Verteilnetze zu Smart Grids beschleunigen
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
4 / 25
Einleitung
Realisierung/Motivation der Seminararbeit
• Topologie des Verteilnetzes wird von BOFIT als
RDF/XML-Datei an Rechenkerne übermittelt
• Durchführung der Kommunikationsnetzsimulation mit
OMNET++ -> eigene Netzwerkbeschreibungssprache NED
• Thema der Seminararbeit: Konvertierung der RDF/XML-Datei
ins NED-Format zur Initialisierung des OMNET-Simulators
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
5 / 25
OMNET++
Allgemeines
• Objektorientiertes und modulares diskretes
Ereignissimulationsframework
• Implementiert in C++
• Sehr gut zur Simulation von Netzwerken geeignet
• Zwei Benutzerinterfaces: Tkenv, Cmdenv
• Integrierte Entwicklungsumgebung (basiert auf Eclipse)
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
6 / 25
OMNET++
Diskrete Ereignissimulation
• Netzwerkkomponenten werden als Module abgebildet
• Kommunikation der Module durch Nachrichten
• Event Queue verwaltet Nachrichten nach Zeitstempel sortiert
• Scheduler holt regelmäßig nächste Nachricht ab
• Ereignis tritt auf, wenn Simulationskernel dem
Empfängermodul diese Nachricht zustellt
• Simulation endet, wenn Event Queue leer ist
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
7 / 25
OMNET++
Modellierungskonzepte
• Hierarchische Anordnung von Modulen
-> kleinste Einheit ist ein simple module
-> compound module ist ein zusammengesetztes Modul
• Gates als Interfaces der Module
• Connections verbinden die Gates zweier Module
• Channel kapseln Kanalparameter des Kommunikationskanals
• Module können Parameter besitzen
-> Einfluss auf Verhalten
-> primitive Datentypen und xml
• Nachrichten können beliebig komplexe Informationen enthalten
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
8 / 25
OMNET++
Beispiel
simple Knoten
{
gates :
input in ;
output out ;
}
class Knoten : public cSimpleModule
{
protected :
virtual void initialize ();
virtual void handleMessage ( cMessage * msg );
}
network Netzwerk
{
types :
channel C extends ned . DatarateChannel
{
delay = 10 ms ;
}
submodules :
tic : Knoten ;
toc : Knoten ;
connections :
tic . out --> C --> toc . in
toc . out --> C --> tic . in
}
Define_Module ( Knoten );
void Knoten :: initialize ()
{
if ( strcmp (" tic " , getName ()) == 0)
{
cMessage * msg = new cMessage (" tictocMsg ");
send ( msg , " out ");
}
}
void Knoten :: handleMessage ( cMessage * msg )
{
send ( msg , " out ");
}
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
9 / 25
Das Semantische Web
Klassisches Web
• Definiert durch drei Standards:
-> URLs: Adressierung von Dokumenten im Web
-> HTTP: Protokoll zur Speicherung und Veränderung
von Dokumenten auf Webservern
-> HTML: Auszeichnungssprache, um Dokumente in Textform
zu verfassen
• HTML-Tags dienen ausschließlich dem Zweck der
Strukturierung und Formatierung von Text
• Folge: große Menge von Daten ohne Auszeichnung mit
semantischer Bedeutung
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
10 / 25
Das Semantische Web
Motivation
• Semantic Web als Erweiterung des klassischen Webs
• Vereinfache maschinelle Verarbeitung der Informationen im
Internet -> z.B. effiziente Extraktion spezifischer Daten
• Weise dazu den Informationen eines Dokumentes semantische
Bedeutung zu
• W3C-Konsortium zuständig für die Standardisierung der
Technologien des Semantic Web
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
11 / 25
Das Semantische Web
RDF - Resource Description Framework
• Formulierung logischer Aussagen über beliebige Dinge
• Logische Struktur entspricht einem Graphen
• RDF-Dokument als Menge von Tripeln (Subjekt, Prädikat,
Objekt)
• Subjekte und Prädikate sind Ressourcen, Objekte sind
Ressourcen oder Literale
• URIs als Bezeichner für Ressourcen
• Syntaxen: RDF/XML, N-Triples
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
12 / 25
Das Semantische Web
RDF - Beispiel
<? xml version ="1.0" encoding =" utf -8"? >
< rdf : RDF xml : base =" http :// www . ti . rwth - aachen . de / example / library #"
xmlns : rdf =" http :// www . w3 . org /1999/02/22 - rdf - syntax - ns #"
xmlns : lib =" file :/// P A T H _ T O _ SC H E M A _ F I L E . rdf #" >
< lib : library rdf : ID =" lib0001 " >
< lib : library . name > Engineering Library </ lib : library . name >
</ lib : library >
< lib : book rdf : ID =" entry0001 " >
< lib : book . library rdf : resource ="# lib0001 "/ >
</ lib : book >
< lib : book rdf : ID =" entry0002 " >
< lib : book . library rdf : resource ="# lib0001 "/ >
< lib : book . sequelTo rdf : resource ="# entry0001 "/ >
</ lib : book >
</ rdf : RDF >
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
13 / 25
Das Semantische Web
RDF - Beispiel
SCHEMA#library
RDF#type
BASE#lib0001
SCHEMA#book.library
BASE#entry0001
RDF#type
SCHEMA#book.library
SCHEMA#book
RDF#type
BASE#entry0002
SCHEMA#sequelTo
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
14 / 25
Das Semantische Web
Ontologien und RDFS
• Ontologie definiert eine Menge von Begriffen, ihre
Eigenschaften und Beziehungen einer gegebenen
Anwendungsdomäne -> Wissensrepräsentation
• Erleichtern den Austausch und das Teilen von Wissen
• Beschreibung in der Informatik durch formale Sprache
• Beschreibung einfacher Ontologien für RDF-Dokumente durch
RDFS
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
15 / 25
Das Semantische Web
RDFS - Schema zum Bibliotheksbeispiel
<? xml version ="1.0" encoding =" utf -8"? >
< rdf : RDF xml : base =" http :// www . ti . rwth - aachen . de / example / libraryschema #"
xmlns : rdf =" http :// www . w3 . org /1999/02/22 - rdf - syntax - ns #"
xmlns : rdfs =" http :// www . w3 . org /2000/01/ rdf - schema #" >
< rdfs : Class rdf : ID =" library " >
< rdfs : comment > The library catalogue </ rdfs : comment >
</ rdfs : Class >
< rdfs : Class rdf : ID =" book " >
< rdfs : comment > A book contained within a library </ rdfs : comment >
</ rdfs : Class >
< rdf : Property rdf : ID =" library . name " >
< rdfs : domain rdf : resource ="# library "/ >
< rdfs : range rdf : resource =" http :// www . w3 . org /2001/ XMLSchema # string "/ >
</ rdf : Property >
< rdf : Property rdf : ID =" book . library " >
< rdfs : domain rdf : resource ="# book "/ >
< rdfs : range rdf : resource ="# library "/ >
</ rdf : Property >
< rdf : Property rdf : ID =" sequelTo " >
< rdfs : comment > Indicates that the book is the sequel to another book also
within the library </ rdfs : comment >
< rdfs : domain rdf : resource ="# book "/ >
< rdfs : range rdf : resource ="# book "/ >
</ rdf : Property >
</ rdf : RDF >
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
16 / 25
Modellierung von Smart Grids
Modellierungsarbeit
• Verwendung der Modellierungssoftware Enterprise Architect
• Umfassende Modellierung der Betriebsmittel zukünftiger
Verteilnetze
• Energiebranche: CIM-Standard existiert bereits
• CIM-Profil: Untermenge aller verfügbaren Betriebsmittel, ihrer
Eigenschaften und Beziehungen
• CIM-Profil kann im Enterprise Architect aus bestehendem
Projekt generiert werden
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
17 / 25
Modellierung von Smart Grids
UML-Modell
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
18 / 25
Modellierung von Smart Grids
Definition der Topologie
• Exportieren des CIM-Profils als RDF-Schema mit dem Schema
Composer
• Definition einer beispielhaften Netztopologie auf Basis des
Schemas durch Editieren einer Textdatei (RDF/XML-Syntax)
-> Kraftwerk und Stromwandler mit je einem DSL- und
LTE-Modem
-> Zueinander passende Modems bidirektional verbunden
-> Grundlage für den Test des Konvertierungstools
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
19 / 25
Implementierung
Abstraktion der NED-Elemente
• Benötigte NED-Elemente: Submodule, Parameter,
Connections -> Abstraktion durch Klassen oder Structs
(NEDSubmodule, NEDParamter, NEDConnection)
• Gemeinsamkeiten der Implementierungen:
-> RDF/XML-Datei intern als RDF-Graph repräsentiert
-> Parsen des Graphen und Befüllen zweier Listen mit
NEDSubmodule- und NEDConnection-Objekten
-> Übergeben der Objekte an Funktion writeNED(), welche
die NED-Datei schreibt
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
20 / 25
Implementierung
Pseudocode
// Einlesen der RDF/XML-Datei
string rdfxml = read(pfad_zu_rdfxml_datei);
// Extrahieren der Triples
triples[] = extrahiere_triples(rdfxml);
// Generieren des RDF-Graphen
rdfgraph = gen_rdfgraph(triples);
// Parsen des Graphen und Schreiben der NED-Datei
parseGraph(rdfgraph, pfad_zu_ned_datei);
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
21 / 25
Implementierung
C++
• Raptor-Parser: RDF/XML zu Tripeldarstellung konvertieren
• Abstraktion eines Tripels durch Objekt vom Typ
RDFStatement
• Aufbauen des RDFGraphen aus den RDFStatement-Objekten
• Generierung der NED-Elemente durch Parsen des
RDF-Graphen
• Blacklist: Ignorieren von Modulen, die nicht zum
Kommunikationsnetz gehören
• Hoher Codierungsaufwand wegen selbstständiger
Implementierung aller Teilschritte
• Großer Lernerfolg
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
22 / 25
Implementierung
Java
• Verwendung des Semantic Web Frameworks Apache Jena
• RDF/XML-Datei kann mit einem Funktionsaufruf eingelesen
und intern als RDF-Graph repräsentiert werden
• Selektoren auf Tripelmenge anwenden, um Untermenge mit
bestimmten Eigenschaften zu erhalten
-> z.B. Selektor, der alle Submodule und ihre Parameter
extrahiert
• Wenig Codierungsaufwand durch mächtige RDF-API
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
23 / 25
Zusammenfassung und Ausblick
• Einarbeitung in das Konzept des Semantischen Webs
• Lösung des Initialisierungsproblems durch Implementierung
eines Konvertierungstools in C++ und Java
• Erarbeitung einer allgemeineren zweistufigen Lösung durch
Projektpartner
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
24 / 25
Vielen Dank für Ihre
Aufmerksamkeit
Initialisierung einer OMNeT++-Simulation mit dem RDF-Datenformat -
Thomas Salzmann -
25 / 25
Herunterladen