50
structr Axel Morgner Structr GmbH [email protected] Aufbau von semantischen Netzen mit Structr und Neo4j

GraphTalk - Semantische Netze mit structr

Embed Size (px)

Citation preview

Page 1: GraphTalk - Semantische Netze mit structr

structr

Axel MorgnerStructr GmbH

[email protected]

Aufbau von semantischen Netzenmit Structr und Neo4j

Page 2: GraphTalk - Semantische Netze mit structr

structrstructr

Page 3: GraphTalk - Semantische Netze mit structr

structrstructr

Structr GmbH (Frankfurt am Main)

Hersteller von Structr: Graph Application Platform

Open-Source-Produkt

Basiert auf Graphdatenkbank Neo4j

Über Structr

Page 4: GraphTalk - Semantische Netze mit structr

structr

Page 5: GraphTalk - Semantische Netze mit structr

structr

Semantisches Netz

Page 6: GraphTalk - Semantische Netze mit structr

structr

Semantisches Netz Formales Modell (Begriffe u. Relationen)

Page 7: GraphTalk - Semantische Netze mit structr

structr

Semantisches Netz Formales Modell (Begriffe u. Relationen)

Ziel: Abbildung von Zusammenhängen der realen Welt

Page 8: GraphTalk - Semantische Netze mit structr

structr

Warum?

Page 9: GraphTalk - Semantische Netze mit structr

structr

Herausforderungen

Page 10: GraphTalk - Semantische Netze mit structr

structr

Komplexität

Page 11: GraphTalk - Semantische Netze mit structr

structr

Komplexitätnimmt immer zu

Page 12: GraphTalk - Semantische Netze mit structr

structr

Wachsende Komplexität

Page 13: GraphTalk - Semantische Netze mit structr

structr

Wachsende Komplexität

Tendenz zur Vereinfachung

Page 14: GraphTalk - Semantische Netze mit structr

structr

Wachsende Komplexität

Tendenz zur Vereinfachung

Statische Betrachtung

Page 15: GraphTalk - Semantische Netze mit structr

structr

Wachsende Komplexität

Tendenz zur Vereinfachung

Statische Betrachtung

Falsche/ungenaue Abstraktion

Page 16: GraphTalk - Semantische Netze mit structr

structr

Wachsende Komplexität

Tendenz zur Vereinfachung

Statische Betrachtung

Falsche/ungenaue Abstraktion

Entwicklung an den Anwendern vorbei

Page 17: GraphTalk - Semantische Netze mit structr

structr

Veränderung

Page 18: GraphTalk - Semantische Netze mit structr

structr

Veränderungist allgegenwärtig

Page 19: GraphTalk - Semantische Netze mit structr

structr

Veränderung

Page 20: GraphTalk - Semantische Netze mit structr

structr

Veränderung

Limitiert durch Flexibilität der Modelle und Methoden

Page 21: GraphTalk - Semantische Netze mit structr

structr

Veränderung

Limitiert durch Flexibilität der Modelle und Methoden

Mehr Komplexität (Meta-Modelle, Über-Abstraktion)

Page 22: GraphTalk - Semantische Netze mit structr

structr

Veränderung

Limitiert durch Flexibilität der Modelle und Methoden

Mehr Komplexität (Meta-Modelle, Über-Abstraktion)

Qualität?

Page 23: GraphTalk - Semantische Netze mit structr

structr

Software?

Page 24: GraphTalk - Semantische Netze mit structr

structr

ObjectStructure

visit()

visit()

ConcreteVisitor1

visit()

visit()

ConcreteVisitor2

visit()

visit()

«interface»

Visitor

accept()

«interface»

Element

accept()

operation()

ConcreteElementB

accept()

operation()

ConcreteElementA

accept (Visitor v) {v.visit(this);

}

visit (ConcreteElementA a) {a.operation();

}

visit (ConcreteElementB b) {b.operation();

}

walk1 () {for (Element element : structure) {

element.accept(visitor1);}

}

structure: ObjectStructure

visitor1: Visitor

visitor2: Visitor

walk1()

walk2()

Client

~ collection

*

«import»

«import»

UML

Page 25: GraphTalk - Semantische Netze mit structr

structr

ObjectStructure

visit()

visit()

ConcreteVisitor1

visit()

visit()

ConcreteVisitor2

visit()

visit()

«interface»

Visitor

accept()

«interface»

Element

accept()

operation()

ConcreteElementB

accept()

operation()

ConcreteElementA

accept (Visitor v) {v.visit(this);

}

visit (ConcreteElementA a) {a.operation();

}

visit (ConcreteElementB b) {b.operation();

}

walk1 () {for (Element element : structure) {

element.accept(visitor1);}

}

structure: ObjectStructure

visitor1: Visitor

visitor2: Visitor

walk1()

walk2()

Client

~ collection

*

«import»

«import»

UML

Entity Relationship Model

Page 26: GraphTalk - Semantische Netze mit structr

structr

RDF/OWL

Page 27: GraphTalk - Semantische Netze mit structr

structr

RDF/OWL

Semantic Web

Page 28: GraphTalk - Semantische Netze mit structr

structr

RDF/OWL

Komplexer Software-Stack („Schichtkuchen“)

Page 29: GraphTalk - Semantische Netze mit structr

structr

Quellen:

http://leirdal.net/blog/archives/138-semantic-web-layer-cake.htmlhttp://englishcoffeedrinker.blogspot.de/2009/07/realising-semantic-web.html

Page 30: GraphTalk - Semantische Netze mit structr

structr

ObjectStructure

visit()

visit()

ConcreteVisitor1

visit()

visit()

ConcreteVisitor2

visit()

visit()

«interface»

Visitor

accept()

«interface»

Element

accept()

operation()

ConcreteElementB

accept()

operation()

ConcreteElementA

accept (Visitor v) {v.visit(this);

}

visit (ConcreteElementA a) {a.operation();

}

visit (ConcreteElementB b) {b.operation();

}

walk1 () {for (Element element : structure) {

element.accept(visitor1);}

}

structure: ObjectStructure

visitor1: Visitor

visitor2: Visitor

walk1()

walk2()

Client

~ collection

*

«import»

«import»

Lösung?

Page 31: GraphTalk - Semantische Netze mit structr

structr

ObjectStructure

visit()

visit()

ConcreteVisitor1

visit()

visit()

ConcreteVisitor2

visit()

visit()

«interface»

Visitor

accept()

«interface»

Element

accept()

operation()

ConcreteElementB

accept()

operation()

ConcreteElementA

accept (Visitor v) {v.visit(this);

}

visit (ConcreteElementA a) {a.operation();

}

visit (ConcreteElementB b) {b.operation();

}

walk1 () {for (Element element : structure) {

element.accept(visitor1);}

}

structure: ObjectStructure

visitor1: Visitor

visitor2: Visitor

walk1()

walk2()

Client

~ collection

*

«import»

«import» Vereinheitlichung vonModellen, Logik,Schichten und Schnittstellen

Unser Ansatz:

Page 32: GraphTalk - Semantische Netze mit structr

structr

ObjectStructure

visit()

visit()

ConcreteVisitor1

visit()

visit()

ConcreteVisitor2

visit()

visit()

«interface»

Visitor

accept()

«interface»

Element

accept()

operation()

ConcreteElementB

accept()

operation()

ConcreteElementA

accept (Visitor v) {v.visit(this);

}

visit (ConcreteElementA a) {a.operation();

}

visit (ConcreteElementB b) {b.operation();

}

walk1 () {for (Element element : structure) {

element.accept(visitor1);}

}

structure: ObjectStructure

visitor1: Visitor

visitor2: Visitor

walk1()

walk2()

Client

~ collection

*

«import»

«import» Structr-Plattform

Unser Ansatz:

Page 33: GraphTalk - Semantische Netze mit structr

structrEntwicklungsumgebung für mobile und Web-Anwendungen („Micro-Apps“)

Page 34: GraphTalk - Semantische Netze mit structr

structrEntwicklungsumgebung für mobile und Web-Anwendungen („Micro-Apps“)

Integriertes Content-Management-System für statische Resourcen und Medien-Assets

Page 35: GraphTalk - Semantische Netze mit structr

structrEntwicklungsumgebung für mobile und Web-Anwendungen („Micro-Apps“)

Integriertes Content-Management-System für statische Resourcen und Medien-Assets

DMS für Dateien, Volltext-Suche, CMIS-Support

Page 36: GraphTalk - Semantische Netze mit structr

structrEntwicklungsumgebung für mobile und Web-Anwendungen („Micro-Apps“)

Integriertes Content-Management-System für statische Resourcen und Medien-Assets

DMS für Dateien, Volltext-Suche, CMIS-Support

Dynamisches REST-API mit flexiblen JSON-Views

Page 37: GraphTalk - Semantische Netze mit structr

structrEntwicklungsumgebung für mobile und Web-Anwendungen („Micro-Apps“)

Integriertes Content-Management-System für statische Resourcen und Medien-Assets

DMS für Dateien, Volltext-Suche, CMIS-Support

Dynamisches REST-API mit flexiblen JSON-Views

Visueller Schema-Editor zur interaktiven Datenmodellierung

Page 38: GraphTalk - Semantische Netze mit structr

structrEntwicklungsumgebung für mobile und Web-Anwendungen („Micro-Apps“)

Integriertes Content-Management-System für statische Resourcen und Medien-Assets

DMS für Dateien, Volltext-Suche, CMIS-Support

Dynamisches REST-API mit flexiblen JSON-Views

Visueller Schema-Editor zur interaktiven Datenmodellierung

Daten-Editor mit tabellarischer und Graph-Ansicht zur Datenpflege

Page 39: GraphTalk - Semantische Netze mit structr

structrEntwicklungsumgebung für mobile und Web-Anwendungen („Micro-Apps“)

Integriertes Content-Management-System für statische Resourcen und Medien-Assets

DMS für Dateien, Volltext-Suche, CMIS-Support

Dynamisches REST-API mit flexiblen JSON-Views

Visueller Schema-Editor zur interaktiven Datenmodellierung

Daten-Editor mit tabellarischer und Graph-Ansicht zur Datenpflege

Transaktionssichere Persistenz und operationelle Sicherheit mit Neo4j Enterprise

Page 40: GraphTalk - Semantische Netze mit structr

structr

Flexibilität

Kurzer Roundtrip für Änderungsanforderungen (Minuten/Stunden statt Tage/Wochen)

Page 41: GraphTalk - Semantische Netze mit structr

structr

Performance

Graph-Queries (ad-hoc, Echtzeit),keine Vorab-Optimierung nötig

Page 42: GraphTalk - Semantische Netze mit structr

structr

Demo

Page 43: GraphTalk - Semantische Netze mit structr

structr

Fragen?

Page 44: GraphTalk - Semantische Netze mit structr

structr

Danke!

Page 45: GraphTalk - Semantische Netze mit structr

structr

Zeitersparnis

Wegfall der typischer, zeitaufwendiger Tätigkeiten:

- Auswahl Programmiersprache und Frameworks- Einrichtung Entwicklungsumgebung, Datenbank, Treiber- Aufbau Entwickler-Team- Entwicklung „Boilerplate Code“

Stark verkürzte Zeit von der Idee bis zum ersten Prototyp (Proof-of-Concept an einem Tag)

Page 46: GraphTalk - Semantische Netze mit structr

structr

KostenersparnisVernachlässigbare Projekt-Anlaufkosten

- Entwicklung ohne Programmierkenntnisse möglich- kein komplexes Setup notwendig (eine einzige Software)- kein Integrationsaufwand, kaum Abhängigkeiten- Open Source mit kostenloser Community-Variante

Page 47: GraphTalk - Semantische Netze mit structr

structr

FlexibilitätKurzer Roundtrip für Änderungsanforderungen

(Minuten/Stunden statt Tage/Wochen)

- Schema-lose/-flexible Datenbank Neo4j als Kern- alle Tätigkeiten von einer Person durchführbar- Anpassung an viele Use Cases durch „Micro-Apps“- Integrierbarkeit durch flexibles REST-API (JSON/XML)

Page 48: GraphTalk - Semantische Netze mit structr

structr

WartbarkeitKurzer Roundtrip für Änderungsanforderungen

(Minuten/Stunden statt Tage/Wochen)

- geringer Aufwand für Wiedereinstieg in Kontext- regelmäßige Bugfixes und Updates von den Herstellern- kontinuierliche Weiterentwicklung- wachsende Entwickler- und Nutzer-Community

Page 49: GraphTalk - Semantische Netze mit structr

structr

VerfügbarkeitIn Kürze: 2.0

Issues: github.com/structr/structr

Forum: structr.org/forum

Download: Maven Central

Infos und Services: structr.org

Blog: structr.org/blog

News: @structr on Twitter

Support und Doku: support.structr.com

Page 50: GraphTalk - Semantische Netze mit structr

structr

Kommerzielle Optionen

Kommerzielle Lizenzen

Individualentwicklung

Training

Support

Hosting: structr.com