graphtalk - semantische netze mit structr
TRANSCRIPT
structr
Axel MorgnerStructr GmbH
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