{"id":197,"date":"2012-04-20T08:47:09","date_gmt":"2012-04-20T06:47:09","guid":{"rendered":"http:\/\/www.hpi.uni-potsdam.de\/giese\/gforge\/mdelab\/?page_id=197"},"modified":"2021-09-01T09:54:11","modified_gmt":"2021-09-01T07:54:11","slug":"morisia","status":"publish","type":"page","link":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/mdelab-projects\/software-engineering-for-self-adaptive-systems\/morisia\/","title":{"rendered":"Models at Runtime for Self-Adaptive Software"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-1119 alignright\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2013\/12\/morisia_235x85.png\" alt=\"morisia_235x85\" width=\"165\" height=\"59\" \/><\/p>\n<p style=\"text-align: justify\"><span style=\"font-size: 16px\">In this project, we investigate the role of\u00a0<\/span><strong style=\"font-size: 16px\">Mo<\/strong><span style=\"font-size: 16px\">dels at <\/span><strong style=\"font-size: 16px\">R<\/strong><span style=\"font-size: 16px\">unt<\/span><strong style=\"font-size: 16px\">i<\/strong><span style=\"font-size: 16px\">me for <\/span><strong style=\"font-size: 16px\">S<\/strong><span style=\"font-size: 16px\">elf-Adapt<\/span><strong style=\"font-size: 16px\">i<\/strong><span style=\"font-size: 16px\">ve Softw<\/span><strong style=\"font-size: 16px\">a<\/strong><span style=\"font-size: 16px\">re (MORISIA), i.e., models that are used in feedback\u00a0loops to enable self-adaptation. This\u00a0has resulted in a model-driven framework that follows the concepts of the <em>external approach<\/em>, <em>MAPE-K<\/em>, and <em>runtime models<\/em>.<\/span><\/p>\n<p style=\"text-align: justify\"><\/p>\n<h3><strong>Concepts<\/strong><\/h3>\n<p style=\"text-align: justify\"><span style=\"font-size: 16px\">The so called\u00a0<\/span>external<span style=\"font-size: 16px\"> approach (cf. Figure 1) splits the software into the domain and adaptation logic, respectively, the adaptable software and the adaptation engine, which promotes separation of concerns. The domain logic implements the domain functionality for the end users, while the adaptation logic implements a feedback loop that controls the runtime adaptation of the domain logic. Both logics are integrated by well-defined sensors and effectors.<\/span><\/p>\n<p style=\"text-align: justify\">As shown in Figure 1, the adaptation engine is refined by a blueprint\u00a0for self-adaptive systems, called MAPE-K, that has been proposed by Kephart and Chess [1]. The blueprint considers four adaptation activities that monitor and analyze the adaptable software, and if needed, plan and execute adaptations to the adaptable software while sharing some knowledge.<\/p>\n<div id=\"attachment_1129\" style=\"width: 597px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/FeedbackLoopsAndModels.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1129\" class=\"wp-image-1129 \" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/FeedbackLoopsAndModels.png\" alt=\"FeedbackLoopsAndModels\" width=\"587\" height=\"134\" \/><\/a><p id=\"caption-attachment-1129\" class=\"wp-caption-text\">Figure 1: External Approach (left), MAPE-K (middle), Runtime Models (right)<br \/>Figure taken from [3]<\/p><\/div>\n<p style=\"text-align: justify\">In the scope of this project, we refined the <em>knowledge<\/em> to a set of runtime models that are used in the feedback loop. We investigated which kind of runtime models are required to reflect the adaptable software as well as to specify the adaptation logic, i.e., the four MAPE activities. This has resulted in a categorization of runtime models [2] that is shown in Figure 1.\u00a0As stated in [3]:<\/p>\n<p style=\"text-align: justify\">\"<em>Reflection Models<\/em> reflect the adaptable software and its environment, and they are\u00a0updated by monitoring the software and environment. Thereby, <em>Monitoring Models<\/em>\u00a0map system-level observations to the abstraction level of reflection models. The reflection models are analyzed to identify adaptation needs by applying <em>Evaluation Models<\/em>\u00a0that, e.g., define constraints on reflection models. If adaptation needs have been identified, the planning activity devises a plan prescribing the adaptation on the reflection\u00a0models. Planning is specified by <em>Change Models<\/em> describing the adaptable software\u2019s\u00a0variability space. Evaluation models such as utility preferences guide the exploration\u00a0of this space to find an appropriate adaptation. Finally, the execute activity enacts the\u00a0planned adaptation on the adaptable software based on <em>Execution Models<\/em> that refine\u00a0model-level adaptation to system-level adaptation.<br \/>\nEvaluation and change models do not have to be strictly separate models, which is\u00a0exemplified by event-condition-action rules that address the analyze (evaluating the\u00a0condition) and the plan (applying the actions) activities in one step. Thus, we combine\u00a0them to <em>Adaptation Models<\/em> [4]. Monitoring and execution models\u00a0are concerned with the synchronization of the adaptable software and the reflection\u00a0models. This is known as the causal connection such that we consider\u00a0them as <em>Causal Connection Models<\/em>.\"<\/p>\n<p style=\"text-align: justify\">Based on the ideas of the external approach, MAPE-K, and runtime models used in feedback loops, we develop a model-driven framework for engineering self-adaptive software.<\/p>\n<h3><strong>Framework Overview<\/strong><\/h3>\n<p>The following figure taken from [5] depicts an overview on the framework.<\/p>\n<div id=\"attachment_558\" style=\"width: 582px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-framework.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-558\" class=\" wp-image-558 \" title=\"mrt-framework\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-framework.png\" alt=\"\" width=\"572\" height=\"281\" \/><\/a><p id=\"caption-attachment-558\" class=\"wp-caption-text\">Figure 2: Overview on the Models@run.time Framework for Self-Adaptive Software Systems<br \/>Figure taken from [5]<\/p><\/div>\n<p style=\"text-align: justify\">The <em>Managed System<\/em> is the adaptable subsystem\/software that contains the domain logic. It can be monitored and adapted through <em>Sensors<\/em> and <em>Effectors<\/em> that maintain a so called <em>Source Model<\/em>. This model is a causally connected self-representation to the managed system, i.e., changes of the managed system are reflected in the model, and changes of the model are reflected to the managed system.\u00a0 To ease this causal connection, the source model is at the same abstraction level as the sensors and effectors, which makes the source model complex, detailed, and platform-specific as it covers multiple concerns and it is rather related to the solution space of the managed systems. This makes the source model laborious and difficult to use by autonomic managers. However, the source model enables the application of model-driven engineering techniques on top of it.<br \/>\nTherefore, multiple <em>Target Models<\/em> are derived and incrementally synchronized with the source model. With respect to the source model, a target model is less complex, at a higher level of abstraction, and platform-independent as it focuses on a specific concern such as performance or failures and it is related to problem space of the managed system. Thus, target models provide problem space oriented views on the managed system, i.e., knowledge that is\u00a0 used by autonomic managers\/adaptation engines to perform the feedback loop's adaptation activities (MAPE).<\/p>\n<p style=\"text-align: justify\">Source and target models are synchronized with each other in both directions:<\/p>\n<ul style=\"text-align: justify\">\n<li>source model changes reflecting changes of the managed systems are synchronized to the target models. This supports the monitoring [6].<\/li>\n<li>target model changes reflecting planned adaptations performed by autonomic managers are synchronized to the source model and afterwards enacted to the managed system. This supports the execution of adaptation [7].<\/li>\n<\/ul>\n<p style=\"text-align: justify\">In our framework, the incremental and bidirectional synchronization of source and target models is realized by a <em>Model Synchronization Engine<\/em> based on <em>Triple Graph Grammars<\/em> (TGGs), in particular by <a title=\"MoTE \u2013 TGG-based Model Transformation Engine\" href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=123\">MoTE<\/a> (though the framework is not restricted to this specific engine). Therefore, <em>TGG Rules<\/em>\u00a0specify at the level of metamodels how source and target models are synchronized with each other. The incremental synchronization is efficient, which makes it feasible to employ the engine on-line in a running self-adaptive system. However, since source and target models are at different abstraction levels, the bidirectional synchronization based on TGGs is impeded due to limited support for abstraction\/refinement transformations. This is addressed by <em>Factories<\/em> that provide creation or instantiation patterns for refinements within a synchronization. Thus, TGG rules and the factories as <em>Monitoring and Execution Models<\/em>\u00a0specify the monitoring and execution of adaptation by defining which model changes are propagated from or to the managed system.<\/p>\n<p style=\"text-align: justify\">The remaining activities of analyzing the managed system and planning adaptation are performed on individual target models for different concerns. So far, we investigated three concerns, namely, performance, architectural constraints, and failures to address self-optimization, self-configuration, and self-healing. The analysis and planning steps are specified by <em>Adaptation Models<\/em> that operate on top of the target models. In our framework, we use <em>Story Patterns<\/em> (SPs) and the <em>Object Constraint Language<\/em> (OCL) to define rules specifying the analysis and planning activities (<em>Evaluation and Change Models<\/em>). Analysis rules evaluate the target models and thus the managed system, while planning rules change target models to prescribe an adaptation to be performed through the source model on the managed system. For execution, corresponding interpreters such as the <a title=\"Story Diagram Tools\" href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=16\">Story Diagram Tools<\/a> for SPs are employed in our framework. However, the framework is not restricted to the SP and OCL rules to specify the analysis and planning activities.<\/p>\n<p style=\"text-align: justify\">Finally, multiple runtime models are simultaneously used within a feedback loop, which requires means to capture their interplay to properly specify and execute a feedback loop. Therefore, we are developing <a title=\"Executable Runtime Megamodels for Feedback Loops in Self-Adaptive Software Systems\" href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=584\">Executable Runtime Megamodels<\/a> that provide a modeling language and an interpreter for feedback loops that are driven by models@run.time.<\/p>\n<h3><strong>Framework Instantiation for EJB-based Software<\/strong><\/h3>\n<p style=\"text-align: justify\">Our framework has been instantiated for the <a href=\"http:\/\/www.eclipse.org\/emf\" target=\"_blank\" rel=\"noopener\"><em>Eclipse Modeling Framework<\/em><\/a> (EMF) and for managed systems realized with\u00a0<a href=\"http:\/\/www.jcp.org\/en\/jsr\/detail?id=220\" target=\"_blank\" rel=\"noopener\"><em>Enterprise Java Beans 3<\/em><\/a> (EJB3) technology. EJB application servers, in our case <a href=\"http:\/\/glassfish.java.net\/\" target=\"_blank\" rel=\"noopener\"><em>GlassFish<\/em><\/a>, typically provide platform-specific management APIs (basic sensors and effectors) to control EJB-based applications, which are, however, limited with respect to seamless runtime adaptation. Therefore, we use <em>mKernel<\/em>,\u00a0a manageable kernel for EJB-based systems providing comprehensive support for management of enterprise applications\u00a0[8], in particular sensors and effectors for seamless adaptation. However, the server's or mKernel's sensors and effectors are code-based and they do not provide model-based views that reflect the running applications while following MDE principles, especially the layers of models, metamodel, and meta-metamodels. Thus, we have developed an adapter that incrementally synchronizes the source model with the sensors and effectors, which actually implements the causal connection between the source model and the managed system. This causal connector is generic in the sense that it is reusable for any EJB3-based application compatible with GlassFish.<\/p>\n<p style=\"text-align: justify\">This causal connector maintains a source model at runtime that conforms to the metamodel shown in Figure 3 in a highly simplified version. Figure 4 depicts the slightly simplified metamodel for target models used for self-healing. Instances of these metamodels are synchronized with each other as specified by TGG rules. Overall, eleven TGG rules and one factory are required to specify the synchronization of arbitrary source and target models conforming to the corresponding metamodels as shown here. One of these rules is depicted in Figure 5. To illustrate the specification of an example adaptation, Figure 6 depicts a Story Pattern that modifies the self-healing target model to prescribe an adaptation. This example adaptation changes the bindings between components.<\/p>\n<div id=\"attachment_562\" style=\"width: 110px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-source-metamodel.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-562\" class=\" wp-image-562 \" title=\"mrt-source-metamodel\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-source-metamodel.png\" alt=\"\" width=\"100\" height=\"100\" \/><\/a><p id=\"caption-attachment-562\" class=\"wp-caption-text\">Figure 3: Highly Simplified Metamodel for Source Models<\/p><\/div>\n<div id=\"attachment_566\" style=\"width: 110px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-target-metamodel.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-566\" class=\" wp-image-566 \" title=\"mrt-target-metamodel\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-target-metamodel.png\" alt=\"\" width=\"100\" height=\"100\" \/><\/a><p id=\"caption-attachment-566\" class=\"wp-caption-text\">Figure 4: Slightly Simplified Metamodel for Target Models Used for Self-Healing<\/p><\/div>\n<div id=\"attachment_570\" style=\"width: 110px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-tgg-rule.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-570\" class=\" wp-image-570 \" title=\"mrt-tgg-rule\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-tgg-rule.png\" alt=\"\" width=\"100\" height=\"100\" \/><\/a><p id=\"caption-attachment-570\" class=\"wp-caption-text\">Figure 5: Example TGG Rule<\/p><\/div>\n<div id=\"attachment_572\" style=\"width: 110px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-sp-adaptation.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-572\" class=\" wp-image-572 \" title=\"mrt-sp-adaptation\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/04\/mrt-sp-adaptation.png\" alt=\"\" width=\"100\" height=\"100\" \/><\/a><p id=\"caption-attachment-572\" class=\"wp-caption-text\">Figure 6: Example Adaptation Story Pattern<\/p><\/div>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h3><strong>Framework Status and Availability<\/strong><\/h3>\n<p style=\"text-align: justify\">The framework has been employed to academic case studies for self-adaptive software, in particular to\u00a0<a title=\"RUBiS-EJB3\" href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=942\">mRUBiS<\/a> as the adaptable software\/managed system.\u00a0 The framework\u2019s implementation is continuously enhanced and elaborated, and it is available on request. For further information on the research prototype, please contact us.<\/p>\n<h3 style=\"text-align: justify\"><strong>References<\/strong><\/h3>\n<ol>\n<li>Jeffrey O. Kephart and David M. Chess. <i>The Vision of Autonomic Computing<\/i>. Computer 36, 1, 41-50, 2013.<\/li>\n<li>Thomas Vogel and Andreas Seibel and Holger Giese. <i>The Role of Models and Megamodels at Runtime<\/i>. In\u00a0Juergen Dingel and Arnor Solberg, ed.,\u00a0Models in Software Engineering, Workshops and Symposia at MODELS 2010, Oslo, Norway, October 3-8, 2010, Reports and Revised Selected Papers,\u00a0vol. 6627 of Lecture Notes in Computer Science (LNCS), pages 224-238.\u00a0Springer-Verlag,\u00a05 2011.<\/li>\n<li>Thomas Vogel and Holger Giese. <i>Model-Driven Engineering of Self-Adaptive Software with EUREMA<\/i>. ACM Trans. Auton. Adapt. Syst.\u00a08(4):18:1-18:33,\u00a01 2014.<\/li>\n<li>Thomas Vogel and Holger Giese.\u00a0<i>Requirements and Assessment of Languages and Frameworks for Adaptation Models<\/i>.\u00a0In\u00a0J\u00f6rg Kienzle, ed.,\u00a0Models in Software Engineering, Workshops and Symposia at MoDELS 2011, Wellington, New Zealand, October 16-21, 2011, Reports and Revised Selected Papers, vol. 7167\u00a0of Lecture Notes in Computer Science (LNCS),\u00a0pages 167-182.\u00a0Springer-Verlag,\u00a04 2012.<\/li>\n<li>Holger Giese and Leen Lambers and Basil Becker and Stephan Hildebrandt and Stefan Neumann and Thomas Vogel and Sebastian W\u00e4tzoldt.\u00a0<i>Graph Transformations for MDE, Adaptation, and Models at Runtime<\/i>.\u00a0In\u00a0Marco Bernardo and Vittorio Cortellessa and Alfonso Pierantonio, ed.,\u00a0Formal Methods for Model-Driven Engineering,\u00a0vol. 7320\u00a0of Lecture Notes in Computer Science (LNCS),\u00a0pages 137-191.Springer-Verlag,\u00a06 2012.<\/li>\n<li>Thomas Vogel and Stefan Neumann and Stephan Hildebrandt and Holger Giese and Basil Becker.\u00a0<i>Incremental Model Synchronization for Efficient Run-Time Monitoring<\/i>. \u00a0In\u00a0Sudipto Ghosh, ed.,\u00a0Models in Software Engineering, Workshops and Symposia at MODELS 2009, Denver, CO, USA, October 4-9, 2009, Reports and Revised Selected Papers,\u00a0vol. 6002\u00a0of Lecture Notes in Computer Science (LNCS),pages 124-139.\u00a0Springer-Verlag,\u00a04 2010.<\/li>\n<li>Thomas Vogel and Holger Giese.\u00a0<i>Adaptation and Abstract Runtime Models<\/i>. In\u00a0Proceedings of the 5th Workshop on Software Engineering for Adaptive and Self-Managing Systems (SEAMS 2010) at the 32nd IEEE\/ACM International Conference on Software Engineering (ICSE 2010), Cape Town, South Africa,\u00a0pages 39-48,\u00a05 2010.\u00a0ACM.<\/li>\n<li>Jens Bruhn and Christian Niklaus and Thomas Vogel and Guido Wirtz.\u00a0<i>Comprehensive support for management of Enterprise Applications<\/i>.\u00a0In\u00a0Proceedings of the 6th ACS\/IEEE International Conference on Computer Systems and Applications (AICCSA 2008), Doha, Katar,\u00a0pages 755-762,\u00a03 2008.\u00a0IEEE Computer Society.<\/li>\n<\/ol>\n<h3><strong>Project Team<\/strong><\/h3>\n<ul>\n<li><a href=\"https:\/\/hpi.de\/en\/giese\/staff\/thomas-vogel.html\" target=\"_blank\" rel=\"noopener\">Thomas Vogel<\/a> (contact person)<\/li>\n<li><a href=\"https:\/\/hpi.de\/en\/giese\/people\/prof-dr-holger-giese.html\" target=\"_blank\" rel=\"noopener\">Holger Giese<\/a><\/li>\n<\/ul>\n<h3><strong>Related MDELab Projects<\/strong><\/h3>\n<ul>\n<li><a title=\"Executable Runtime Megamodels for Feedback Loops in Self-Adaptive Software Systems\" href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=584\">Executable Runtime Megamodels<\/a><\/li>\n<\/ul>\n<h3><strong>Other MDELab Tools Used by the Framework<\/strong><\/h3>\n<ul>\n<li><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=16\">Story Diagram Tools<\/a><\/li>\n<li><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=123\">MoTE - A TGG-based Model Transformation Engine<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In this project, we investigate the role of\u00a0Models at Runtime for Self-Adaptive Software (MORISIA), i.e., models that are used in feedback\u00a0loops to enable self-adaptation. This\u00a0has resulted in a model-driven framework that follows the concepts of the external approach, MAPE-K, and &hellip; <a href=\"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/mdelab-projects\/software-engineering-for-self-adaptive-systems\/morisia\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":1119,"parent":1111,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-197","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages\/197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/comments?post=197"}],"version-history":[{"count":5,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages\/197\/revisions"}],"predecessor-version":[{"id":1420,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages\/197\/revisions\/1420"}],"up":[{"embeddable":true,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages\/1111"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/media\/1119"}],"wp:attachment":[{"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/media?parent=197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}