SLIDE 1 OWFgraph
A graph database for the off-shore wind farm domain Erik Quaeghebeur Sebastian Sanchez Michiel Zaaijer
Wind Energy Group Ů Delft University of Technology Ů The Netherlands
EUROS Programme Ű Wind Farm Design Optimization Ű Uncertainty Model of Wind Farms
WESC 2017
27 June 2017
SLIDE 2
SLIDE 3 V A R I A N T _ O F I N P U T _ T O INPUT_TO OUTPUT_OF I N P U T _ T O INPUT_TO I N P U T _ T O INPUT_TO I N P U T _ T O V A R I A N T _ O F OUTPUT_OF INPUT_TO PART_OF DESCRIBES A P P E A R S _ I N A P P E A R S _ I N APPEARS_IN P A R T _ O F DESCRIBES PART_OF DESCRIBES A P P E A R S _ I N DESCRIBES D E S C R I B E S D E S C R I B E S APPEARS_IN APPEARS_IN A P P E A R S _ I N Katić mixed wake model wake model wake expansion factor wind turbine position wind speed at hub height free stream wind direction free stream wind speed at hub height thrust curve set of wind turbines rotor diameter FarmFlow efgective TI at hub height ambient TI number of wind turbines OWF structure wake speed deĄcit wind proĄle power law free stream wind velocity wind free stream wind speed at
OWF layout wind turbine structure hub height reference height wind proĄle power law exponent
SLIDE 4
Overview
Goal Why build a graph database for the offshore wind farm domain? Content What do we put into the database? How do we structure the content in the database? Does everything fit easily in this structure? Practical setup What software and hardware do we use? Querying How do we add and extract data? Conclusions What is different from what we expected? What are our plans for the future?
SLIDE 5
Overview
Goal Why build a graph database for the offshore wind farm domain? Content What do we put into the database? How do we structure the content in the database? Does everything fit easily in this structure? Practical setup What software and hardware do we use? Querying How do we add and extract data? Conclusions What is different from what we expected? What are our plans for the future?
SLIDE 6
Overview
Goal Why build a graph database for the offshore wind farm domain? Content What do we put into the database? How do we structure the content in the database? Does everything fit easily in this structure? Practical setup What software and hardware do we use? Querying How do we add and extract data? Conclusions What is different from what we expected? What are our plans for the future?
SLIDE 7
Overview
Goal Why build a graph database for the offshore wind farm domain? Content What do we put into the database? How do we structure the content in the database? Does everything fit easily in this structure? Practical setup What software and hardware do we use? Querying How do we add and extract data? Conclusions What is different from what we expected? What are our plans for the future?
SLIDE 8
Overview
Goal Why build a graph database for the offshore wind farm domain? Content What do we put into the database? How do we structure the content in the database? Does everything fit easily in this structure? Practical setup What software and hardware do we use? Querying How do we add and extract data? Conclusions What is different from what we expected? What are our plans for the future?
SLIDE 9 Goal – EUROS programme context
Project 3 Wind Farm Design Optimization Work Package 3.2 Uncertainty Model of Wind Farms Challenge Develop a model for the accumulation of uncertainty from multiple sources in performance and cost of an entire OWF. Activities
- make inventory of sources of uncertainty;
- create causal map of uncertainty propagation;
- assessment of uncertainty contributions to OWF CoE;
- select uncertainty propagation approach.
⇒ Conclusion Create a structured description of the domain
SLIDE 10 Goal – EUROS programme context
Project 3 Wind Farm Design Optimization Work Package 3.2 Uncertainty Model of Wind Farms Challenge Develop a model for the accumulation of uncertainty from multiple sources in performance and cost of an entire OWF. Activities
- make inventory of sources of uncertainty;
- create causal map of uncertainty propagation;
- assessment of uncertainty contributions to OWF CoE;
- select uncertainty propagation approach.
⇒ Conclusion Create a structured description of the domain
SLIDE 11 Goal – EUROS programme context
Project 3 Wind Farm Design Optimization Work Package 3.2 Uncertainty Model of Wind Farms Challenge Develop a model for the accumulation of uncertainty from multiple sources in performance and cost of an entire OWF. Activities
- make inventory of sources of uncertainty;
- create causal map of uncertainty propagation;
- assessment of uncertainty contributions to OWF CoE;
- select uncertainty propagation approach.
⇒ Conclusion Create a structured description of the domain
SLIDE 12 Goal – EUROS programme context
Project 3 Wind Farm Design Optimization Work Package 3.2 Uncertainty Model of Wind Farms Challenge Develop a model for the accumulation of uncertainty from multiple sources in performance and cost of an entire OWF. Activities
- make inventory of sources of uncertainty;
- create causal map of uncertainty propagation;
- assessment of uncertainty contributions to OWF CoE;
- select uncertainty propagation approach.
⇒ Conclusion Create a structured description of the domain
SLIDE 13 Goal – EUROS programme context
Project 3 Wind Farm Design Optimization Work Package 3.2 Uncertainty Model of Wind Farms Challenge Develop a model for the accumulation of uncertainty from multiple sources in performance and cost of an entire OWF. Activities
- make inventory of sources of uncertainty;
- create causal map of uncertainty propagation;
- assessment of uncertainty contributions to OWF CoE;
- select uncertainty propagation approach.
⇒ Conclusion Create a structured description of the domain
SLIDE 14 Goal – other contexts
- Evaluation of multidisciplinary design analysis and optimization workflows
(Sebastian’s project)
8 . Wake adde turbulence (6)
- 3. Order layout (1)
- 4. Wind turbine
thrust coefficient (6)
wake effects (5) 6 . Wake merging (3)
- 7. Wind turbine power (6)
- 1. Optimiser
- 2. Inflow wind (4)
- 9. Seabed depth (4)
- 10. Support structure design (2)
- 11. O&M (1)
- 13. Cable efficiency (1)
- 12. Infield cable topology (3)
- 14. AEP
- 15. Total costs
- 16. LCOE
TI H i Cs A CO&M ηc {Ti} Cc X*i , Y*i CT CT ∆ Ui Ui Ui Ui Pi AEP CT
θ, Uθ, P (Uθ) X i, Y i X i, Y i X i, Y i X i, Y i Uθ, P (Uθ)
2 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- Teaching:
- domain exploration;
- analysis of how different disciplines are coupled.
- . . .
SLIDE 15 Goal – other contexts
- Evaluation of multidisciplinary design analysis and optimization workflows
(Sebastian’s project)
8 . Wake adde turbulence (6)
- 3. Order layout (1)
- 4. Wind turbine
thrust coefficient (6)
wake effects (5) 6 . Wake merging (3)
- 7. Wind turbine power (6)
- 1. Optimiser
- 2. Inflow wind (4)
- 9. Seabed depth (4)
- 10. Support structure design (2)
- 11. O&M (1)
- 13. Cable efficiency (1)
- 12. Infield cable topology (3)
- 14. AEP
- 15. Total costs
- 16. LCOE
TI H i Cs A CO&M ηc {Ti} Cc X*i , Y*i CT CT ∆ Ui Ui Ui Ui Pi AEP CT
θ, Uθ, P (Uθ) X i, Y i X i, Y i X i, Y i X i, Y i Uθ, P (Uθ)
2 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- Teaching:
- domain exploration;
- analysis of how different disciplines are coupled.
- . . .
SLIDE 16
Content
SLIDE 17
Content as node labels
Object
support structure, active yaw system, rotor bearing,. . .
SLIDE 18
Content as node labels
Object Phenomenon
storm, wake,. . .
SLIDE 19
Content as node labels
Procedure
turbine maintenance, OWF installation,. . .
Object Phenomenon
SLIDE 20
Content & its structure as edges and their type
Attribute
state, structure, cost
Procedure Object Phenomenon
DESCRIBES D E S C R I B E S APPEARS_IN CAUSES
SLIDE 21
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon
AFFECTS wake wind
SLIDE 22
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon
INPUT_TO OUTPUT_OF RNA assembly rotor, nacelle RNA
SLIDE 23
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon
MODIFIES MEASURES INSTRUCTS crew RNA state air state
SLIDE 24
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon
Real world Virtual world
SLIDE 25
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon Variable
yaw angle, temperature, interest rate,. . . Real world Virtual world
DESCRIBES OUTPUT_OF
SLIDE 26
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon Variable Model
wake model, ECN Install, FAST,. . . Real world Virtual world
APPEARS_IN INPUT_TO OUTPUT_OF
SLIDE 27
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon Variable Model
Real world Virtual world
RELATES_TO ECN FarmFlow wake
SLIDE 28
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon Variable Model
Real world Virtual world
PART_OF PART_OF PART_OF PART_OF PART_OF PART_OF geometry structure turbine OWF
SLIDE 29
Content & its structure as edges and their type
Attribute Procedure Object Phenomenon Variable Model
Real world Virtual world
VARIANT_OF VARIANT_OF VARIANT_OF VARIANT_OF VARIANT_OF VARIANT_OF Katić wake model VAWT turbine
SLIDE 30
Content constrained by the foundational ontology
Attribute Procedure Object Phenomenon Variable Model
Real world Virtual world
DESCRIBES AFFECTS INPUT_TO MEASURES DESCRIBES APPEARS_IN RELATES_TO
SLIDE 31
Content as node and edge properties
Attribute Procedure Object Phenomenon Variable Model
Real world Virtual world
author, name, . . . . . . , description, . . . . . . , reference, . . . . . . , domain, unit, value, . . . DESCRIBES . . . , note
SLIDE 32 Representation challenges
- When is variable an input to a model, an output, or both?
- How to isolate sub-models of a larger model and deal with their variables?
- A concept should only be represented once;
what about models that deal with multiple instances of a concept?
SLIDE 33 Representation challenges
- When is variable an input to a model, an output, or both?
- How to isolate sub-models of a larger model and deal with their variables?
- A concept should only be represented once;
what about models that deal with multiple instances of a concept?
SLIDE 34 Representation challenges
- When is variable an input to a model, an output, or both?
- How to isolate sub-models of a larger model and deal with their variables?
- A concept should only be represented once;
what about models that deal with multiple instances of a concept?
SLIDE 35 Representation challenges
- When is variable an input to a model, an output, or both?
- How to isolate sub-models of a larger model and deal with their variables?
- A concept should only be represented once;
what about models that deal with multiple instances of a concept?
DESCRIBES D E S C R I B E S P A R T _ O F APPEARS_IN VARIANT_OF APPEARS_IN DESCRIBES DESCRIBES APPEARS_IN A P P E A R S _ I N INPUT_TO APPEARS_IN DESCRIBES DESCRIBES cable endpoint pair cable endpoint cable endpoint state cable endpoint power Ćow electrical cable wind turbine power
electrical cable structure electrical cable power loss set of
OWF power
electrical cable state
SLIDE 36
Our practical setup
SLIDE 37
Our practical setup
export backup
SLIDE 38
Our practical setup
proxy/webserver https://rw.owfgraph.lr.tudelft.nl export backup
SLIDE 39
Our practical setup
Cluster
read-only slave read-write master proxy/webserver https://owfgraph.lr.tudelft.nl proxy/webserver https://rw.owfgraph.lr.tudelft.nl export backup
SLIDE 40
Our practical setup
VPS server access
Cluster
read-only slave read-write master proxy/webserver https://owfgraph.lr.tudelft.nl proxy/webserver https://rw.owfgraph.lr.tudelft.nl export backup
SLIDE 41 Querying
- Queries—questions asked or instructions given—are formulated using Cypher.
- My interest: query the database for possible paths between variables of interest.
SLIDE 42 Querying
- Queries—questions asked or instructions given—are formulated using Cypher.
- My interest: query the database for possible paths between variables of interest.
SLIDE 43 Querying
- Queries—questions asked or instructions given—are formulated using Cypher.
- My interest: query the database for possible paths between variables of interest.
match p = shortestPath((w:Variable)-[*0..6]-(f:Variable)) where w.name="wind speed at hub height" and f.name="OWF power output" and all(n in nodes(p) where n:Model or n:Variable) return p
INPUT_TO APPEARS_IN O U T P U T _ O F A P P E A R S _ I N A P P E A R S _ I N I N P U T _ T O OWF available wind pow. . . wind speed at hub height set of wind turbines wake model OWF power
SLIDE 44 Querying
- Queries—questions asked or instructions given—are formulated using Cypher.
- My interest: query the database for possible paths between variables of interest.
match p = shortestPath((w:Variable)-[*0..6]-(f:Variable)) where w.name="free stream wind speed at hub height" and f.name="OWF power output" and all(n in nodes(p) where (n:Model or n:Variable) and not id(n) in [278, 260, 62, 2929]) return p
A P P E A R S _ I N OUTPUT_OF APPEARS_IN V A R I A N T _ O F I N P U T _ T O O U T P U T _ O F INPUT_TO APPEARS_IN APPEARS_IN wind turbine power
wind speed at hub height free stream wind speed at hub height wake model cable endpoint power Ćow wind turbine power
power curve conformity OWF power
SLIDE 45 Lessons Learned
- Designing the foundational ontology takes quite a number of iterations
and requires experience from adding content.
- Even with the foundational ontology more-or-less settled,
structuring content is sometimes difficult.
- Adding well-curated content takes time.
- System administration also requires a non-negligible effort.
SLIDE 46 Lessons Learned
- Designing the foundational ontology takes quite a number of iterations
and requires experience from adding content.
- Even with the foundational ontology more-or-less settled,
structuring content is sometimes difficult.
- Adding well-curated content takes time.
- System administration also requires a non-negligible effort.
SLIDE 47 Lessons Learned
- Designing the foundational ontology takes quite a number of iterations
and requires experience from adding content.
- Even with the foundational ontology more-or-less settled,
structuring content is sometimes difficult.
- Adding well-curated content takes time.
- System administration also requires a non-negligible effort.
SLIDE 48 Lessons Learned
- Designing the foundational ontology takes quite a number of iterations
and requires experience from adding content.
- Even with the foundational ontology more-or-less settled,
structuring content is sometimes difficult.
- Adding well-curated content takes time.
- System administration also requires a non-negligible effort.
SLIDE 49 Lessons Learned
- Designing the foundational ontology takes quite a number of iterations
and requires experience from adding content.
- Even with the foundational ontology more-or-less settled,
structuring content is sometimes difficult.
- Adding well-curated content takes time.
- System administration also requires a non-negligible effort.
But those are growing pains: the knowledge base idea is feasible and our implementation works!
SLIDE 50 Current & Next Steps
- (Personally) shift from content entry to use.
- Opening up the database.
- Now: Read-only version semi-publicly available.
- Next: get others involved in using and adding content.
(Learning curve!)
- Future: build a community to maintain and improve the database.
SLIDE 51 Current & Next Steps
- (Personally) shift from content entry to use.
- Opening up the database.
- Now: Read-only version semi-publicly available.
- Next: get others involved in using and adding content.
(Learning curve!)
- Future: build a community to maintain and improve the database.
SLIDE 52
Questions? Feedback?
SLIDE 53 Live demo – Read-Only
- Surf to https://owfgraph.lr.tudelft.nl;
login ‘IEA37’, password ‘. . . ’.
- Interface: command line at the top, output canvas below,
info & control pane at the left.
match (n:Object) return (n) limit 3 Explore neighborhood interactively.
match (n:Object) with n limit 5 return n.name, n.description, n.author
match p = (:Object {name:"monopile"})-[*]->() return p
SLIDE 54 Live demo – Read-Only
- Surf to https://owfgraph.lr.tudelft.nl;
login ‘IEA37’, password ‘. . . ’.
- Interface: command line at the top, output canvas below,
info & control pane at the left.
match (n:Object) return (n) limit 3 Explore neighborhood interactively.
match (n:Object) with n limit 5 return n.name, n.description, n.author
match p = (:Object {name:"monopile"})-[*]->() return p
SLIDE 55 Live demo – Read-Only
- Surf to https://owfgraph.lr.tudelft.nl;
login ‘IEA37’, password ‘. . . ’.
- Interface: command line at the top, output canvas below,
info & control pane at the left.
match (n:Object) return (n) limit 3 Explore neighborhood interactively.
match (n:Object) with n limit 5 return n.name, n.description, n.author
match p = (:Object {name:"monopile"})-[*]->() return p
SLIDE 56 Live demo – Read-Only
- Surf to https://owfgraph.lr.tudelft.nl;
login ‘IEA37’, password ‘. . . ’.
- Interface: command line at the top, output canvas below,
info & control pane at the left.
match (n:Object) return (n) limit 3 Explore neighborhood interactively.
match (n:Object) with n limit 5 return n.name, n.description, n.author
match p = (:Object {name:"monopile"})-[*]->() return p
SLIDE 57 Live demo – Read-Write
- Surf to https://rw.owfgraph.lr.tudelft.nl.
(Currently only Sebastian & I have access.)
- Same interface, but now also write—and delete—queries are enabled.
- Creation (merging):
match (a:Attribute {name:"wind"}) merge (a)<-[:PART_OF]-(b {name:"wind color"}) return a, b
- Setting and removing labels and properties:
match (b {name:"wind color"}) set b:Attribute, b.author="killroy" remove b.name return b
- Deleting nodes and edges:
match (b {author:"killroy"}) detach delete b
SLIDE 58 Live demo – Read-Write
- Surf to https://rw.owfgraph.lr.tudelft.nl.
(Currently only Sebastian & I have access.)
- Same interface, but now also write—and delete—queries are enabled.
- Creation (merging):
match (a:Attribute {name:"wind"}) merge (a)<-[:PART_OF]-(b {name:"wind color"}) return a, b
- Setting and removing labels and properties:
match (b {name:"wind color"}) set b:Attribute, b.author="killroy" remove b.name return b
- Deleting nodes and edges:
match (b {author:"killroy"}) detach delete b
SLIDE 59 Live demo – Read-Write
- Surf to https://rw.owfgraph.lr.tudelft.nl.
(Currently only Sebastian & I have access.)
- Same interface, but now also write—and delete—queries are enabled.
- Creation (merging):
match (a:Attribute {name:"wind"}) merge (a)<-[:PART_OF]-(b {name:"wind color"}) return a, b
- Setting and removing labels and properties:
match (b {name:"wind color"}) set b:Attribute, b.author="killroy" remove b.name return b
- Deleting nodes and edges:
match (b {author:"killroy"}) detach delete b
SLIDE 60 Live demo – Read-Write
- Surf to https://rw.owfgraph.lr.tudelft.nl.
(Currently only Sebastian & I have access.)
- Same interface, but now also write—and delete—queries are enabled.
- Creation (merging):
match (a:Attribute {name:"wind"}) merge (a)<-[:PART_OF]-(b {name:"wind color"}) return a, b
- Setting and removing labels and properties:
match (b {name:"wind color"}) set b:Attribute, b.author="killroy" remove b.name return b
- Deleting nodes and edges:
match (b {author:"killroy"}) detach delete b