OpenMS
SemanticValidator Class Reference

Semantically validates XML files using CVMappings and a ControlledVocabulary. More...

#include <OpenMS/FORMAT/VALIDATORS/SemanticValidator.h>

Inheritance diagram for SemanticValidator:
[legend]
Collaboration diagram for SemanticValidator:
[legend]

Classes

struct  CVTerm
 Representation of a parsed CV term. More...
 

Public Member Functions

 SemanticValidator (const CVMappings &mapping, const ControlledVocabulary &cv)
 Constructor. More...
 
 ~SemanticValidator () override
 Destructor. More...
 
bool validate (const String &filename, StringList &errors, StringList &warnings)
 Semantically validates an XML file. More...
 
bool locateTerm (const String &path, const CVTerm &parsed_term) const
 Checks if a CVTerm is allowed in a given path. More...
 
void setTag (const String &tag)
 Sets the CV parameter tag name (default: 'cvParam') More...
 
void setAccessionAttribute (const String &accession)
 Sets the name of the attribute for accessions in the CV parameter tag name (default: 'accession') More...
 
void setNameAttribute (const String &name)
 Sets the name of the attribute for accessions in the CV parameter tag name (default: 'name') More...
 
void setValueAttribute (const String &value)
 Sets the name of the attribute for accessions in the CV parameter tag name (default: 'value') More...
 
void setCheckTermValueTypes (bool check)
 Set if CV term value types should be check (enabled by default) More...
 
void setCheckUnits (bool check)
 Set if CV term units should be check (disabled by default) More...
 
void setUnitAccessionAttribute (const String &accession)
 Sets the name of the unit accession attribute (default: 'unitAccession') More...
 
void setUnitNameAttribute (const String &name)
 Sets the name of the unit name attribute (default: 'unitName') More...
 
- Public Member Functions inherited from XMLFile
 XMLFile ()
 Default constructor. More...
 
 XMLFile (const String &schema_location, const String &version)
 Constructor that sets the schema location. More...
 
virtual ~XMLFile ()
 Destructor. More...
 
bool isValid (const String &filename, std::ostream &os)
 Checks if a file validates against the XML schema. More...
 
const StringgetVersion () const
 return the version of the schema More...
 

Protected Member Functions

void startElement (const XMLCh *const, const XMLCh *const, const XMLCh *const qname, const xercesc::Attributes &attributes) override
 
void endElement (const XMLCh *const, const XMLCh *const, const XMLCh *const qname) override
 
void characters (const XMLCh *const chars, const XMLSize_t) override
 
virtual String getPath_ (UInt remove_from_end=0) const
 Returns the current element path. More...
 
virtual void getCVTerm_ (const xercesc::Attributes &attributes, CVTerm &parsed_term)
 Parses the CV term accession (required), name (required) and value (optional) from the XML attributes. More...
 
virtual void handleTerm_ (const String &path, const CVTerm &parsed_term)
 Handling of the term. More...
 
- Protected Member Functions inherited from XMLHandler
void writeUserParam_ (const String &tag_name, std::ostream &os, const MetaInfoInterface &meta, UInt indent) const
 Writes the content of MetaInfoInterface to the file. More...
 
Int asInt_ (const String &in) const
 Conversion of a String to an integer value. More...
 
Int asInt_ (const XMLCh *in) const
 Conversion of a Xerces string to an integer value. More...
 
UInt asUInt_ (const String &in) const
 Conversion of a String to an unsigned integer value. More...
 
double asDouble_ (const String &in) const
 Conversion of a String to a double value. More...
 
float asFloat_ (const String &in) const
 Conversion of a String to a float value. More...
 
bool asBool_ (const String &in) const
 Conversion of a string to a boolean value. More...
 
DateTime asDateTime_ (String date_string) const
 Conversion of a xs:datetime string to a DateTime value. More...
 
bool equal_ (const XMLCh *a, const XMLCh *b) const
 Returns if two Xerces strings are equal. More...
 
SignedSize cvStringToEnum_ (const Size section, const String &term, const char *message, const SignedSize result_on_error=0)
 
String attributeAsString_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a String. More...
 
Int attributeAsInt_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a Int. More...
 
double attributeAsDouble_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a double. More...
 
DoubleList attributeAsDoubleList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a DoubleList. More...
 
IntList attributeAsIntList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to an IntList. More...
 
StringList attributeAsStringList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to an StringList. More...
 
bool optionalAttributeAsString_ (String &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the String value if the attribute is present. More...
 
bool optionalAttributeAsInt_ (Int &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the Int value if the attribute is present. More...
 
bool optionalAttributeAsUInt_ (UInt &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the UInt value if the attribute is present. More...
 
bool optionalAttributeAsDouble_ (double &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the double value if the attribute is present. More...
 
bool optionalAttributeAsDoubleList_ (DoubleList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the DoubleList value if the attribute is present. More...
 
bool optionalAttributeAsStringList_ (StringList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the StringList value if the attribute is present. More...
 
bool optionalAttributeAsIntList_ (IntList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the IntList value if the attribute is present. More...
 
String attributeAsString_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a String. More...
 
Int attributeAsInt_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a Int. More...
 
double attributeAsDouble_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a double. More...
 
DoubleList attributeAsDoubleList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a DoubleList. More...
 
IntList attributeAsIntList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a IntList. More...
 
StringList attributeAsStringList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a StringList. More...
 
bool optionalAttributeAsString_ (String &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the String value if the attribute is present. More...
 
bool optionalAttributeAsInt_ (Int &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the Int value if the attribute is present. More...
 
bool optionalAttributeAsUInt_ (UInt &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the UInt value if the attribute is present. More...
 
bool optionalAttributeAsDouble_ (double &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the double value if the attribute is present. More...
 
bool optionalAttributeAsDoubleList_ (DoubleList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the DoubleList value if the attribute is present. More...
 
bool optionalAttributeAsIntList_ (IntList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the IntList value if the attribute is present. More...
 
bool optionalAttributeAsStringList_ (StringList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the StringList value if the attribute is present. More...
 
 XMLHandler (const String &filename, const String &version)
 Default constructor. More...
 
 ~XMLHandler () override
 Destructor. More...
 
void reset ()
 Release internal memory used for parsing (call. More...
 
void fatalError (const xercesc::SAXParseException &exception) override
 
void error (const xercesc::SAXParseException &exception) override
 
void warning (const xercesc::SAXParseException &exception) override
 
void fatalError (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Fatal error handler. Throws a ParseError exception. More...
 
void error (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Error handler for recoverable errors. More...
 
void warning (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Warning handler. More...
 
void characters (const XMLCh *const chars, const XMLSize_t length) override
 Parsing method for character data. More...
 
void startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const xercesc::Attributes &attrs) override
 Parsing method for opening tags. More...
 
void endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname) override
 Parsing method for closing tags. More...
 
virtual void writeTo (std::ostream &)
 Writes the contents to a stream. More...
 
virtual LOADDETAIL getLoadDetail () const
 handler which support partial loading, implement this method More...
 
virtual void setLoadDetail (const LOADDETAIL d)
 handler which support partial loading, implement this method More...
 
void checkUniqueIdentifiers_ (const std::vector< ProteinIdentification > &prot_ids) const
 
- Protected Member Functions inherited from XMLFile
void parse_ (const String &filename, XMLHandler *handler)
 Parses the XML file given by filename using the handler given by handler. More...
 
void parseBuffer_ (const std::string &buffer, XMLHandler *handler)
 Parses the in-memory buffer given by buffer using the handler given by handler. More...
 
void save_ (const String &filename, XMLHandler *handler) const
 Stores the contents of the XML handler given by handler in the file given by filename. More...
 
void enforceEncoding_ (const String &encoding)
 
 XMLFile ()
 Default constructor. More...
 
 XMLFile (const String &schema_location, const String &version)
 Constructor that sets the schema location. More...
 
virtual ~XMLFile ()
 Destructor. More...
 
bool isValid (const String &filename, std::ostream &os)
 Checks if a file validates against the XML schema. More...
 
const StringgetVersion () const
 return the version of the schema More...
 

Protected Attributes

const CVMappingsmapping_
 Reference to the mappings. More...
 
const ControlledVocabularycv_
 Reference to the CVs. More...
 
StringList errors_
 Validation errors. More...
 
StringList warnings_
 Validation warnings. More...
 
StringList open_tags_
 List of open tags. More...
 
std::map< String, std::vector< CVMappingRule > > rules_
 Rules (location => rule) More...
 
std::map< String, std::map< String, std::map< String, UInt > > > fulfilled_
 
- Protected Attributes inherited from XMLHandler
String file_
 File name. More...
 
String version_
 Schema version. More...
 
StringManager sm_
 Helper class for string conversion. More...
 
std::vector< Stringopen_tags_
 Stack of open XML tags. More...
 
LOADDETAIL load_detail_
 parse only until total number of scans and chroms have been determined from attributes More...
 
std::vector< std::vector< String > > cv_terms_
 Array of CV term lists (one sublist denotes one term and it's children) More...
 
- Protected Attributes inherited from XMLFile
String schema_location_
 XML schema file location. More...
 
String schema_version_
 Version string. More...
 
String enforced_encoding_
 Encoding string that replaces the encoding (system dependent or specified in the XML). Disabled if empty. Used as a workaround for XTandem output xml. More...
 

Tag and attribute names

String cv_tag_
 
String accession_att_
 
String name_att_
 
String value_att_
 
String unit_accession_att_
 
String unit_name_att_
 
bool check_term_value_types_
 
bool check_units_
 
 SemanticValidator ()
 Not implemented. More...
 
 SemanticValidator (const SemanticValidator &rhs)
 Not implemented. More...
 
SemanticValidatoroperator= (const SemanticValidator &rhs)
 Not implemented. More...
 

Additional Inherited Members

- Protected Types inherited from XMLHandler
enum  ActionMode { LOAD , STORE }
 Action to set the current mode (for error messages) More...
 
enum  LOADDETAIL { LD_ALLDATA , LD_RAWCOUNTS , LD_COUNTS_WITHOPTIONS }
 
- Static Protected Member Functions inherited from XMLHandler
static String writeXMLEscape (const String &to_escape)
 Escapes a string and returns the escaped string. More...
 
static DataValue fromXSDString (const String &type, const String &value)
 Convert an XSD type (e.g. 'xsd:double') to a DataValue. More...
 

Detailed Description

Semantically validates XML files using CVMappings and a ControlledVocabulary.

This is the general validator.
Specialized validators for specific file formats are derived from this class.


Class Documentation

◆ OpenMS::Internal::SemanticValidator::CVTerm

struct OpenMS::Internal::SemanticValidator::CVTerm

Representation of a parsed CV term.

Collaboration diagram for SemanticValidator::CVTerm:
[legend]
Class Members
String accession
bool has_unit_accession
bool has_unit_name
bool has_value
String name
String unit_accession
String unit_name
String value

Constructor & Destructor Documentation

◆ SemanticValidator() [1/3]

SemanticValidator ( const CVMappings mapping,
const ControlledVocabulary cv 
)

Constructor.

Parameters
mappingThe mapping rules
cvAll controlled vocabularies required for the mapping

◆ ~SemanticValidator()

~SemanticValidator ( )
override

Destructor.

◆ SemanticValidator() [2/3]

SemanticValidator ( )
private

Not implemented.

◆ SemanticValidator() [3/3]

SemanticValidator ( const SemanticValidator rhs)
private

Not implemented.

Member Function Documentation

◆ characters()

void characters ( const XMLCh *const  chars,
const  XMLSize_t 
)
overrideprotected

◆ endElement()

void endElement ( const XMLCh * const  ,
const XMLCh * const  ,
const XMLCh *const  qname 
)
overrideprotected

◆ getCVTerm_()

virtual void getCVTerm_ ( const xercesc::Attributes &  attributes,
CVTerm parsed_term 
)
protectedvirtual

Parses the CV term accession (required), name (required) and value (optional) from the XML attributes.

◆ getPath_()

virtual String getPath_ ( UInt  remove_from_end = 0) const
protectedvirtual

Returns the current element path.

Reimplemented in MzMLValidator.

◆ handleTerm_()

virtual void handleTerm_ ( const String path,
const CVTerm parsed_term 
)
protectedvirtual

Handling of the term.

Reimplemented in MzMLValidator, and MzDataValidator.

◆ locateTerm()

bool locateTerm ( const String path,
const CVTerm parsed_term 
) const

Checks if a CVTerm is allowed in a given path.

◆ operator=()

SemanticValidator& operator= ( const SemanticValidator rhs)
private

Not implemented.

◆ setAccessionAttribute()

void setAccessionAttribute ( const String accession)

Sets the name of the attribute for accessions in the CV parameter tag name (default: 'accession')

◆ setCheckTermValueTypes()

void setCheckTermValueTypes ( bool  check)

Set if CV term value types should be check (enabled by default)

If set to true, the xsd value types are checked, and errors are given in the cases

  • CVTerm needs value but has none
  • CVTerm has value but must not have one
  • CVTerm has value, needs value but value is of wrong type

◆ setCheckUnits()

void setCheckUnits ( bool  check)

Set if CV term units should be check (disabled by default)

If set to true additional checks for CVTerms are performed:

  • CVTerm that must have a unit, but has none
  • CVTerm that has a wrong unit

◆ setNameAttribute()

void setNameAttribute ( const String name)

Sets the name of the attribute for accessions in the CV parameter tag name (default: 'name')

◆ setTag()

void setTag ( const String tag)

Sets the CV parameter tag name (default: 'cvParam')

◆ setUnitAccessionAttribute()

void setUnitAccessionAttribute ( const String accession)

Sets the name of the unit accession attribute (default: 'unitAccession')

◆ setUnitNameAttribute()

void setUnitNameAttribute ( const String name)

Sets the name of the unit name attribute (default: 'unitName')

◆ setValueAttribute()

void setValueAttribute ( const String value)

Sets the name of the attribute for accessions in the CV parameter tag name (default: 'value')

◆ startElement()

void startElement ( const XMLCh * const  ,
const XMLCh * const  ,
const XMLCh *const  qname,
const xercesc::Attributes &  attributes 
)
overrideprotected

◆ validate()

bool validate ( const String filename,
StringList errors,
StringList warnings 
)

Semantically validates an XML file.

Parameters
filenameThe file to validate
errorsErrors during the validation are returned in this output parameter.
warningsWarnings during the validation are returned in this output parameter.
Returns
true if the validation was successful, false otherwise.
Exceptions
Exception::FileNotFoundis thrown if the file could not be opened

Member Data Documentation

◆ accession_att_

String accession_att_
protected

◆ check_term_value_types_

bool check_term_value_types_
protected

◆ check_units_

bool check_units_
protected

◆ cv_

const ControlledVocabulary& cv_
protected

Reference to the CVs.

◆ cv_tag_

String cv_tag_
protected

◆ errors_

StringList errors_
protected

Validation errors.

◆ fulfilled_

std::map<String, std::map<String, std::map<String, UInt> > > fulfilled_
protected

Fulfilled rules (location => rule ID => term ID => term count ) When a tag is closed, the fulfilled rules of the current location are checked against the required rules The fulfilled rules for that location are then deleted.

◆ mapping_

const CVMappings& mapping_
protected

Reference to the mappings.

◆ name_att_

String name_att_
protected

◆ open_tags_

StringList open_tags_
protected

List of open tags.

◆ rules_

std::map<String, std::vector<CVMappingRule> > rules_
protected

Rules (location => rule)

◆ unit_accession_att_

String unit_accession_att_
protected

◆ unit_name_att_

String unit_name_att_
protected

◆ value_att_

String value_att_
protected

◆ warnings_

StringList warnings_
protected

Validation warnings.