文摘
We have developed a Java library for substructure matching that features easy-to-read syntax and extensibility.This molecular query language (MQL) is grounded on a context-free grammar, which allows forstraightforward modification and extension. The formal description of MQL is provided in this paper. Moleculeprimitives are atoms, bonds, properties, branching, and rings. User-defined features can be added via a Javainterface. In MQL, molecules are represented as graphs. Substructure matching was implemented using theUllmann algorithm because of favorable run-time performance. The Ullmann algorithm carries out a fastsubgraph isomorphism search by combining backtracking with effective forward checking. MQL softwaredesign was driven by the aim to facilitate the use of various cheminformatics toolkits. Two Java interfacesprovide a bridge from our MQL package to an external toolkit: the first one provides the matching rules forevery feature of a particular toolkit; the second one converts the found match from the internal format ofMQL to the format of the external toolkit. We already implemented these interfaces for the ChemistryDevelopment Toolkit.