SlideShare a Scribd company logo
“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

More Related Content

What's hot

principle of oop’s in cpp
principle of oop’s in cppprinciple of oop’s in cpp
principle of oop’s in cpp
gourav kottawar
 
Advance oops concepts
Advance oops conceptsAdvance oops concepts
Advance oops concepts
Sangharsh agarwal
 
Concepts of OOPs
Concepts of OOPsConcepts of OOPs
Concepts of OOPs
Essay Corp
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentationguest11106b
 
Entity framework
Entity frameworkEntity framework
Entity framework
icubesystem
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
Amit Soni (CTFL)
 
Basic concepts of object oriented programming
Basic concepts of object oriented programmingBasic concepts of object oriented programming
Basic concepts of object oriented programming
Sachin Sharma
 
Oops
OopsOops
Introduction to Hibernate
Introduction to HibernateIntroduction to Hibernate
Introduction to Hibernate
Krishnakanth Goud
 
Jsp tag library
Jsp tag libraryJsp tag library
Jsp tag library
sandeep54552
 
Advanced OOP - Laws, Principles, Idioms
Advanced OOP - Laws, Principles, IdiomsAdvanced OOP - Laws, Principles, Idioms
Advanced OOP - Laws, Principles, Idioms
Clint 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 Framework
Raveendra R
 
Java Object Oriented Programming
Java Object Oriented Programming Java Object Oriented Programming
Java Object Oriented Programming
University of Potsdam
 
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 4
Julie Iskander
 

What's hot (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 to “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
Angular Rebooted: Components EverywhereAngular Rebooted: Components Everywhere
Angular Rebooted: Components Everywhere
Carlo Bonamico
 
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
 
Example Of Import Java
Example Of Import JavaExample Of Import Java
Example Of Import Java
Melody 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 Library
Carlo Bonamico
 
C questions
C questionsC questions
C questions
parm112
 
Understanding Framework Architecture using Eclipse
Understanding Framework Architecture using EclipseUnderstanding Framework Architecture using Eclipse
Understanding Framework Architecture using Eclipse
anshunjain
 
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
TMME - TECH MEETUP FOR MYANMAR ENGINEERS IN JP
 
Introduction to Kotlin - Android KTX
Introduction to Kotlin - Android KTXIntroduction to Kotlin - Android KTX
Introduction to Kotlin - Android KTX
Syed Awais Mazhar Bukhari
 
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 Studio
Nuxeo
 
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
Ieva Navickaite
 
Frankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiFrankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGi
Toni 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 13
aminmesbahi
 
The Naked Bundle - Tryout
The Naked Bundle - TryoutThe Naked Bundle - Tryout
The Naked Bundle - Tryout
Matthias Noback
 
Angular2
Angular2Angular2
Angular2
SitaPrajapati
 
A sane approach to microservices
A sane approach to microservicesA sane approach to microservices
A sane approach to microservices
Toby 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 internally
Clóvis Neto
 
5010
50105010

Similar to “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
Angular Rebooted: Components EverywhereAngular Rebooted: Components Everywhere
Angular Rebooted: Components Everywhere
 
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...
 
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
 

More from FIAT/IFTA

2021 FIAT/IFTA Timeline Survey
2021 FIAT/IFTA Timeline Survey2021 FIAT/IFTA Timeline Survey
2021 FIAT/IFTA Timeline Survey
FIAT/IFTA
 
20211021 FIAT/IFTA Most Wanted List
20211021 FIAT/IFTA Most Wanted List20211021 FIAT/IFTA Most Wanted List
20211021 FIAT/IFTA Most Wanted List
FIAT/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 2020
FIAT/IFTA
 
OOMEN MEZARIS ReTV
OOMEN MEZARIS ReTVOOMEN MEZARIS ReTV
OOMEN MEZARIS ReTV
FIAT/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 initiatives
FIAT/IFTA
 
WILSON Film digitisation at BBC Scotland
WILSON Film digitisation at BBC ScotlandWILSON Film digitisation at BBC Scotland
WILSON Film digitisation at BBC Scotland
FIAT/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 deposit
FIAT/IFTA
 
BIRATUNGANYE Shock of formats
BIRATUNGANYE Shock of formatsBIRATUNGANYE Shock of formats
BIRATUNGANYE Shock of formats
FIAT/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 memories
FIAT/IFTA
 
AOIBHINN and CHOISTIN Rehash your archive
AOIBHINN and CHOISTIN Rehash your archiveAOIBHINN and CHOISTIN Rehash your archive
AOIBHINN and CHOISTIN Rehash your archive
FIAT/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 up
FIAT/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 archives
FIAT/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 AI
FIAT/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 methods
FIAT/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 archive
FIAT/IFTA
 

More from 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
 

Recently uploaded

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 

Recently uploaded (20)

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 

“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