SlideShare a Scribd company logo
1 of 29
Download to read offline
TemporalEMF:
A Temporal Metamodeling
Framework
Abel Gómez, Jordi Cabot, and Manuel Wimmer
Internet Interdisciplinary Institute – Universitat Oberta de Catalunya, Spain
CDL-MINT, TU Wien, Austria
1
Introduction
• Modeling tools have improved drastically in the last decade…
• … but temporal aspect have not received enough attention yet.
• Typical solutions are built on top of (or rely concepts brought from)
generic Version Control Systems: e.g. model versions/snapshots taken at
user-defined times.
• This approximate answer is not enough in scenarios that require a more
precise and immediate response to temporal queries like complex
collaborative co-engineering processes or runtime models.
2
TemporalEMF contributions
• Light-weight extension of current metamodeling standards:
• Models are automatically and transparently treated as temporal…
• … but if the only state is of interest, models are accessed as usual.
• Infrastructure to manage temporal models:
• TemporalEMF is built on top the Eclipse Modeling Framework.
• Models history is stored in a NoSQL database.
• We outline a temporal query language
• Allows retrieving historical information from models at any point in time.
3
Temporal Metamodeling
4
A Profile for Temporal Metamodeling
5
A Profile for Temporal Metamodeling
6
A Profile for Temporal Metamodeling
Now, we can compute execution states of
interest (e.g. for provenance) and KPIs
(such as utilization):
• Q1 — Find all items which have been
processed by machine m.
• Q2 — Find the components which had
an item assigned at a particular point in
time.
• Q3 —Find the components which had
an item assigned within a particular
time frame.
• Q4 — Compute the utilization of
machine e for the whole system
execution lifecycle.
7
A Profile for Temporal Metamodeling
Now, we can compute execution states of
interest (e.g. for provenance) and KPIs
(such as utilization):
• Q1 — Find all items which have been
processed by machine m.
• Q2 — Find the components which had
an item assigned at a particular point in
time.
• Q3 —Find the components which had
an item assigned within a particular
time frame.
• Q4 — Compute the utilization of
machine e for the whole system
execution lifecycle.
8
Component.allInstances()->select(c | not c.hostsAt(instant).oclIsUndefined())
Approach
9
Bigtable
• Map-based (i.e. key-value) stores are especially well-suited to persist
models managed by (meta-)modeling frameworks.
• BigTable is a distributed, scalable, versioned, non-relational and column-
based big data store; where data is stored in tables, which are sparse,
distributed, persistent, and multi-dimensional sorted maps.
• These maps are indexed by the tuple row key, column key, and a
timestamp.
10
Example
11
Example
12
Example
13
Example
14
Example
15
Example
16
Architecture
17
Architecture
18
Experiments
https://github.com/SOM-Research/temporal-emf-benchmarks
19
Questions
• RQ1: Production Cost — Is there a significant difference of the time
required for producing and manipulating temporal model elements?
• RQ2: Storage Cost — Is there a significant difference of the storage size
of temporal models?
• RQ3: Reproduction Cost — Is there a significant difference of restoring
previous versions of temporal model elements?
TemporalEMF vs Saving Historical Data Explicitly
20
RQ1
21
RQ2
22
RQ2
23
RQ3
24
RQ3
25
Related work and conclusions
26
Related work
• Model versioning tools:
• Typically, XMI serialization saved on CVS, SVN or Git.
• Each version is a self-contained model instance.
• Versions are generated by the user.
• Lack of precision.
• Fine grained historical data may require model comparison operations.
• Models@run.time:
• Provide a modeling infrastructure to instantiate models (as we do), they do not
store the history of those changes.
27
Conclusions
• Conceptual schemas are automatically and transparently treated as
temporal models.
• Can be subject to temporal queries to retrieve and compare the model
contents at different points in time.
• An extension to the standard EMF APIs allows modelers to easily express
such temporal queries.
• TemporalEMF relies on HBase to provide an scalable persistence layer to
store all past versions.
28
TemporalEMF:
A Temporal Metamodeling
Framework
Abel Gómez, Jordi Cabot, and Manuel Wimmer
Internet Interdisciplinary Institute – Universitat Oberta de Catalunya, Spain
CDL-MINT, TU Wien, Austria
29

More Related Content

Similar to TemporalEMF: A Temporal Metamodeling Framework

Simulation of Heterogeneous Cloud Infrastructures
Simulation of Heterogeneous Cloud InfrastructuresSimulation of Heterogeneous Cloud Infrastructures
Simulation of Heterogeneous Cloud InfrastructuresCloudLightning
 
EDUCON 2010: Adaptation in a PoEML-based E-learning Platform
EDUCON 2010: Adaptation in a PoEML-based E-learning PlatformEDUCON 2010: Adaptation in a PoEML-based E-learning Platform
EDUCON 2010: Adaptation in a PoEML-based E-learning PlatformRoberto Perez-Rodriguez
 
It5304 syllabus
It5304 syllabusIt5304 syllabus
It5304 syllabusnimal83
 
Parallel architecture-programming
Parallel architecture-programmingParallel architecture-programming
Parallel architecture-programmingShaveta Banda
 
The art of architecture
The art of architectureThe art of architecture
The art of architectureADDQ
 
Parallel architecture &programming
Parallel architecture &programmingParallel architecture &programming
Parallel architecture &programmingIsmail El Gayar
 
Design principles & quality factors
Design principles & quality factorsDesign principles & quality factors
Design principles & quality factorsAalia Barbe
 
NoC simulators presentation
NoC simulators presentationNoC simulators presentation
NoC simulators presentationHossam Hassan
 

Similar to TemporalEMF: A Temporal Metamodeling Framework (20)

ppt2.pptx
ppt2.pptxppt2.pptx
ppt2.pptx
 
Simulation of Heterogeneous Cloud Infrastructures
Simulation of Heterogeneous Cloud InfrastructuresSimulation of Heterogeneous Cloud Infrastructures
Simulation of Heterogeneous Cloud Infrastructures
 
EDUCON 2010: Adaptation in a PoEML-based E-learning Platform
EDUCON 2010: Adaptation in a PoEML-based E-learning PlatformEDUCON 2010: Adaptation in a PoEML-based E-learning Platform
EDUCON 2010: Adaptation in a PoEML-based E-learning Platform
 
Værktøjer udviklet på AAU til analyse af SCJ programmer
Værktøjer udviklet på AAU til analyse af SCJ programmerVærktøjer udviklet på AAU til analyse af SCJ programmer
Værktøjer udviklet på AAU til analyse af SCJ programmer
 
Unit i
Unit iUnit i
Unit i
 
CS8592-OOAD Lecture Notes Unit-5
CS8592-OOAD Lecture Notes Unit-5 CS8592-OOAD Lecture Notes Unit-5
CS8592-OOAD Lecture Notes Unit-5
 
It5304 syllabus
It5304 syllabusIt5304 syllabus
It5304 syllabus
 
lecture 1.pptx
lecture 1.pptxlecture 1.pptx
lecture 1.pptx
 
Design Patterns - GOF
Design Patterns - GOFDesign Patterns - GOF
Design Patterns - GOF
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Dss6 7
Dss6 7Dss6 7
Dss6 7
 
Parallel architecture-programming
Parallel architecture-programmingParallel architecture-programming
Parallel architecture-programming
 
MLOps.pptx
MLOps.pptxMLOps.pptx
MLOps.pptx
 
Real-Time Design Patterns
Real-Time Design PatternsReal-Time Design Patterns
Real-Time Design Patterns
 
The art of architecture
The art of architectureThe art of architecture
The art of architecture
 
Parallel architecture &programming
Parallel architecture &programmingParallel architecture &programming
Parallel architecture &programming
 
Design principles & quality factors
Design principles & quality factorsDesign principles & quality factors
Design principles & quality factors
 
NoC simulators presentation
NoC simulators presentationNoC simulators presentation
NoC simulators presentation
 
AngularJS
AngularJSAngularJS
AngularJS
 
overview.pdf
overview.pdfoverview.pdf
overview.pdf
 

More from abgolla

A model based approach for developing event-driven architectures with AsyncAPI
A model based approach for developing event-driven architectures with AsyncAPIA model based approach for developing event-driven architectures with AsyncAPI
A model based approach for developing event-driven architectures with AsyncAPIabgolla
 
A Modeling Editor and Code Generator for AsyncAPI
A Modeling Editor and Code Generator for AsyncAPIA Modeling Editor and Code Generator for AsyncAPI
A Modeling Editor and Code Generator for AsyncAPIabgolla
 
Enabling Performance Modeling for the Masses: Initial Experiences
Enabling Performance Modeling for the Masses: Initial ExperiencesEnabling Performance Modeling for the Masses: Initial Experiences
Enabling Performance Modeling for the Masses: Initial Experiencesabgolla
 
On the Opportunities of Scalable Modeling Technologies: An Experience Report ...
On the Opportunities of Scalable Modeling Technologies: An Experience Report ...On the Opportunities of Scalable Modeling Technologies: An Experience Report ...
On the Opportunities of Scalable Modeling Technologies: An Experience Report ...abgolla
 
Una herramienta para evaluar el rendimiento de aplicaciones intensivas en datos
Una herramienta para evaluar el rendimiento de aplicaciones intensivas en datosUna herramienta para evaluar el rendimiento de aplicaciones intensivas en datos
Una herramienta para evaluar el rendimiento de aplicaciones intensivas en datosabgolla
 
Fase 2015 - Map-based Transparent Persistence for Very Large Models
Fase 2015 - Map-based Transparent Persistence for Very Large ModelsFase 2015 - Map-based Transparent Persistence for Very Large Models
Fase 2015 - Map-based Transparent Persistence for Very Large Modelsabgolla
 

More from abgolla (6)

A model based approach for developing event-driven architectures with AsyncAPI
A model based approach for developing event-driven architectures with AsyncAPIA model based approach for developing event-driven architectures with AsyncAPI
A model based approach for developing event-driven architectures with AsyncAPI
 
A Modeling Editor and Code Generator for AsyncAPI
A Modeling Editor and Code Generator for AsyncAPIA Modeling Editor and Code Generator for AsyncAPI
A Modeling Editor and Code Generator for AsyncAPI
 
Enabling Performance Modeling for the Masses: Initial Experiences
Enabling Performance Modeling for the Masses: Initial ExperiencesEnabling Performance Modeling for the Masses: Initial Experiences
Enabling Performance Modeling for the Masses: Initial Experiences
 
On the Opportunities of Scalable Modeling Technologies: An Experience Report ...
On the Opportunities of Scalable Modeling Technologies: An Experience Report ...On the Opportunities of Scalable Modeling Technologies: An Experience Report ...
On the Opportunities of Scalable Modeling Technologies: An Experience Report ...
 
Una herramienta para evaluar el rendimiento de aplicaciones intensivas en datos
Una herramienta para evaluar el rendimiento de aplicaciones intensivas en datosUna herramienta para evaluar el rendimiento de aplicaciones intensivas en datos
Una herramienta para evaluar el rendimiento de aplicaciones intensivas en datos
 
Fase 2015 - Map-based Transparent Persistence for Very Large Models
Fase 2015 - Map-based Transparent Persistence for Very Large ModelsFase 2015 - Map-based Transparent Persistence for Very Large Models
Fase 2015 - Map-based Transparent Persistence for Very Large Models
 

Recently uploaded

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

TemporalEMF: A Temporal Metamodeling Framework

  • 1. TemporalEMF: A Temporal Metamodeling Framework Abel Gómez, Jordi Cabot, and Manuel Wimmer Internet Interdisciplinary Institute – Universitat Oberta de Catalunya, Spain CDL-MINT, TU Wien, Austria 1
  • 2. Introduction • Modeling tools have improved drastically in the last decade… • … but temporal aspect have not received enough attention yet. • Typical solutions are built on top of (or rely concepts brought from) generic Version Control Systems: e.g. model versions/snapshots taken at user-defined times. • This approximate answer is not enough in scenarios that require a more precise and immediate response to temporal queries like complex collaborative co-engineering processes or runtime models. 2
  • 3. TemporalEMF contributions • Light-weight extension of current metamodeling standards: • Models are automatically and transparently treated as temporal… • … but if the only state is of interest, models are accessed as usual. • Infrastructure to manage temporal models: • TemporalEMF is built on top the Eclipse Modeling Framework. • Models history is stored in a NoSQL database. • We outline a temporal query language • Allows retrieving historical information from models at any point in time. 3
  • 5. A Profile for Temporal Metamodeling 5
  • 6. A Profile for Temporal Metamodeling 6
  • 7. A Profile for Temporal Metamodeling Now, we can compute execution states of interest (e.g. for provenance) and KPIs (such as utilization): • Q1 — Find all items which have been processed by machine m. • Q2 — Find the components which had an item assigned at a particular point in time. • Q3 —Find the components which had an item assigned within a particular time frame. • Q4 — Compute the utilization of machine e for the whole system execution lifecycle. 7
  • 8. A Profile for Temporal Metamodeling Now, we can compute execution states of interest (e.g. for provenance) and KPIs (such as utilization): • Q1 — Find all items which have been processed by machine m. • Q2 — Find the components which had an item assigned at a particular point in time. • Q3 —Find the components which had an item assigned within a particular time frame. • Q4 — Compute the utilization of machine e for the whole system execution lifecycle. 8 Component.allInstances()->select(c | not c.hostsAt(instant).oclIsUndefined())
  • 10. Bigtable • Map-based (i.e. key-value) stores are especially well-suited to persist models managed by (meta-)modeling frameworks. • BigTable is a distributed, scalable, versioned, non-relational and column- based big data store; where data is stored in tables, which are sparse, distributed, persistent, and multi-dimensional sorted maps. • These maps are indexed by the tuple row key, column key, and a timestamp. 10
  • 20. Questions • RQ1: Production Cost — Is there a significant difference of the time required for producing and manipulating temporal model elements? • RQ2: Storage Cost — Is there a significant difference of the storage size of temporal models? • RQ3: Reproduction Cost — Is there a significant difference of restoring previous versions of temporal model elements? TemporalEMF vs Saving Historical Data Explicitly 20
  • 26. Related work and conclusions 26
  • 27. Related work • Model versioning tools: • Typically, XMI serialization saved on CVS, SVN or Git. • Each version is a self-contained model instance. • Versions are generated by the user. • Lack of precision. • Fine grained historical data may require model comparison operations. • Models@run.time: • Provide a modeling infrastructure to instantiate models (as we do), they do not store the history of those changes. 27
  • 28. Conclusions • Conceptual schemas are automatically and transparently treated as temporal models. • Can be subject to temporal queries to retrieve and compare the model contents at different points in time. • An extension to the standard EMF APIs allows modelers to easily express such temporal queries. • TemporalEMF relies on HBase to provide an scalable persistence layer to store all past versions. 28
  • 29. TemporalEMF: A Temporal Metamodeling Framework Abel Gómez, Jordi Cabot, and Manuel Wimmer Internet Interdisciplinary Institute – Universitat Oberta de Catalunya, Spain CDL-MINT, TU Wien, Austria 29