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