SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
“QEbu: an advanced metadata editor” 
Paolo Pasini
Polytechnic University of Turin


Get in contact: paolo.pasini@polito.it

Copyright	
  ©	
  of	
  this	
  presenta1on	
  is	
  the	
  property	
  of	
  the	
  author(s).	
  FIAT/IFTA	
  is	
  granted	
  permission	
  to	
  

 reproduce	
  copies	
  of	
  this	
  work	
  for	
  purposes	
  relevant	
  to	
  the	
  above	
  conference	
  and	
  future	
  communica1on	
  
t
opyright	
  no1ce	
  

 by	
  FIAT/IFTA	
  without	
  ulimita1on,	
  provided	
  that	
  qhe	
  author(s),	
  source	
  and	
  che	
  author(s).	
   are	
  included	
  in	
  
each	
  copy.	
  For	
  other	
   ses,	
  including	
  extended	
   uota1on,	
  please	
  contact	
  t




#FIATIFTADubai2013

Paolo Pasini: “QEbu- an advanced metadata editor”
Contents


Introduction
}  Model design
}  XML management
}  GUI
} 

◦  Interface
◦  Data management

} 










Conclusion

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
EBU Core Metadata Set


Has been developed by the EBU Expert
Community on Metadata (ECM).
}  Latest revised in october 2011 (version
1.3).
}  It makes use of Simple Dublin Core
metadata elements as well as more
complex structures with deeper
expressivity and flexibility.
}  The general aim is to define a minimum list
of attributes characterising a media
resource.
} 





#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
QEbu:	
  Project	
  specifica1ons	
  


QEbu provides an editor for metadata
following the EBU Core Metadata Set.
}  The user is able to produce new metadata
documents or edit existing ones.
}  A simple graphic interface helps the user in
his work by providing:
} 







◦  Instant validation on all input fields;
◦  Dictionaries for dictionary based attributes;
◦  In-place documentation for all metadata
elements.

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Why	
  a	
  GUI?	
  


Editing XML by hand is a hard task,
especially with high complex structure
definition.
}  Using a GUI, the user can focus on
metadata content, instead of worry about
the format in which metadata will be
stored.
} 











#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Contents


Introduction
}  Model design
}  XML management
}  GUI
} 

◦  Interface
◦  Data management

} 










Conclusion

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
From	
  XML	
  to	
  C++	
  


“A class for each element”
}  Yes, but with as much code reuse as
possible.
} 

} 











Exploiting objects composition and
inheritance, we tried to keep the number of
defined classes to a reasonable minimum.

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Managing	
  IDRefs	
  


} 

RightsType and PublicationType elements
contain a reference to a FormatType
◦  It’s a strong relation enforced by the usage of
ID-IDREF(s) types in the schema definition.

} 

Corresponding classes have been designed
to contain a pointer to the format.
◦  Why not a simple string with the ID?

} 






However pointers require careful handling:
◦  What happens if a format is deleted?

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Root	
  Format	
  Map	
  


} 

We have introduced a root format map in
the top-level metadata element:

◦  Key: format ID;
◦  Value: formatType pointer and a list of listeners.

} 











A listener is an object which needs to know
if a format is deleted (i.e. rightsType and
publicationType).

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Contents


Introduction
}  Model design
}  XML management
}  GUI
} 

◦  Interface
◦  Data management

} 










Conclusion

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
The	
  issue	
  


} 

} 









Provide manipulation functionalities over
the contents of an XML file of interest, and
allow creation of a valid document from
scratch.
It is required a way to map model objects
from, and to, XML documents, in a sensible
and coherent way

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Which	
  way?	
  


The requirements of the application, and
the complexity of the schema, pretty much
call for DOM loud and clear.
}  DOM makes for an easier management of
the contents, and cover all the
requirements needed.
} 

} 








What about performance?

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Valida1on	
  


} 

A fundamental aspect of working with XML
is the validation of the contents…
◦  …but Qt doesn’t provide anything robust
enough.

} 

In this case it is better to delegate to
something else, which does just that:
◦  xmllint, from libxml2

What if an input file does not validate?
}  Validation comes for free when working
from scratch.
} 




#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
XML	
  to	
  memory…	
  


} 

} 

} 






This step is performed by EbuParser, which
visits recursively the document model
managing one node at a time.
“A class for each element, and for each
class its parser”.
We defined a pattern to achieve code
homogeneity and readability.

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
EbuParser	
  snippet	
  


T* EbuParser::parseT(const QDomElement &element)
{
// Sanity check for node element validity
if (element.isNull()) {
m_errorMsg = “T element is null";
return 0;
}
// Create custom object T
T *obj = new T;






// Get attribute(s).

t attributeName = element.attribute("attributeName");

// Sanity check for attribute validity, according to
// the 
specific type
if (!attributeName.isValid())

obj->setAttributeName(attributeName);
// all



the


attributes parsed...

// Get element(s)
// A node list is expected in this example
QDomNodeList nodeList =
element.elementsByTagName("tagName");
for (int i=0; i < nodeList.size(); ++i) {

// In case of nested elements with a given name,
which
// are not dicrect children of the current node, skip
if (el.parentNode() != element)
continue;
// Recursively parse the child element, like we just
// did with its parent
ChildT *child = parseChildT(el);
// In case the returned child is not valid (i.e.
null)
if (!child) {
// Destroy the parent as well and return failure
delete obj;
return 0;
}
// In case of success append the child in the proper
// structure
obj->tagName().append(child);
}
// Proceed with more children elements…
return obj;
}

QDomElement el = nodeList.item(i).toElement();

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
…and	
  back!	
  


} 

} 










The steps from memory to XML are
performed by EbuSerializer, which is the
dual counterpart of our custom parser just
described.
Once again, to iterate is human, to recurse
divine.

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
EbuSerializer	
  snippet	
  


QDomElement EbuSerializer::serializeT(T *obj)
{
// Create an empty unnamed element
QDomElement l = m_doc.createElement(" ");

e.appendChild(textNode);
l.appendChild(e);




// Serialize attribute(s), performing sanity check

// prior to write data

if (!obj->attribute1().isValid())
l.setAttribute("attribute1", obj->attribute1());

if (!obj->attribute2().isValid())

l.setAttribute("attribute2", obj->attribute2());

// ...all the attributes


if (!obj->element1().isEmpty())

// Create inner empty unnamed


}
if (obj->element2()) {
// This is a child element node
QDomElement e = serializeT2(obj->element2());
e.setTagName("anotherInnerElementName");
l.appendChild(e);
}
// For all the elements...
return l;

{
element

}

// This is just a text node
QDomElement e = m_doc.createElement(" ");
e.setTagName("innerElementName");
QDomText textNode =
m_doc.createTextNode(l->element1());

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Infinite	
  descent	
  


} 

} 










The EBU Core metadata allows the
definition of element types that may
include content of the very same type.
The recursive approach has proven to be
the only way worth implementing to handle
with ease the schema specifics.

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Contents


Introduction
}  Model design
}  XML management
}  GUI
} 

◦  Interface
◦  Data management

} 










Conclusion

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
User	
  interface	
  


} 

} 

For almost every object in the model, a
dedicated form has been created.
As a rule of thumb, the principle criteria
followed can be summarized like:

◦  Whenever possible attributes are managed via edit
fields;
◦  In case of range-restricted values, pickers are
employed;
◦  Children elements come with their own form, but few
exceptions (i.e. groups);
◦  If possible attributes/elements are grouped together
in a meaningful way;
◦  Recycle as much as possible exploiting composition.



#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Stack	
  of	
  Forms	
  


} 

} 
} 
} 

The user interface employs a custom pattern based on
stackable forms.
The users can see only one form at a time
No popup dialogs
Linear path of navigation














#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Lists,	
  lists	
  everywhere…	
  


} 

} 

Many elements include subelements with
cardinality [0..*].
This poses some problems in the UI design:

◦  How to avoid congesting the interface?
◦  How to deal with the coexistence of lists and [0..1]
elements?













#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Users	
  first	
  aid	
  


} 

QEbu offers several features intended for
this goal:
◦  A quickstart tutorial;
◦  A navigation bar;
◦  Embedded documentation
◦  Auto completion












#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Contents


Introduction
}  Model design
}  XML management
}  GUI
} 

◦  Interface
◦  Data management

} 










Conclusion

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Data	
  input	
  


} 

Design challenges:

◦  Provide user-friendly forms;
◦  Propose values from dictionaries;
◦  Grant an instantaneous input validation.

} 

} 






Qt framework already provides many
widgets for different type of input.
But something was still missing…

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Some	
  examples	
  















#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Auto-­‐comple1on	
  


Some fields are meant to store a reference
to standard lists of contents.
}  The reference scheme are listed in EBU
Core documentation.
}  Those values are retrieved from a set of
XML files downloaded from EBU website,
when available.
} 










#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Schema-­‐related	
  problems	
  


EBU Core schema uses XML Schema types.
}  It does not restrict them enough.
}  What is the use of:
•  duplicated timezones?
•  years, months, days of duration?
•  negative durations?
}  It permits to express values which can be
meaningless or discordant.
}  This may cause troubles for any program
which wants to handle those metadata.
} 

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Contents


Introduction
}  Model design
}  XML management
}  GUI
} 

◦  Interface
◦  Data management

} 










Conclusion

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Tes1ng	
  


} 

It is known that testing should be done by
someone not involved in the coding
phase…
◦  … but sometimes it is everything you got.

} 








Being realistic, it is more a matter of where
bugs lie, rather than whether bugs are
there.

#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
Future	
  works	
  


} 

Internationalization (i18n)

◦  The code is already ready for i18n since all text
strings have been surrounded by Qt special
macros.

} 

Forms re-design

◦  We treated each field and attribute equally.
◦  Feedback from EBU-EMC experts who actually
use such metadata could lead to better tailored
forms with relevant contents more easily
accessible.

} 

Dynamic download of attribute dictionaries
from EBU website.
#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
QEbu	
  is	
  free	
  soware	
  


} 

} 

QEbu is released under terms of the GNU
General Public License 3 as published by
the Free Software Foundation.

The application is built using Qt 4.8
framework by Nokia.
◦  http://qt.nokia.com/products/library

} 



XML validation requires libxml2 to be
installed.
#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
QEbu	
  project	
  in	
  numbers	
  


7 weeks
}  5 people
}  252 commits
}  39428 LOC
} 

◦  8438 in model/*
◦  5485 in fileproc/*
◦  25505 in ui/*

} 

149 classes

◦  68 in model/*
◦  3 in fileproc/*
◦  78 in ui/*
#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor
“QEbu: an advanced metadata editor” 
Paolo Pasini
Polytechnic University of Turin


Get in contact: paolo.pasini@polito.it

Copyright	
  ©	
  of	
  this	
  presenta1on	
  is	
  the	
  property	
  of	
  the	
  author(s).	
  FIAT/IFTA	
  is	
  granted	
  permission	
  to	
  

 reproduce	
  copies	
  of	
  this	
  work	
  for	
  purposes	
  relevant	
  to	
  the	
  above	
  conference	
  and	
  future	
  communica1on	
  
t
opyright	
  no1ce	
  

 by	
  FIAT/IFTA	
  without	
  ulimita1on,	
  provided	
  that	
  qhe	
  author(s),	
  source	
  and	
  che	
  author(s).	
   are	
  included	
  in	
  
each	
  copy.	
  For	
  other	
   ses,	
  including	
  extended	
   uota1on,	
  please	
  contact	
  t




#FIATIFTADubai2013

Paolo Pasini: QEbu – an advanced metadata editor

Más contenido relacionado

La actualidad más candente

principle of oop’s in cpp
principle of oop’s in cppprinciple of oop’s in cpp
principle of oop’s in cppgourav kottawar
 
Concepts of OOPs
Concepts of OOPsConcepts of OOPs
Concepts of OOPsEssay Corp
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentationguest11106b
 
Entity framework
Entity frameworkEntity framework
Entity frameworkicubesystem
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programmingAmit Soni (CTFL)
 
Basic concepts of object oriented programming
Basic concepts of object oriented programmingBasic concepts of object oriented programming
Basic concepts of object oriented programmingSachin Sharma
 
Advanced OOP - Laws, Principles, Idioms
Advanced OOP - Laws, Principles, IdiomsAdvanced OOP - Laws, Principles, Idioms
Advanced OOP - Laws, Principles, IdiomsClint Edmonson
 
Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1 Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1 Sakthi Durai
 
Introduction to Hibernate Framework
Introduction to Hibernate FrameworkIntroduction to Hibernate Framework
Introduction to Hibernate FrameworkRaveendra R
 
Object-Oriented Concepts
Object-Oriented ConceptsObject-Oriented Concepts
Object-Oriented ConceptsAbdalla Mahmoud
 
Design Pattern lecture 4
Design Pattern lecture 4Design Pattern lecture 4
Design Pattern lecture 4Julie Iskander
 

La actualidad más candente (17)

principle of oop’s in cpp
principle of oop’s in cppprinciple of oop’s in cpp
principle of oop’s in cpp
 
Advance oops concepts
Advance oops conceptsAdvance oops concepts
Advance oops concepts
 
Concepts of OOPs
Concepts of OOPsConcepts of OOPs
Concepts of OOPs
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
 
Entity framework
Entity frameworkEntity framework
Entity framework
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Basic concepts of object oriented programming
Basic concepts of object oriented programmingBasic concepts of object oriented programming
Basic concepts of object oriented programming
 
Oops
OopsOops
Oops
 
Introduction to Hibernate
Introduction to HibernateIntroduction to Hibernate
Introduction to Hibernate
 
Jsp tag library
Jsp tag libraryJsp tag library
Jsp tag library
 
Advanced OOP - Laws, Principles, Idioms
Advanced OOP - Laws, Principles, IdiomsAdvanced OOP - Laws, Principles, Idioms
Advanced OOP - Laws, Principles, Idioms
 
Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1 Java Programming Paradigms Chapter 1
Java Programming Paradigms Chapter 1
 
Introduction to Hibernate Framework
Introduction to Hibernate FrameworkIntroduction to Hibernate Framework
Introduction to Hibernate Framework
 
Java Object Oriented Programming
Java Object Oriented Programming Java Object Oriented Programming
Java Object Oriented Programming
 
Object-Oriented Concepts
Object-Oriented ConceptsObject-Oriented Concepts
Object-Oriented Concepts
 
Oops ppt
Oops pptOops ppt
Oops ppt
 
Design Pattern lecture 4
Design Pattern lecture 4Design Pattern lecture 4
Design Pattern lecture 4
 

Similar a “QEbu: an advanced metadata editor”, Paolo Pasini Polytechnic University of Turin

QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...
QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...
QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...FIAT/IFTA
 
Angular Rebooted: Components Everywhere - Carlo Bonamico, Sonia Pini - Codemo...
Angular Rebooted: Components Everywhere - Carlo Bonamico, Sonia Pini - Codemo...Angular Rebooted: Components Everywhere - Carlo Bonamico, Sonia Pini - Codemo...
Angular Rebooted: Components Everywhere - Carlo Bonamico, Sonia Pini - Codemo...Codemotion
 
Angular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereAngular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereCarlo Bonamico
 
Example Of Import Java
Example Of Import JavaExample Of Import Java
Example Of Import JavaMelody Rios
 
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...Codemotion
 
Build Your Own Angular Component Library
Build Your Own Angular Component LibraryBuild Your Own Angular Component Library
Build Your Own Angular Component LibraryCarlo Bonamico
 
C questions
C questionsC questions
C questionsparm112
 
Understanding Framework Architecture using Eclipse
Understanding Framework Architecture using EclipseUnderstanding Framework Architecture using Eclipse
Understanding Framework Architecture using Eclipseanshunjain
 
New microsoft office word document (2)
New microsoft office word document (2)New microsoft office word document (2)
New microsoft office word document (2)rashmita_mishra
 
[Nuxeo World 2013] Nuxeo Studio
[Nuxeo World 2013] Nuxeo Studio[Nuxeo World 2013] Nuxeo Studio
[Nuxeo World 2013] Nuxeo StudioNuxeo
 
MuleSoft Manchester Meetup #3 slides 31st March 2020
MuleSoft Manchester Meetup #3 slides 31st March 2020MuleSoft Manchester Meetup #3 slides 31st March 2020
MuleSoft Manchester Meetup #3 slides 31st March 2020Ieva Navickaite
 
Frankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiFrankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiToni Epple
 
.NET Core, ASP.NET Core Course, Session 13
.NET Core, ASP.NET Core Course, Session 13.NET Core, ASP.NET Core Course, Session 13
.NET Core, ASP.NET Core Course, Session 13aminmesbahi
 
The Naked Bundle - Tryout
The Naked Bundle - TryoutThe Naked Bundle - Tryout
The Naked Bundle - TryoutMatthias Noback
 
A sane approach to microservices
A sane approach to microservicesA sane approach to microservices
A sane approach to microservicesToby Matejovsky
 
The virtual DOM and how react uses it internally
The virtual DOM and how react uses it internallyThe virtual DOM and how react uses it internally
The virtual DOM and how react uses it internallyClóvis Neto
 

Similar a “QEbu: an advanced metadata editor”, Paolo Pasini Polytechnic University of Turin (20)

QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...
QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...
QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...
 
Angular Rebooted: Components Everywhere - Carlo Bonamico, Sonia Pini - Codemo...
Angular Rebooted: Components Everywhere - Carlo Bonamico, Sonia Pini - Codemo...Angular Rebooted: Components Everywhere - Carlo Bonamico, Sonia Pini - Codemo...
Angular Rebooted: Components Everywhere - Carlo Bonamico, Sonia Pini - Codemo...
 
Angular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereAngular Rebooted: Components Everywhere
Angular Rebooted: Components Everywhere
 
Example Of Import Java
Example Of Import JavaExample Of Import Java
Example Of Import Java
 
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
 
Build Your Own Angular Component Library
Build Your Own Angular Component LibraryBuild Your Own Angular Component Library
Build Your Own Angular Component Library
 
C questions
C questionsC questions
C questions
 
Understanding Framework Architecture using Eclipse
Understanding Framework Architecture using EclipseUnderstanding Framework Architecture using Eclipse
Understanding Framework Architecture using Eclipse
 
Creating a SPA blog withAngular and Cloud Firestore
Creating a SPA blog withAngular and Cloud FirestoreCreating a SPA blog withAngular and Cloud Firestore
Creating a SPA blog withAngular and Cloud Firestore
 
Introduction to Kotlin - Android KTX
Introduction to Kotlin - Android KTXIntroduction to Kotlin - Android KTX
Introduction to Kotlin - Android KTX
 
New microsoft office word document (2)
New microsoft office word document (2)New microsoft office word document (2)
New microsoft office word document (2)
 
[Nuxeo World 2013] Nuxeo Studio
[Nuxeo World 2013] Nuxeo Studio[Nuxeo World 2013] Nuxeo Studio
[Nuxeo World 2013] Nuxeo Studio
 
MuleSoft Manchester Meetup #3 slides 31st March 2020
MuleSoft Manchester Meetup #3 slides 31st March 2020MuleSoft Manchester Meetup #3 slides 31st March 2020
MuleSoft Manchester Meetup #3 slides 31st March 2020
 
Frankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiFrankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGi
 
.NET Core, ASP.NET Core Course, Session 13
.NET Core, ASP.NET Core Course, Session 13.NET Core, ASP.NET Core Course, Session 13
.NET Core, ASP.NET Core Course, Session 13
 
The Naked Bundle - Tryout
The Naked Bundle - TryoutThe Naked Bundle - Tryout
The Naked Bundle - Tryout
 
Angular2
Angular2Angular2
Angular2
 
A sane approach to microservices
A sane approach to microservicesA sane approach to microservices
A sane approach to microservices
 
The virtual DOM and how react uses it internally
The virtual DOM and how react uses it internallyThe virtual DOM and how react uses it internally
The virtual DOM and how react uses it internally
 
5010
50105010
5010
 

Más de FIAT/IFTA

2021 FIAT/IFTA Timeline Survey
2021 FIAT/IFTA Timeline Survey2021 FIAT/IFTA Timeline Survey
2021 FIAT/IFTA Timeline SurveyFIAT/IFTA
 
20211021 FIAT/IFTA Most Wanted List
20211021 FIAT/IFTA Most Wanted List20211021 FIAT/IFTA Most Wanted List
20211021 FIAT/IFTA Most Wanted ListFIAT/IFTA
 
WARBURTON FIAT/IFTA Timeline Survey results 2020
WARBURTON FIAT/IFTA Timeline Survey results 2020WARBURTON FIAT/IFTA Timeline Survey results 2020
WARBURTON FIAT/IFTA Timeline Survey results 2020FIAT/IFTA
 
OOMEN MEZARIS ReTV
OOMEN MEZARIS ReTVOOMEN MEZARIS ReTV
OOMEN MEZARIS ReTVFIAT/IFTA
 
BUCHMAN Digitisation of quarter inch audio tapes at DR (FRAME Expert)
BUCHMAN Digitisation of quarter inch audio tapes at DR (FRAME Expert)BUCHMAN Digitisation of quarter inch audio tapes at DR (FRAME Expert)
BUCHMAN Digitisation of quarter inch audio tapes at DR (FRAME Expert)FIAT/IFTA
 
CULJAT (FRAME Expert) Public procurement in audiovisual digitisation at RTÉ
CULJAT (FRAME Expert) Public procurement in audiovisual digitisation at RTÉCULJAT (FRAME Expert) Public procurement in audiovisual digitisation at RTÉ
CULJAT (FRAME Expert) Public procurement in audiovisual digitisation at RTÉFIAT/IFTA
 
HULSENBECK Value Use and Copyright Comission initiatives
HULSENBECK Value Use and Copyright Comission initiativesHULSENBECK Value Use and Copyright Comission initiatives
HULSENBECK Value Use and Copyright Comission initiativesFIAT/IFTA
 
WILSON Film digitisation at BBC Scotland
WILSON Film digitisation at BBC ScotlandWILSON Film digitisation at BBC Scotland
WILSON Film digitisation at BBC ScotlandFIAT/IFTA
 
GOLODNOFF We need to make our past accessible!
GOLODNOFF We need to make our past accessible!GOLODNOFF We need to make our past accessible!
GOLODNOFF We need to make our past accessible!FIAT/IFTA
 
LORENZ Building an integrated digital media archive and legal deposit
LORENZ Building an integrated digital media archive and legal depositLORENZ Building an integrated digital media archive and legal deposit
LORENZ Building an integrated digital media archive and legal depositFIAT/IFTA
 
BIRATUNGANYE Shock of formats
BIRATUNGANYE Shock of formatsBIRATUNGANYE Shock of formats
BIRATUNGANYE Shock of formatsFIAT/IFTA
 
CANTU VT is TV The History of Argentinian Video Art and Television Archives P...
CANTU VT is TV The History of Argentinian Video Art and Television Archives P...CANTU VT is TV The History of Argentinian Video Art and Television Archives P...
CANTU VT is TV The History of Argentinian Video Art and Television Archives P...FIAT/IFTA
 
BERGER RIPPON BBC Music memories
BERGER RIPPON BBC Music memoriesBERGER RIPPON BBC Music memories
BERGER RIPPON BBC Music memoriesFIAT/IFTA
 
AOIBHINN and CHOISTIN Rehash your archive
AOIBHINN and CHOISTIN Rehash your archiveAOIBHINN and CHOISTIN Rehash your archive
AOIBHINN and CHOISTIN Rehash your archiveFIAT/IFTA
 
HULSENBECK BLOM A blast from the past open up
HULSENBECK BLOM A blast from the past open upHULSENBECK BLOM A blast from the past open up
HULSENBECK BLOM A blast from the past open upFIAT/IFTA
 
PERVIZ Automated evolvable media console systems in digital archives
PERVIZ Automated evolvable media console systems in digital archivesPERVIZ Automated evolvable media console systems in digital archives
PERVIZ Automated evolvable media console systems in digital archivesFIAT/IFTA
 
AICHROTH Systemaic evaluation and decentralisation for a (bit more) trusted AI
AICHROTH Systemaic evaluation and decentralisation for a (bit more) trusted AIAICHROTH Systemaic evaluation and decentralisation for a (bit more) trusted AI
AICHROTH Systemaic evaluation and decentralisation for a (bit more) trusted AIFIAT/IFTA
 
VINSON Accuracy and cost assessment for archival video transcription methods
VINSON Accuracy and cost assessment for archival video transcription methodsVINSON Accuracy and cost assessment for archival video transcription methods
VINSON Accuracy and cost assessment for archival video transcription methodsFIAT/IFTA
 
LYCKE Artificial intelligence, hype or hope?
LYCKE Artificial intelligence, hype or hope?LYCKE Artificial intelligence, hype or hope?
LYCKE Artificial intelligence, hype or hope?FIAT/IFTA
 
AZIZ BABBUCCI Let's play with the archive
AZIZ BABBUCCI Let's play with the archiveAZIZ BABBUCCI Let's play with the archive
AZIZ BABBUCCI Let's play with the archiveFIAT/IFTA
 

Más de FIAT/IFTA (20)

2021 FIAT/IFTA Timeline Survey
2021 FIAT/IFTA Timeline Survey2021 FIAT/IFTA Timeline Survey
2021 FIAT/IFTA Timeline Survey
 
20211021 FIAT/IFTA Most Wanted List
20211021 FIAT/IFTA Most Wanted List20211021 FIAT/IFTA Most Wanted List
20211021 FIAT/IFTA Most Wanted List
 
WARBURTON FIAT/IFTA Timeline Survey results 2020
WARBURTON FIAT/IFTA Timeline Survey results 2020WARBURTON FIAT/IFTA Timeline Survey results 2020
WARBURTON FIAT/IFTA Timeline Survey results 2020
 
OOMEN MEZARIS ReTV
OOMEN MEZARIS ReTVOOMEN MEZARIS ReTV
OOMEN MEZARIS ReTV
 
BUCHMAN Digitisation of quarter inch audio tapes at DR (FRAME Expert)
BUCHMAN Digitisation of quarter inch audio tapes at DR (FRAME Expert)BUCHMAN Digitisation of quarter inch audio tapes at DR (FRAME Expert)
BUCHMAN Digitisation of quarter inch audio tapes at DR (FRAME Expert)
 
CULJAT (FRAME Expert) Public procurement in audiovisual digitisation at RTÉ
CULJAT (FRAME Expert) Public procurement in audiovisual digitisation at RTÉCULJAT (FRAME Expert) Public procurement in audiovisual digitisation at RTÉ
CULJAT (FRAME Expert) Public procurement in audiovisual digitisation at RTÉ
 
HULSENBECK Value Use and Copyright Comission initiatives
HULSENBECK Value Use and Copyright Comission initiativesHULSENBECK Value Use and Copyright Comission initiatives
HULSENBECK Value Use and Copyright Comission initiatives
 
WILSON Film digitisation at BBC Scotland
WILSON Film digitisation at BBC ScotlandWILSON Film digitisation at BBC Scotland
WILSON Film digitisation at BBC Scotland
 
GOLODNOFF We need to make our past accessible!
GOLODNOFF We need to make our past accessible!GOLODNOFF We need to make our past accessible!
GOLODNOFF We need to make our past accessible!
 
LORENZ Building an integrated digital media archive and legal deposit
LORENZ Building an integrated digital media archive and legal depositLORENZ Building an integrated digital media archive and legal deposit
LORENZ Building an integrated digital media archive and legal deposit
 
BIRATUNGANYE Shock of formats
BIRATUNGANYE Shock of formatsBIRATUNGANYE Shock of formats
BIRATUNGANYE Shock of formats
 
CANTU VT is TV The History of Argentinian Video Art and Television Archives P...
CANTU VT is TV The History of Argentinian Video Art and Television Archives P...CANTU VT is TV The History of Argentinian Video Art and Television Archives P...
CANTU VT is TV The History of Argentinian Video Art and Television Archives P...
 
BERGER RIPPON BBC Music memories
BERGER RIPPON BBC Music memoriesBERGER RIPPON BBC Music memories
BERGER RIPPON BBC Music memories
 
AOIBHINN and CHOISTIN Rehash your archive
AOIBHINN and CHOISTIN Rehash your archiveAOIBHINN and CHOISTIN Rehash your archive
AOIBHINN and CHOISTIN Rehash your archive
 
HULSENBECK BLOM A blast from the past open up
HULSENBECK BLOM A blast from the past open upHULSENBECK BLOM A blast from the past open up
HULSENBECK BLOM A blast from the past open up
 
PERVIZ Automated evolvable media console systems in digital archives
PERVIZ Automated evolvable media console systems in digital archivesPERVIZ Automated evolvable media console systems in digital archives
PERVIZ Automated evolvable media console systems in digital archives
 
AICHROTH Systemaic evaluation and decentralisation for a (bit more) trusted AI
AICHROTH Systemaic evaluation and decentralisation for a (bit more) trusted AIAICHROTH Systemaic evaluation and decentralisation for a (bit more) trusted AI
AICHROTH Systemaic evaluation and decentralisation for a (bit more) trusted AI
 
VINSON Accuracy and cost assessment for archival video transcription methods
VINSON Accuracy and cost assessment for archival video transcription methodsVINSON Accuracy and cost assessment for archival video transcription methods
VINSON Accuracy and cost assessment for archival video transcription methods
 
LYCKE Artificial intelligence, hype or hope?
LYCKE Artificial intelligence, hype or hope?LYCKE Artificial intelligence, hype or hope?
LYCKE Artificial intelligence, hype or hope?
 
AZIZ BABBUCCI Let's play with the archive
AZIZ BABBUCCI Let's play with the archiveAZIZ BABBUCCI Let's play with the archive
AZIZ BABBUCCI Let's play with the archive
 

Último

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
 
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
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
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
 
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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
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
 
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
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
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
 

Último (20)

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
 
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)
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
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
 
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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
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
 
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
 
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
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
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
 

“QEbu: an advanced metadata editor”, Paolo Pasini Polytechnic University of Turin

  • 1. “QEbu: an advanced metadata editor” Paolo Pasini Polytechnic University of Turin Get in contact: paolo.pasini@polito.it Copyright  ©  of  this  presenta1on  is  the  property  of  the  author(s).  FIAT/IFTA  is  granted  permission  to   reproduce  copies  of  this  work  for  purposes  relevant  to  the  above  conference  and  future  communica1on   t opyright  no1ce   by  FIAT/IFTA  without  ulimita1on,  provided  that  qhe  author(s),  source  and  che  author(s).   are  included  in   each  copy.  For  other   ses,  including  extended   uota1on,  please  contact  t #FIATIFTADubai2013 Paolo Pasini: “QEbu- an advanced metadata editor”
  • 2. Contents Introduction }  Model design }  XML management }  GUI }  ◦  Interface ◦  Data management }  Conclusion #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 3. EBU Core Metadata Set Has been developed by the EBU Expert Community on Metadata (ECM). }  Latest revised in october 2011 (version 1.3). }  It makes use of Simple Dublin Core metadata elements as well as more complex structures with deeper expressivity and flexibility. }  The general aim is to define a minimum list of attributes characterising a media resource. }  #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 4. QEbu:  Project  specifica1ons   QEbu provides an editor for metadata following the EBU Core Metadata Set. }  The user is able to produce new metadata documents or edit existing ones. }  A simple graphic interface helps the user in his work by providing: }  ◦  Instant validation on all input fields; ◦  Dictionaries for dictionary based attributes; ◦  In-place documentation for all metadata elements. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 5. Why  a  GUI?   Editing XML by hand is a hard task, especially with high complex structure definition. }  Using a GUI, the user can focus on metadata content, instead of worry about the format in which metadata will be stored. }  #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 6. Contents Introduction }  Model design }  XML management }  GUI }  ◦  Interface ◦  Data management }  Conclusion #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 7. From  XML  to  C++   “A class for each element” }  Yes, but with as much code reuse as possible. }  }  Exploiting objects composition and inheritance, we tried to keep the number of defined classes to a reasonable minimum. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 8. Managing  IDRefs   }  RightsType and PublicationType elements contain a reference to a FormatType ◦  It’s a strong relation enforced by the usage of ID-IDREF(s) types in the schema definition. }  Corresponding classes have been designed to contain a pointer to the format. ◦  Why not a simple string with the ID? }  However pointers require careful handling: ◦  What happens if a format is deleted? #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 9. Root  Format  Map   }  We have introduced a root format map in the top-level metadata element: ◦  Key: format ID; ◦  Value: formatType pointer and a list of listeners. }  A listener is an object which needs to know if a format is deleted (i.e. rightsType and publicationType). #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 10. Contents Introduction }  Model design }  XML management }  GUI }  ◦  Interface ◦  Data management }  Conclusion #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 11. The  issue   }  }  Provide manipulation functionalities over the contents of an XML file of interest, and allow creation of a valid document from scratch. It is required a way to map model objects from, and to, XML documents, in a sensible and coherent way #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 12. Which  way?   The requirements of the application, and the complexity of the schema, pretty much call for DOM loud and clear. }  DOM makes for an easier management of the contents, and cover all the requirements needed. }  }  What about performance? #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 13. Valida1on   }  A fundamental aspect of working with XML is the validation of the contents… ◦  …but Qt doesn’t provide anything robust enough. }  In this case it is better to delegate to something else, which does just that: ◦  xmllint, from libxml2 What if an input file does not validate? }  Validation comes for free when working from scratch. }  #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 14. XML  to  memory…   }  }  }  This step is performed by EbuParser, which visits recursively the document model managing one node at a time. “A class for each element, and for each class its parser”. We defined a pattern to achieve code homogeneity and readability. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 15. EbuParser  snippet   T* EbuParser::parseT(const QDomElement &element) { // Sanity check for node element validity if (element.isNull()) { m_errorMsg = “T element is null"; return 0; } // Create custom object T T *obj = new T; // Get attribute(s). t attributeName = element.attribute("attributeName"); // Sanity check for attribute validity, according to // the specific type if (!attributeName.isValid()) obj->setAttributeName(attributeName); // all the attributes parsed... // Get element(s) // A node list is expected in this example QDomNodeList nodeList = element.elementsByTagName("tagName"); for (int i=0; i < nodeList.size(); ++i) { // In case of nested elements with a given name, which // are not dicrect children of the current node, skip if (el.parentNode() != element) continue; // Recursively parse the child element, like we just // did with its parent ChildT *child = parseChildT(el); // In case the returned child is not valid (i.e. null) if (!child) { // Destroy the parent as well and return failure delete obj; return 0; } // In case of success append the child in the proper // structure obj->tagName().append(child); } // Proceed with more children elements… return obj; } QDomElement el = nodeList.item(i).toElement(); #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 16. …and  back!   }  }  The steps from memory to XML are performed by EbuSerializer, which is the dual counterpart of our custom parser just described. Once again, to iterate is human, to recurse divine. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 17. EbuSerializer  snippet   QDomElement EbuSerializer::serializeT(T *obj) { // Create an empty unnamed element QDomElement l = m_doc.createElement(" "); e.appendChild(textNode); l.appendChild(e); // Serialize attribute(s), performing sanity check // prior to write data if (!obj->attribute1().isValid()) l.setAttribute("attribute1", obj->attribute1()); if (!obj->attribute2().isValid()) l.setAttribute("attribute2", obj->attribute2()); // ...all the attributes if (!obj->element1().isEmpty()) // Create inner empty unnamed } if (obj->element2()) { // This is a child element node QDomElement e = serializeT2(obj->element2()); e.setTagName("anotherInnerElementName"); l.appendChild(e); } // For all the elements... return l; { element } // This is just a text node QDomElement e = m_doc.createElement(" "); e.setTagName("innerElementName"); QDomText textNode = m_doc.createTextNode(l->element1()); #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 18. Infinite  descent   }  }  The EBU Core metadata allows the definition of element types that may include content of the very same type. The recursive approach has proven to be the only way worth implementing to handle with ease the schema specifics. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 19. Contents Introduction }  Model design }  XML management }  GUI }  ◦  Interface ◦  Data management }  Conclusion #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 20. User  interface   }  }  For almost every object in the model, a dedicated form has been created. As a rule of thumb, the principle criteria followed can be summarized like: ◦  Whenever possible attributes are managed via edit fields; ◦  In case of range-restricted values, pickers are employed; ◦  Children elements come with their own form, but few exceptions (i.e. groups); ◦  If possible attributes/elements are grouped together in a meaningful way; ◦  Recycle as much as possible exploiting composition. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 21. Stack  of  Forms   }  }  }  }  The user interface employs a custom pattern based on stackable forms. The users can see only one form at a time No popup dialogs Linear path of navigation #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 22. Lists,  lists  everywhere…   }  }  Many elements include subelements with cardinality [0..*]. This poses some problems in the UI design: ◦  How to avoid congesting the interface? ◦  How to deal with the coexistence of lists and [0..1] elements? #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 23. Users  first  aid   }  QEbu offers several features intended for this goal: ◦  A quickstart tutorial; ◦  A navigation bar; ◦  Embedded documentation ◦  Auto completion #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 24. Contents Introduction }  Model design }  XML management }  GUI }  ◦  Interface ◦  Data management }  Conclusion #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 25. Data  input   }  Design challenges: ◦  Provide user-friendly forms; ◦  Propose values from dictionaries; ◦  Grant an instantaneous input validation. }  }  Qt framework already provides many widgets for different type of input. But something was still missing… #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 26. Some  examples   #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 27. Auto-­‐comple1on   Some fields are meant to store a reference to standard lists of contents. }  The reference scheme are listed in EBU Core documentation. }  Those values are retrieved from a set of XML files downloaded from EBU website, when available. }  #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 28. Schema-­‐related  problems   EBU Core schema uses XML Schema types. }  It does not restrict them enough. }  What is the use of: •  duplicated timezones? •  years, months, days of duration? •  negative durations? }  It permits to express values which can be meaningless or discordant. }  This may cause troubles for any program which wants to handle those metadata. }  #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 29. Contents Introduction }  Model design }  XML management }  GUI }  ◦  Interface ◦  Data management }  Conclusion #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 30. Tes1ng   }  It is known that testing should be done by someone not involved in the coding phase… ◦  … but sometimes it is everything you got. }  Being realistic, it is more a matter of where bugs lie, rather than whether bugs are there. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 31. Future  works   }  Internationalization (i18n) ◦  The code is already ready for i18n since all text strings have been surrounded by Qt special macros. }  Forms re-design ◦  We treated each field and attribute equally. ◦  Feedback from EBU-EMC experts who actually use such metadata could lead to better tailored forms with relevant contents more easily accessible. }  Dynamic download of attribute dictionaries from EBU website. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 32. QEbu  is  free  soware   }  }  QEbu is released under terms of the GNU General Public License 3 as published by the Free Software Foundation. The application is built using Qt 4.8 framework by Nokia. ◦  http://qt.nokia.com/products/library }  XML validation requires libxml2 to be installed. #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 33. QEbu  project  in  numbers   7 weeks }  5 people }  252 commits }  39428 LOC }  ◦  8438 in model/* ◦  5485 in fileproc/* ◦  25505 in ui/* }  149 classes ◦  68 in model/* ◦  3 in fileproc/* ◦  78 in ui/* #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor
  • 34. “QEbu: an advanced metadata editor” Paolo Pasini Polytechnic University of Turin Get in contact: paolo.pasini@polito.it Copyright  ©  of  this  presenta1on  is  the  property  of  the  author(s).  FIAT/IFTA  is  granted  permission  to   reproduce  copies  of  this  work  for  purposes  relevant  to  the  above  conference  and  future  communica1on   t opyright  no1ce   by  FIAT/IFTA  without  ulimita1on,  provided  that  qhe  author(s),  source  and  che  author(s).   are  included  in   each  copy.  For  other   ses,  including  extended   uota1on,  please  contact  t #FIATIFTADubai2013 Paolo Pasini: QEbu – an advanced metadata editor