GraphTalk - Semantische Netze mit structr

Preview:

Citation preview

structr

Axel MorgnerStructr GmbH

axel.morgner@structr.com

Aufbau von semantischen Netzenmit Structr und Neo4j

structrstructr

structrstructr

Structr GmbH (Frankfurt am Main)

Hersteller von Structr: Graph Application Platform

Open-Source-Produkt

Basiert auf Graphdatenkbank Neo4j

Über Structr

structr

structr

Semantisches Netz

structr

Semantisches Netz Formales Modell (Begriffe u. Relationen)

structr

Semantisches Netz Formales Modell (Begriffe u. Relationen)

Ziel: Abbildung von Zusammenhängen der realen Welt

structr

Warum?

structr

Herausforderungen

structr

Komplexität

structr

Komplexitätnimmt immer zu

structr

Wachsende Komplexität

structr

Wachsende Komplexität

Tendenz zur Vereinfachung

structr

Wachsende Komplexität

Tendenz zur Vereinfachung

Statische Betrachtung

structr

Wachsende Komplexität

Tendenz zur Vereinfachung

Statische Betrachtung

Falsche/ungenaue Abstraktion

structr

Wachsende Komplexität

Tendenz zur Vereinfachung

Statische Betrachtung

Falsche/ungenaue Abstraktion

Entwicklung an den Anwendern vorbei

structr

Veränderung

structr

Veränderungist allgegenwärtig

structr

Veränderung

structr

Veränderung

Limitiert durch Flexibilität der Modelle und Methoden

structr

Veränderung

Limitiert durch Flexibilität der Modelle und Methoden

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

structr

Veränderung

Limitiert durch Flexibilität der Modelle und Methoden

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

Qualität?

structr

Software?

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

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

structr

RDF/OWL

structr

RDF/OWL

Semantic Web

structr

RDF/OWL

Komplexer Software-Stack („Schichtkuchen“)

structr

Quellen:

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

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?

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:

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:

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

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

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

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

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

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

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

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

structr

Flexibilität

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

structr

Performance

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

structr

Demo

structr

Fragen?

structr

Danke!

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)

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

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)

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

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

structr

Kommerzielle Optionen

Kommerzielle Lizenzen

Individualentwicklung

Training

Support

Hosting: structr.com

Recommended