McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 http://www.biomedcentral.com/1471-2105/13/S1/S2 RESEARCH Open Access SPARQL Assist language-neutral query composer Luke McCarthy, Ben Vandervalk, Mark Wilkinson* From Semantic Web Applications and Tools for Life Sciences (SWAT4LS) 2010 Berlin, Germany. 10 December 2010 Abstract Background: SPARQL query composition is difficult for the lay-person, and even the experienced bioinformatician in cases where the data model is unfamiliar. Moreover, established best-practices and internationalization concerns dictate that the identifiers for ontological terms should be opaque rather than human-readable, which further complicates the task of synthesizing queries manually. Results: We present SPARQL Assist: a Web application that addresses these issues by providing context-sensitive type-ahead completion during SPARQL query construction. Ontological terms are suggested using their multi- lingual labels and descriptions, leveraging existing support for internationalization and language-neutrality. Moreover, the system utilizes the semantics embedded in ontologies, and within the query itself, to help prioritize the most likely suggestions. Conclusions: To ensure success, the Semantic Web must be easily available to all users, regardless of locale, training, or preferred language. By enhancing support for internationalization, and moreover by simplifying the manual construction of SPARQL queries through the use of controlled-natural-language interfaces, we believe we have made some early steps towards simplifying access to Semantic Web resources. Background SIO_010302 is considerably harder to glean without The health care and life science sectors have been some looking up its ontological definition. This becomes par- of the most enthusiastic adopters of Semantic Web ticularly acute in the context of SPARQL queries. While technologies. The benefits of the RDF/OWL data model often the subject and object portions of a SPARQL are well-understood by bioinformaticians who have too WHERE clause contain variables, and therefore are long had to deal with the problem of integrating data inherently human-readable, the predicates are usually from multiple sources with wildly different underlying explicitly specified in the query. Thus while: schema. These benefits are less obvious, however, to clinicians and researchers who merely see one myster- ?gene SIO:is_homologous_to ?gene ious query language (SQL) exchanged for another (SPARQL). Even a Semantic Web-savvy informatician is quite clear to both the query composer and the can be daunted when faced with the challenge of query- human reader, the opaque equivalent ing an unfamiliar data source whose particular RDF vocabulary is initially unknown. ?gene SIO:010302 ?gene The issue is compounded by the growing use of opa- que, semantic-free URIs for ontological classes and is effectively meaningless to the reader, and absurdly properties (OBO [1], SIO [2], CWA [3]). While the difficult for the query composer to remember. Neverthe- meaning of rdf:type or dc:title is relatively clear to the less, there are many valid reasons for designing ontolo- human reader, the meaning of, for example, sio: gies using opaque identifiers, not the least of which is language neutrality. RDF/XML provides built-in language neutrality by way *Correspondence:[email protected] ProvidenceHeart+LungInstituteatSt.Paul’sHospital,UniversityofBritish of the xml:lang attribute; an ontology can therefore Columbia,Room166-1081BurrardSt.,Vancouver,BC,CanadaV6Z1Y6 ©2011McCarthyetal.ThisisanopenaccessarticledistributedunderthetermsoftheCreativeCommonsAttributionLicense(http:// creativecommons.org/licenses/by/2.0),whichpermitsunrestricteduse,distribution,andreproductioninanymedium,providedthe originalworkisproperlycited. McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 Page2of9 http://www.biomedcentral.com/1471-2105/13/S1/S2 easily be internationalized by providing multiple rdfs: properties, individuals and namespaces that have been label or rdfs:comment properties with appropriate xml: indexed in JSON format. It can also be deployed with a lang attributes. However, even those projects who have, server-side Java component that will index OWL ontolo- in principle, adopted language neutrality for their classes gies directly. These ontologies may be parsed a priori as (e.g. OBO), most have not done so for their properties part of the SPARQL Assist installation/configuration, or (OBO Relationship Ontology [4]). This is no-doubt due, may be referred to in the FROM clause of a SPARQL at least in part, to the already discussed difficulty of query, in which case they are parsed dynamically at composing SPARQL queries in which predicates have query time. In the future, as much computation as pos- opaque identifiers. Nevertheless, it is crucial that we do sible will be transferred to the client side to improve not allow convenience to direct the development of a both performance and flexibility of deployment, but at core global resource (the Semantic Web) and thus the present the limited support for OWL in JavaScript problem should be solved at the level of the tools pro- requires a server-side component for ontology parsing. vided, rather than the resources themselves. Our initial implementation of SPARQL Assist was SPARQL Assist is a web application that facilitates the undertaken in the context of creating queries that will construction of SPARQL queries by providing context- be resolved by the Semantic Health and Research Envir- sensitive type-ahead completion. In addition to assis- onment (SHARE [5]), and we present here both the tance with basic syntax, ontological terms are indexed core SPARQL Assist software, as well as the extension by their labels, using the xml:lang attribute to record specific to SHARE. SHARE is an advanced SPARQL the language of each label for each term. Ontological query client built on top of the SADI Framework [6] for terms and their labels, are read on-the-fly from any Semantic Web Services. SADI services attach properties ontology specified in a SPARQL FROM clause, but to input OWL instances and these services are indexed SPARQL Assist can also be configured to pre-load in a central registry based on the properties they attach. terms from particular ontologies or SPARQL endpoints, SHARE maps the triple patterns presented in the reducing the burden on the user to know the existence WHERE clauses of a SPARQL query onto these indexed and location of all relevant vocabularies. properties, in order to discover SADI Web Services cap- The entire query, as it is being constructed, is used to able of generating the required triples. The RDF data provide context for the type-ahead suggestions. Pre- required to answer a given query is thus dynamically viously declared variables or known individuals (i.e. generated through the invocation of SADI services in values) are suggested during type-ahead for the subject response to the query being posed. or object position of the WHERE clause. In the predi- In the context of SPARQL Assist, the fact that proper- cate position, indexed ontological predicates are sug- ties do not exist at query composition time might be gested, with preference given to properties that an considered a barrier, since there is no pre-existing RDF individual is known to have if this information is avail- Store to inspect for candidate properties and individuals. able from ontological indexing and/or other query To compensate for this, the SADI extension to SPARQL clauses. Similarly, if a clause contains a variable that can Assist uses the SADI registry, in addition to any loaded ultimately be connected to a known individual in ontologies, to suggest properties to be used in a query. another part of the query, that connection is used to As in the generic case, if a clause contains a named find the most likely properties in the current clause. individual or a variable previously connected to an indi- Together, these functionalities should simplify the vidual, this information is used to further refine the sug- manual construction of SPARQL queries by (a) making gestions; in this case by filtering out properties the query more similar to natural language, and (b) sup- generated by services that cannot accept a particular porting any language in which the required terms have individual as input and highlighting properties generated been labeled. Moreover, in so doing, SPARQL Assist by services that can. Thus, not only is the lack of a static also provides ontology designers more freedom to follow triple store not a barrier to query composition, but the best-practices in ontology design and internationaliza- ability to construct a likely-successful query is, in fact, tion by reducing the barrier to query construction using enhanced by utilization of the underlying SADI opaque terms. SPARQL Assist thus represents one alter- infrastructure. native, alongside visual query builders and faceted brow- Although it was designed with SHARE in mind, sers, for helping unfamiliar users explore semantic data. SPARQL Assist can be used with any SPARQL endpoint that can be queried from client-side JavaScript. Due to Implementation the limitations of cross-domain JavaScript requests, the SPARQL Assist is implemented in JavaScript (jQuery) endpoint must reside at the same domain name as the and is intended to be accessed through a browser. In its SPARQL Assist query form, or the endpoint must be simplest configuration, SPARQL Assist preloads able to deliver query results in JSONP format, or a McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 Page3of9 http://www.biomedcentral.com/1471-2105/13/S1/S2 suitable proxy must be configured. Sample configura- SIO_000062 from the Semantic Science Integrated tions for common situations are available on the web Ontology) is added to the SPARQL query as a result of [7]. this selection (see Figure 5). With an interest in genes involved in caffeine metabo- Results lism, and not knowing which KEGG pathway this corre- The results of this software engineering project are best sponds to, we then begin typing “caff...” in the object- described by a demonstrative walk-through using our position of the WHERE clause. SPARQL assist has pre- public SPARQL Assist interface available at [8]. In this indexed the names and definitions of KEGG pathway demonstration we will be answering the question: URIs, and thus prompts us with “human caffeine meta- bolism pathway” as a type-ahead option (see Figure 5). select the genes that participate in the human caf- Selecting this option inserts the URI KEGG:hsa00232 in feine metabolism pathway and the proteins that they the object position, corresponding to the identifier for encode. this pathway, and the first WHERE clause is complete (see Figure 6). SPARQL Assist helps query construction at all points, In constructing the second WHERE clause, we will both with respect to correct SPARQL syntax, as well as reveal some limitations of the approach. After being the content of the query itself. This includes the specifi- prompted for “?protein” in response to “?pro...” (see Fig- cation of prefixes. Begin typing “PREFIX” and a type- ure 6) we then want to determine which genes code for ahead prompt appears indicating that PREFIX is the these proteins. Typing “code” reveals two, seemingly only valid option at this point (see Figure 1). Knowing identical, options, neither of which has a definition - “is that we are going to be using KEGG pathways, but not encoded by” and “isEncodedBy” (see Figure 7). This is knowing what the correct URI prefix is, we then begin because these two predicates appeared in the ontologies typing “path...” and are prompted with several options, pre-indexed by SPARQL Assist and had no further one of which is the URI prefix for identifiers from the description. Since it is not possible to determine with Kyoto Encyclopedia of Genes and Genomes (see Figure any certainty if they are truly redundant, or which 2). online resources will use which predicate, both are pre- Several steps later, after specification of the SELECT sented, and the user must make a choice. In Figure 8 variables (not shown), SPARQL Assist has a number of we have selected “is encoded by”, and the corresponding features aimed at simplifying the construction of the URI http://semanticscience.org/resource/SIO_010079 WHERE clause. First, previously-typed variables are has been added to the query. We complete the query by prompted. For example, typing “?g” prompts the user adding the final ?gene variable, and the query results are with their previously entered “?gene” variable (see Figure shown in the same figure. 3). Knowing (a priori) the vernacular that genes “partici- Three additional features of the SPARQL Assist soft- pate in” metabolic pathways, typing “parti...” results in ware, and its SADI extension – internationalization, two choices of predicate “has participant”, and “is parti- dynamic ontology indexing, and dynamic predicate-vali- cipant in”, along with their human-readable descriptions dation – will be demonstrated by a second walk- to help determine which predicate would be the correct through. In this example, we attempt to resolve the one (see Figure 4). In this case, “is participant in” is same query as above, but will construct the query selected, since genes are participants in pathways. The clauses slightly differently to allow these additional fea- opaque URI of the corresponding predicate (SIO: tures to be revealed (in SPARQL, equivalent queries can Figure1Type-aheadsuggestionforstructuralcomponentsofaSPARQLquery.Theuserhastyped“pr...”andisbeingpromptedthatthe appropriatesyntacticelementforthispositioninaSPARQLqueryis“PREFIX”. McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 Page4of9 http://www.biomedcentral.com/1471-2105/13/S1/S2 Figure2Type-aheadsuggestionfortheURIofanamespacePREFIX.Theuserhastyped“path...”withtheintentionoffindingtheKEGG PathwayURIprefix.Thisissuggestedforthemasthethirdsuggestioninthelist.ThisrelievestheuseroftheburdenbothrecallingtheseURIs, andofcorrectlytypingthem. be constructed in a wide variety of ways, particularly participate in this KEGG pathway, we begin typing when the desired predicates have an owl:inverse “parti...” in the predicate position of this WHERE clause. predicate). As before, SPARQL Assist prompts us with a variety of Figure 9 shows the initial phases of query construction suggestions, however one of these suggestions has been already completed as above, this time with the addition highlighted in green (see Figure 9 upper panel). This of a FROM clause. When confronted with a FROM highlighting indicates that SPARQL Assist has discov- URI, SPARQL Assist will immediately retrieve and index ered SADI Web Services capable of fulfilling that clause the resulting ontology, extracting predicates and named of the query, given that individual’s semantic type, thus individuals from that ontology. In this example, the giving the user more security that their query will be props.de.owl ontology contains a variety of German-lan- answerable. Because the German-language ontology has guage extensions for predicates defined by the SIO, and been loaded, we could equally have begun typing individuals from KEGG. When constructing the first “Bet...”, and been prompted by the German equivalent WHERE clause in this case, we have decided to begin predicate “hat Beteiligten”, also highlighted in green (see with the KEGG caffeine metabolism pathway. This was Figure 9 lower panel). selected exactly as in Figure 5 above, but using the Ger- We complete the first clause and continue to the next, man equivalent “Stoffwechselweg Koffein menschlichen” where we wish to find the proteins that are encoded by as the individual name (not shown). With an explicit a given gene. We begin the second WHERE clause with individual as the starting-point, the SADI extension to “?gene”, and then (in the German language) attempt to SPARQL Assist is able to utilize the semantics of the find the proteins that the genes “codiert für” (see Figure SADI Web Services registry to enhance subsequent 10). Importantly, SPARQL Assist is able to suggest pre- type-ahead suggestions. To find the genes that dicates based on the semantic type of the data that will Figure3Type-aheadselectionofknownqueryvariables.Theuserhasalreadycreatedtwovariables,“gene”and“protein”intheirSELECT clause,andnowisbeingpromptedtoreusethe“gene”variableintheWHEREclauseunderconstruction. McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 Page5of9 http://www.biomedcentral.com/1471-2105/13/S1/S2 Figure4Type-aheadselectionofontologicalpredicatesbasedontheirhuman-readablelabel.Theuserhasstartedtyping“parti...”,with theintentionoffindingsomepredicaterelatingto“participation”.Twopossiblepredicates,“hasparticipant”and“isparticipantin”,are suggested,alongwiththeirhuman-readabledescriptions. fill the ?gene variable. It is able to do this because, dur- Finally, the “codiert für” predicate is selected and ing the previous SADI registry query for the “has parti- replaced by the appropriate URI, and query construction cipant” predicate, it determined the output data-type of continues through to resolution (see Figure 11). that SADI service and assigned that data-type to ?gene. As such, SPARQL Assist is now able to indicate Discussion (through green highlighting) that there is a SADI service The two walk-through scenarios above reveal the beha- that attaches the “codiert für” predicate to the indivi- viours of the SPARQL Assist software and demonstrate duals that will, at execution-time, fill the ?gene variable. what we believe is an environment that assists query Figure5Type-aheadselectionofindividualsbytheirhuman-readablename.Theuserbeginstypingtheword“caffeine”andisprompted by“humancaffeinemetabolismpathway”,aspecificpathwayintheKEGGdatabase.Selectionofthispathwayresultsintheinsertionofthe correspondingURIintotheSPARQLquery. Figure6ReplacementofnamedindividualsbytheirURI.Inthisfigure,“humancaffeinemetabolismpathway”hasbeenreplacedbyitsURI http://lsrn.org/KEGG_PATHWAY:hsa00232.Theuserisnowbeingpromptedtousethepreviously-defined“protein”variablefortheirnextclause. McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 Page6of9 http://www.biomedcentral.com/1471-2105/13/S1/S2 Figure7Namingcollisionsareobserved.Inthisfigure,theuserislookingforapredicaterelatedtogenecoding.Theyarepresentedwith twoseeminglyidenticalpredicates,neitherofwhichhasadescription.Incaseswhereindependentontologiesusethesametermanddonot definethatterm,itisnotpossibleforthesoftwaretoautomaticallyinferequivalence.Assuch,bothtermsarepresentedtotheuserandthey mustmakeachoicebasedonminimalinformation. construction not only by “naïve” end-users, but also by predicates, and individuals, and explicit support for experienced informaticians already comfortable with internationalization. the SPARQL language. While these behaviours (e.g. We are aware that it may seem unsustainable and/or type-ahead) are not themselves novel, the utility comes excessive to index individuals, such that “real things” in the way they have been applied, particularly with (molecules, structures, genes, etc) can be referred-to respect to dynamic indexing of ontological terms, during construction of the query and resolved by Figure8Querycompletionandexecution.Thepredicate“isencodedby”hasbeenreplacedbyitsURIhttp://semanticscience.org/resource/ SIO_010079thefinalvariablewasaddedtothesecondclause,andthequerywasexecutedwiththeresultsshown. McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 Page7of9 http://www.biomedcentral.com/1471-2105/13/S1/S2 Figure 9 SADI registry lookups and internationalization. This figure shows support for internationalization as well as the additional functionalityofSPARQLAssistprovidedbytheSADIextension.Whenanamedindividualispresentinaquery,theSADIextensiontoSPARQL AssistutilizesthesemantictypeofthisindividualtoinitiateasearchoftheSADIregistryforServicesthatcouldconsumethisindividualasinput. Thepredicatescreatedbythoseservicesarehighlightedingreeninthetype-aheadprompt,providingvisualassurancethatselectionofthose predicatesis“semanticallymeaningful”andislikelytoresolvesuccessfullyduringqueryexecution.Inthetoppanel,theuserhasstartedtyping (inEnglish)“parti...”,andthepredicate“hasparticipant”fromthetype-aheadchoicesishighlightedingreen,indicatingthataSADIServiceis availablethatwillgeneratethatpredicatebasedonthatinputindividual.Inthelowerpanel,atthesamepointinthequery,theuserhasstarted typing(inGerman)“Bet...”,andisprovidedwiththepredicate“hatBeteiligten”.Since“hatBeteiligten”and“hasparticipant”arealternativelabels forthesamepredicateURI(http://semanticscience.org/resource/SIO_000132),thispredicateisalsohighlightedingreenindicatingthatthereisa SADIservicecapableofresolvingit. Figure10AdditionalutilizationofSADIregistrysemantics.TheGerman-language“codiertfür”(English“codesfor”)isbeingsuggested,and ishighlightedingreen.ThegreenhighlightingindicatesthattheSPARQLAssistsoftware,afterthepreviousSADIRegistrylookup(seeFigure9) knowswhatsemanticdatatypewillbecontainedinthevariable?geneafterinvocationofthatSADIservice,andisthereforeabletodetermine thatanotherSADIserviceisavailablethatwillbeabletoconsumeindividualsfrom?geneandattachthe“codiertfür”predicatetothem. McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 Page8of9 http://www.biomedcentral.com/1471-2105/13/S1/S2 Figure11Querycompletionandsolution.Inthisfigure,“codiertfur”hasbeenproperlyconvertedtoitsSIOURI.Notealsothatthequery resultsareidenticaltothoseinFigure8,demonstratingthatthesequeries,regardlessoflanguagechosen,areequivalent. SPARQL Assist to their native identifiers, but we don’t internationalization by reducing the resulting burden think this is necessarily the case. First, we believe it is of complexity placed on their end-users. crucial to do so since (as with browser bookmarks for There are some areas where the SPARQL Assist inter- URLs) we cannot and should not expect users to know face can be further improved. In particular, while the or remember the URI of their data-of-interest. Second, query construction process itself is guided by “natural the amount of storage required to achieve this (a URI language”, the interface immediately converts this into and it’s various labels) is minimal and lookups over this SPARQL clauses with opaque identifiers; thus, the final data can be quite rapid. Third, we anticipate that query in SPARQL Assist is just as unreadable as any tra- SPARQL Assist will be deployed by specific commu- ditional SPARQL query. This implementation barrier nities or on specific portals, where the individuals of results from limitations in the JavaScript language: the greatest interest to that community can be anticipated content of a Web text-box cannot be marked-up and and selectively indexed to minimize lookup time and thus SPARQL query clauses cannot be individually index size. referenced and linked to an external, non-SPARQL SPARQL Assist does not aim to be a query interface representation. We would welcome participation of any that understands natural language. It relies on ontol- community members who might have a solution to this ogy authors creating “obvious” labels for their predi- problem! cates and, even in that case, a user will often need to try several “words” before discovering the phrase that Conclusions the ontology author used. However, we believe that SPARQL Assist provides prototype solutions for two this is nevertheless better than the status quo and, important problems. First, to hasten the uptake of moreover, makes it easier for ontology authors to jus- Semantic Web technologies, it is important to improve tify following best-practices of ontology design and access to, and usability of, Semantic Web resources for McCarthyetal.BMCBioinformatics2012,13(Suppl1):S2 Page9of9 http://www.biomedcentral.com/1471-2105/13/S1/S2 the lay-end-user while still maintaining best-practices in 2. SemanticScience-ScientificKnowledgeDiscovery.[http:// the way these resources are modeled. Opaque identifiers semanticscience.org/]. 3. NBICDeclarationConceptWebAlliance.[http://www.nbic.nl/about-nbic/ for both classes and properties are important, as they affiliated-organisations/cwa/declaration/]. allow us to avoid “churn” as an ontology evolves over 4. OBORelationshipOntology.[http://www.berkeleybop.org/ontologies/obo- time. We must therefore support the end-user in con- all/relationship/relationship.owl]. 5. VandervalkBP,McCarthyEL,WilkinsonMD:SHARE:ASemanticWebQuery structing queries over resources formatted in this way. EngineforBioinformatics.InFourthAsianConference,ASWC6-9December Second, the Semantic Web is intended to be a global 2009;Singapore.VolumeLNCS5926.Heidelberg:Springer;AsunciónGómez- resource, of use to all. As such, a respect for internatio- Pérez,YongYu,YingDing2009:367-369. 6. WilkinsonMD,VandervalkBP,McCarthyL:SADISemanticWebServices- nalization is also critical, even at these early stages in ‘causeyoucan’talwaysGETwhatyouwant!Proceedingsofthe2009IEEE Semantic Web evolution. We believe that SPARQL Asia-PacificServicesComputingConference2010,13-18. Assist provides motivation to more widely adopt what 7. SPARQLAssistlanguage-neutralquerycomposer.[http://sadiframework. org/sparql-assist]. are clearly best-practices in Semantic Web data 8. cardioSHARE.[http://biordf.net/cardioSHARE]. provision. doi:10.1186/1471-2105-13-S1-S2 Citethisarticleas:McCarthyetal.:SPARQLAssistlanguage-neutral Availability and requirements querycomposer.BMCBioinformatics201213(Suppl1):S2. Project name: SPARQL Assist Project home page: http://code.google.com/p/sadi/ Operating system(s): Platform independent Programming language: Java License: New BSD Listofabbreviations CWA:ConceptWebAlliance;JSON:JavaScriptObjectNotation;JSONP: JavaScriptwithPadding;KEGG:KyotoEncyclopaediaofGenesandGenomes; OBO:OpenBiomedicalOntologies;OWL:WebOntologyLanguage;RDF: ResourceDescriptionFramework;SADI:SemanticAutomatedDiscoveryand Integration;SHARE:SemanticHealthAndResearchEnvironment;SIO: SemanticScienceIntegratedOntology;SPARQL:SPARQLProtocolandRDF QueryLanguage;SQL:StructuredQueryLanguage;URI:UniformResource Identifier;URL:UniformResourceLocator;XML:ExtensibleMarkupLanguage. Acknowledgements ThisworkhasbeensupportedbytheHeart+StrokeFoundationofBCand Yukon,MicrosoftResearch,TheCanadianInstitutesforHealthResearch,The NaturalSciencesandEngineeringResearchCouncilofCanada,andCANARIE. ThankyoutoAnna-LenaLamprechtforassistinguswiththeGerman translationsoftheSIOandKEGGterms. ThisarticlehasbeenpublishedaspartofBMCBioinformaticsVolume13 Supplement1,2012:SemanticWebApplicationsandToolsforLifeSciences (SWAT4LS)2010.Thefullcontentsofthesupplementareavailableonlineat http://www.biomedcentral.com/bmcbioinformatics/supplements/13/S1. Authors’contributions LMwrotetheSPARQLAssistsoftwareandwrotesignificantportionsofthis manuscript.BVinventedandimplementedtheoptimizeralgorithmof SHAREallowingSPARQLqueriestobeefficientlyconvertedtoWebService workflowsforthissoftwaredemonstrationandassistedwithportionsofthis manuscript.MWconceivedoftheSADIproject,togetherwithLMconceived oftheSPARQLAssistconcept,andwrotethemajorityofthismanuscript. Competinginterests Submit your next manuscript to BioMed Central Theauthorsdeclarethattheyhavenocompetinginterests. and take full advantage of: Published:25January2012 • Convenient online submission References • Thorough peer review 1. SmithB,AshburnerM,RosseC,BardJ,BugW,CeustersW,GoldbergLJ, • No space constraints or color figure charges EilbeckK,IrelandA,MungallCJ,TheOBIConsortium,LeontisN,Rocca- • Immediate publication on acceptance SerraP,RuttenbergA,SansoneS-A,ScheuermannRH,ShahN,WhetzePL, LewisS:TheOBOFoundry:coordinatedevolutionofontologiesto • Inclusion in PubMed, CAS, Scopus and Google Scholar supportbiomedicaldataintegration.NatureBiotechnology2007, • Research which is freely available for redistribution 25:1251-1255. Submit your manuscript at www.biomedcentral.com/submit