Articles

ROBOT: Nástroj pro Automatizaci Ontologie Workflow

Přehled

ROBOT poskytuje standardizované ještě konfigurovatelný způsob, jak podpořit ontologie vývoje životního cyklu prostřednictvím knihovny společné vysoké úrovni funkčnost a rozhraní příkazového řádku. ROBOT staví na OWL API a je kompatibilní se všemi ontologickými syntaxemi, které OWL API podporuje: RDF / XML, OWL / XML, Turtle, OWL funkční syntaxe, OWL Manchester syntaxe a obo formát. Zdrojový kód je napsán v Javě a je k dispozici v našem repozitáři GitHub pod licencí open source (BSD 3). To je také propuštěn jako Java knihovna na Maven Central. ROBOT kód může být použit z libovolného programovacího jazyka, který běží na Java Virtual Machine (JVM). Nástroj příkazového řádku je zabalen jako soubor JAR, který lze spustit na Unixu (včetně macOS a Linux), Windows a dalších platformách podporovaných JVM. Tento soubor JAR je k dispozici ke stažení z webu ROBOT GitHub, spolu s platformově specifické skripty pro použití ‚robot‘ z příkazového řádku. Pokyny k instalaci a dokumentace jsou k dispozici na adrese http://robot.obolibrary.org.

Architektura

dříve jsme popsali základní architekturu nástroje, kterou zde shrnujeme.

zdrojový kód robota se skládá ze dvou částí: „robot-core“ a „robot-command“. ‚robot-core‘ je knihovna podporující běžné ontologické vývojové úkoly, které nazýváme „operace“. „robot-command“ poskytuje rozhraní příkazového řádku rozdělené na „příkazy“, z nichž každý obepíná operaci „robot-core“.

většina operací robotů obsahuje nízkoúrovňové funkce poskytované OWL API do funkcí na vysoké úrovni společných pro pracovní postupy vývoje ontologie v komunitě OBO. Pro nejlepší kompatibilitu se snažíme přizpůsobit přesnou verzi OWL API používanou robotem s přesnou verzí používanou nejnovější verzí Protégé. Některé operace používají Apache Jena . Každá operace pracuje s objekty Java, které představují ontologie sovy, důvody sovy, třídy sovy atd., zatímco každý příkaz pracuje s řetězci a soubory volby příkazového řádku. Příkazy také provádějí různé kroky převodu a ověření. Rozhraní příkazového řádku používá knihovnu Apache Commons CLI pro analýzu příkazů.

každá operace má sadu jednotkových testů vytvořených pomocí JUnit, které se provádějí pokaždé, když je vygenerován konečný produkt (soubor JAR). Každý příkaz v robotu je dokumentován na vlastní webové stránce (např. http://robot.obolibrary.org / důvod). Webové stránky jsou napsaný ve formátu Markdown a obsahují vložené příkazového řádku příkladů, které jsou analyzovány a provedeny jako součást našich integračních testů, s výsledky ve srovnání proti „zlatý standard“ nastavení výstupů. Funkce „diff“ robota se používá při porovnávání ontologických souborů, jinak se používá standardní porovnání souborů. To pomáhá zajistit správnost a konzistenci dokumentace a kódu. Jednotkové testy a integrační testy se provádějí na základě požadavku pull na codebase pomocí Travis continuous integration (Travis CI), takže se ověřují příspěvky do codebase.

příkazy a operace

ROBOT v současné době poskytuje 15 operací (v knihovně „robot-core“) a 19 příkazů (pro rozhraní příkazového řádku). Některé příkazy jsou poměrně specializované a většina ontologických projektů je všechny nevyužije. Zde uvádíme přehled nejběžnějších a obecných příkazů. V každém případě, základní funkce je podporována operace v robota-základní knihovny, které mohou být použity nezávisle na příkaz-line rozhraní z jakéhokoliv programovací jazyk, který běží na JVM.

převést

jsou podporovány různé formáty ontologie OWL, včetně formátu RDF / XML, Turtle, Manchester, OBO a dalších. Pro umožnění další interoperability obsahuje ROBOT příkaz „convert“ pro změnu mezi podporovanými formáty ontologie. Kompletní seznam podporovaných formátů naleznete v dokumentaci „převést“.

uvažování

uvažování je jednou z nejdůležitějších operací v robotovi. Příkaz „důvod“ zahrnuje dvě použití: logickou validaci ontologie a automatickou klasifikaci. V obou případech si uživatelé mohou vybrat svého preferovaného reasonera, který se používá k provedení závěru. Velké ontologie, jako je genová ontologie, obvykle používají losa, který provádí rychlé uvažování pomocí profilu OWL EL. Menší ontologie s bohatší axiomatizací, jako je ontologie vztahů, obvykle používají kompletní sova DL reasoner, jako je poustevník .

když je příkaz‘ důvod ‚ vyvolán na vstupní ontologii, ROBOT zahájí reasoner pomocí rozhraní OWL API Reasoner. Výsledné závěry jsou kontrolovány, aby se zajistilo, že ontologie je logicky koherentní: ontologie musí být konzistentní a nemá žádné neuspokojivé třídy (tj., třídy, které nelze vytvořit instanci bez zavedení nekonzistence). Pokud je ontologie nesouvislá, je to hlášeno a provádění se zastaví. ROBOT může volitelně provádět další kontroly, například zajistit, aby žádné dvě třídy nebyly odvozeny jako ekvivalentní post-uvažování.

Pokud je ontologie konzistentní, provede ROBOT automatickou klasifikaci. Všechny přímé odvozené axiomy „subClassOf“ jsou přidány do ontologie. Lze konfigurovat generování dalších typů axiomů.

tvrzení všech odvozených axiomů je často zásadním krokem v procesu uvolňování biomedicínských ontologií. Mnoho z těchto ontologie tříd pouze tvrdit, jeden jménem nadtřídy (‚subClassOf B‘, kde B je další třída v ontologii) a nula nebo více anonymní superclasses a/nebo anonymní ekvivalentní třídy (‚subClassOf/zápisy se rovnají (R, B), kde R je vlastnost objektu). Tyto anonymní třídy umožňují reasonerovi vyvozovat závěry, které se pak uplatňují. Proto ve verzi ontologie může mít třída více než jednu pojmenovanou superclass.

příkaz ‚důvod‘ obsahuje další příkazy“ pomocníka“. ‚Relaxovat‘ příkaz tvrdí, spojené subClassOf axiomy podle jednoduchého strukturální pravidlo: výraz ‚zápisy se rovnají (R B) a …‘ znamená ‚subClassOf R B‘. To může být užitečné, protože spotřebitelé bio-ontologií často očekávají navigaci v těchto výrazech, např. Příkaz „relax“ zbavuje vývojáře ontologie nutnosti je uplatňovat kromě axiomů ekvivalence, a jako takový je také často zahrnut do pracovních postupů vydání. Nakonec příkaz „reduce“ odstraní redundantní podtřídy axiomů a může být použit po „relax“ k odstranění duplicitních axiomů, které byly v tomto kroku uplatněny.

‚zhmotnit‘ příkaz používá Výraz Zhmotnění Reasoner (EMR) prosadit odvodit výrazy formuláře ‚subClassOf R B‘ . Tam, kde příkaz „důvod“ tvrdí odvozené pojmenované supertřídy, „materialize“ tvrdí anonymní supertřídy. To není součástí standardního cyklu vydání, ale může být prospěšné pro vytvoření kompletních podmnožin ontologie.

Práce s externí ontologie

OBO Slévárna má za cíl koordinovat ontologie modulárně, tak, že části některých ontologie mohou být použity jako stavební bloky pro jiné ontologie. Například ontologie ChEBI chemických entit se používá ke konstrukci definic OWL pro metabolické procesy a aktivity v genové ontologii . Existuje celá řada různých strategií pro využití externích ontologií a správu závislostí mezi ontologiemi, v závislosti na případu použití.

Extract

příkaz ‚extract‘ vytvoří modul založený na množině entit, které se mají extrahovat („seed“). Existují čtyři různé metody extrakce (jak je specifikováno volbou‘ –method‘): MIREOT, TOP, BOT a STAR.

robotova metoda mireot extrakce je založena na principu stejného jména a vyžaduje, aby byla zadána jedna nebo více „spodních“ entit. Volitelně lze také zadat jednu nebo více „nejlepších“ entit. Příkaz extrahuje všechny entity“ spodní „úrovně a jejich předky až na „horní“ úroveň ze vstupní ontologie. Pokud nejsou k dispozici žádné“ top “ entity, jsou zahrnuti předci až po entitu nejvyšší úrovně („owl: Thing“).

TOP, BOT, a HVĚZDA metody využít OWL API Syntaktické Lokalitě Modul Extrakce (SLME) plnění, které je zaručeno, aby zachytit všechny informace logicky relevantní semen . Metoda BOT („bottom“) zahrnuje všechny vztahy mezi vstupními entitami a jejich předky. Horní metoda zahrnuje všechny vztahy mezi vstupními entitami a jejich potomky. Konečně, hvězdná metoda zahrnuje pouze všechny vztahy mezi vstupními entitami. Hvězdná metoda produkuje nejmenší výstupy, zatímco horní metoda obvykle produkuje největší výstupy.

V zájmu podpory ontologie termín provenience, ‚extract‘ příkaz ‚–komentovat-s-source pravda možnost, že bude komentovat každou extrahované termín s URL zdroje ontologie, který je extrahován z.

odebrat a filtrovat

příkazy „odebrat“ a „filtr“ se používají pro jemnozrnné operace s axiomy OWL. „odebrat“ umožňuje uživatelům vybrat, které sady axiomů chtějí odstranit z cílové ontologie. ‚filtr‘ dělá pravý opak, takže pouze vybrané axiomy jsou zkopírovány ze vstupu do nové výstupní ontologie.

Tyto dva příkazy práci tím, že začíná s osivem sadu entit, pak použití různých selektorů najít související subjekty, a nakonec výběr, který axiom typy odstranit nebo filtrovat. Očekáváme, že tuto funkci bude používat pouze malý počet „výkonných uživatelů“, ale tyto příkazy nakonec poskytnou základ pro další příkazy vyšší úrovně.

tyto příkazy lze použít ke generování podmnožin ontologie na základě anotací filtrováním nebo odebráním entit se zadanou anotací. OBO Slévárna ontologie často anotovat třídy s ‚na podmnožinu majetku určit, kde třídy mohou být použity. Selektor anotace umožňuje uživateli poskytnout úplnou hodnotu anotace nebo vzor, který se bude shodovat pomocí regulárního výrazu.

sloučit

příkaz ‚Sloučit‘ kombinuje dvě nebo více samostatných vstupních ontologií do jedné ontologie. Poskytuje také možnost Sloučit všechny importované ontologie jedné vstupní ontologie do jedné hlavní ontologie, která se často používá při vytváření vydání.

Sloučení importované ontologie (podle dovozní prohlášení) do vstupního ontologie se provádí automaticky, takže uživatel nemusí na seznamu každé importované ontologie jako vstupní. Nabízíme možnost (‚–kolaps-import-uzavření false‘), aby tuto funkci vypnout, podporující případy, ve kterých uživatelé mohou sloučit více vstupní ontologie, které mají dovozní prohlášení, ale chtějí, aby jejich dovozu samostatné.

Dotazování a podávání zpráv

Ontologie pracovní postupy obvykle zahrnují operace dotazu přes ontologie, vytváření zpráv, které mohou být poučné pro obě editorů a uživatelů ontologie-například tabulku všech tříd a jejich textové definice. Operace dotazu lze také použít pro ověření kontroly. Dotazovací jazyk SPARQL poskytuje univerzální a deklarativní způsob, jak mohou správci ontologie vytvářet zprávy o ontologii a ověřovací kontroly . ROBOT poskytuje pohodlný způsob, jak provádět dotazy pomocí příkazu‘ query‘, nebo ověřovací kontroly pomocí ‚verify‘. Příkaz „report“ navíc obsahuje konfigurovatelný balíček standardních dotazů pro obo projekty, které lze použít v jakémkoli ontologickém pracovním postupu, aniž by správce musel být obeznámen se SPARQL.

dotaz

příkaz ‚query‘ robota spouští dotazy SPARQL na ontologiích nebo jiných zdrojích RDF. To může správce ontologie použít buď k provádění interaktivních dotazů, nebo typičtěji k zahrnutí standardních dotazů do pracovního postupu ontologie. Příkaz ‚query‘ zabalí jednu z mála operací , která používá Apache Jena, spíše než OWL API. Jena API umožňuje robotovi načíst ontologii jako sbírku trojic obsažených v objektu RDF modelu. Poskytuje SPARQL dotazovací engine pro tyto modely, které používáme ke spuštění všech dotazů.

dotazy „SPARQL SELECT“ vytvářejí tabulku výsledků oddělenou čárkami nebo tabulkami. ASK queries vytvoří soubor s Booleovskou hodnotou. Dotazy „SPARQL CONSTRUCT“ vytvářejí soubor RDF, který může být dále zpracován robotem nebo sloučen zpět do načtené ontologie. ‚CONSTRUCT‘ s poskytují pohodlný způsob provádění“ makro “ rozšíření stylu . Dotazy „SPARQL UPDATE“ vkládají a / nebo odstraňují data přímo v ontologii (jako RDF Model). ROBOT převede aktualizovaný RDF Model zpět na objekt ontologie OWL API, který bude uložen v některé z podporovaných syntaxí.

příkaz ‚query‘ podporuje možnost načíst importované ontologie jako pojmenované grafy pomocí volby‘ –use-graphs‘. Pokud je nastaveno na „true“, dovoz může být dotazovány jako pojmenované grafy (název je, že ontologie je IRI) a výchozí graf je sjednocení všech grafů. Použití výchozího grafu je podobné provádění „sloučení“ všech dovozů před dotazováním, ale rozdíl mezi dovozy by byl ztracen v „sloučení“.

Verify

příkaz ‚verify‘ je variací na provedení‘ SPARQL SELECT‘. Dotazy se používají k zajištění toho, že ontologie odpovídá předem stanovené sadě podmínek; například zajištění toho, aby žádná třída neměla více textových definic. Vzhledem k vybranému dotazu bude „verify“ úspěšné (tj. ukončení se stavovým kódem 0), pokud nebudou vráceny žádné výsledky. Selže (tj., ukončete s nenulovým stavovým kódem), pokud se z dotazu vrátí nějaké výsledky. Takže vzhledem k dotazu SPARQL, který vybere neplatná data, příkaz „ověřit“ ověří, že ontologie (nebo jiný prostředek) neobsahuje žádná taková neplatná data.

Zpráva

„zpráva“ příkaz je rozšířením ‚query‘ a „ověřit“, že poskytuje řadu konfigurovatelné kontroly kvality (QC) kontroluje ontologie a vrací tabulku nebo YAML výstup porušování. Tabulka je výstup buď ve formátu odděleném čárkami nebo tabulátory a snadno pro uživatele číst, zatímco výstup YAML lze snadno analyzovat jinými programy.

kontroly QC zahrnují kontroly anotací, logické kontroly a kontroly metadat. Anotace jsou důležité pro usnadnění lidského porozumění, takže příkaz „zpráva“ najde případy, kdy by chybějící nebo duplicitní anotace mohly způsobit problémy. Logické kontroly se zaměřují na strukturální soudržnost a konzistenci ontologie. Nakonec „report“ identifikuje chybějící metadata ontologie, jak je uvedeno v doporučeních pro slévárenství OBO.

jsou hlášeny tři úrovně porušení: chyba, varování a informace. Chyba je nejzávažnější, například chybějící nebo duplicitní štítek. Ve výchozím nastavení příkaz „report“ selže, pokud dojde k porušení na úrovni chyb, což zastaví všechny automatizované procesy sestavení. Tyto typy porušení musí být opraveny před zveřejněním ontologie. Porušení úrovně varování by měla být stanovena co nejdříve, např. odvozené ekvivalence třídy jedna ku jedné, které jsou obvykle nezamýšlené v projektech OBO. INFO je pro Doporučené opravy, které pomáhají udržovat konzistenci napříč ontologiemi OBO Foundry, jako je začátek definice velkým písmenem a končící tečkou. ‚report‘ lze nakonfigurovat pomocí volby příkazového řádku tak, aby selhal na jiné úrovni porušení nebo nikdy nezklamal, bez ohledu na jakékoli porušení. Dokumentujeme každou kontrolu QC s návrhem na ruční opravu, kterou může uživatel použít.

výchozí „profil“ s úrovněmi hlášení pro každou kontrolu QC poskytuje ROBOT, ale uživatelé si také mohou vytvořit vlastní profily. V těchto profilech mohou změnit úrovně porušení jednotlivých kontrol, rozhodnout se vyloučit určité kontroly a přidat své vlastní kontroly jako dotazy SPARQL. Některé ontologie mohou například kategorizovat třídu bez textové definice jako chybu, zatímco jiné to mohou kategorizovat jako varování. Jedním z našich cílů je, aby se sbíhají na standardní profil, který je maximálně vhodný pro množinu všech ontologií v OBO knihovny, podpora přijetí společné kontroly kvality.

Repair

ačkoli většina problémů vyvolaných „validate“ a „report“ musí být opravena ručně, ROBOT také poskytuje příkaz „repair“, který může automaticky opravit určité problémy. Současná implementace sloučí anotace na duplicitních axiomech a aktualizuje odkazy na zastaralé třídy, pokud jsou anotovány navrhovanou náhradou. Máme v úmyslu rozšířit „opravu“ na širší škálu běžných problémů, u nichž je správná Oprava jasná.

Šablony ontologie rozvoj

ROBOT poskytuje šablony-řízený ontologie termín generace systému. Uživatelé mají také možnost připojit svůj vlastní systém generování termínů do svého pracovního postupu, jako jsou Dead Simple OWL Design Patterns (DOS-DPs).

obrovské množství dat je uloženo v tabulkách a databázích a tabulkové formáty jsou vhodné pro mnoho druhů dat. Příkaz „template“ robota umožňuje uživatelům převádět tabulková data do formátu RDF/OWL. Šablona robota je jednoduše soubor hodnot oddělených tabulátory (TSV) nebo hodnot oddělených čárkami (CSV) s některými zvláštními konvencemi, které jsou uvedeny v dokumentaci „šablony“ robota .

tyto šablony lze použít pro modulární vývoj ontologie. Šablony tabulek může být zachována jako součást ontologie je zdrojový kód úložiště, a namísto přímých úprav ontologie soubor, vývojáři upravit řádky v tabulce, které odpovídají pojmy v ontologii. Příkaz ‚šablona‘ se pak používá ke generování modulu ontologie, který je zahrnut jako příkaz importu ve verzi editorů ontologie a sloučen během procesu vydání.

workflow

workflow se skládá ze sady úkolů koordinovaných nějakým systémem workflow. Ontologie pracovní postupy se skládají z úkolů jako je provádění QC kontroly, stavební import modulů, uvažování nad ontologií, a vytvářet různé ontologie uvolnění produktů.

ROBOT sám o sobě není správcem workflow, i když umožňuje spojit více příkazů do jednoho dlouhého příkazu. Při řetězení příkazů robota je výstupní ontologie z jednoho příkazu předána přímo jako vstup do dalšího příkazu. Řetězování může být například použito k nahrazení dvou příkazů, které slučují ontologie a poté uvažují nad sloučeným produktem:

`robot merge –input ont-1.sova — vstup ont-2.owl — výstup se sloučil.sova.

robot reason — input se spojil.sova-výstup odůvodněný.sova`.

namísto vytvoření sloučeného produktu a spuštění ‚reason‘ nad tím, to lze provést jedním příkazem:

‚ robot merge — input ont-1.sova — vstup ont-2.sova důvod-výstup odůvodněný.sova`.

klíčovou výhodou řetězení je, že ontologie nemusí být serializovány a analyzovány mezi jednotlivými kroky; stejný objekt ontologie OWL API je udržován v paměti a prochází řetězcem příkazů robota. U velkých ontologií může řetězení výrazně zlepšit výkon robota.

protože příkazy robota lze provádět na příkazovém řádku, lze použít řadu různých systémů pracovního postupu. Zdůrazňujeme použití GNU Make, které se obvykle používá k kompilaci softwaru. Makefile se skládá ze souboru pravidel používaných k vytváření „cílů“. Při vývoji ontologie se Makefile používá pro automatizované úkoly, jako je příprava ontologie pro vydání. V tomto případě jsou cíle obvykle ontologické soubory. „Recepty“ pro pravidla jsou systémové příkazy unixového stylu, prováděné příkazem „make“.

příkazy robota mohou být použity jako „recepty“, aby se „cíle“. Typický pracovní postup nebude používat všech 19 příkazů robota. Například ne všechny ontologické projekty mohou používat šablony robotů, a proto ne všechny pracovní postupy vydání musí obsahovat příkaz „šablona“. Vývojáři ontologie se mohou rozhodnout, které příkazy jsou potřebné k provedení vydání, a vytvořit pracovní postup kolem těchto příkazů. Obrázek 1 ukazuje standardní způsob, jakým je pro pracovní postup uvolňování kombinován výběr příkazů robota.

br. 1

figure1

pracovní postup pro uvolnění robota. Typický pracovní postup uvolňování pomocí robota. Ontologie upravit soubor ONT-edit.owl je nejprve ověřena jako kontrola kvality pomocí robota „verify“. Pak, textové soubory obsahující seznamy externích ontology v dovozu adresář slouží k regeneraci import modulů pomocí „výpis“, zajistit, že dovoz je up-to-date. ONT-edit.owl je pak předán řadou příkazů robota („důvod“, „relax“, „zmenšit“ a „anotovat“), aby se vygenerovalo vydání, ONT.sova. Konečně, onte.owl je převeden do formátu OBO

nejprve jsou kontroly kvality spuštěny nad verzí ontologie editorů s „report“ nebo „verify“. Hledají ekvivalentní třídy, koncové mezery v anotacích, vlastní odkazy, nesprávnou syntaxi křížového odkazu a chybějící štítky. Výsledky jsou uloženy do zadaného adresáře‘ reports/‘. Pokud dojde k porušení na úrovni chyb, úloha selže a zapíše porušení do tabulky, aby bylo možné je snadno identifikovat. Tento krok umožňuje vývojářům rychle zjistit, zda nové změny zavedly nějaké problémy v ontologii a opravit je před uvolněním.

za předpokladu, že počáteční krok kontroly QC byl úspěšně dokončen, dalším krokem je vytvoření importních modulů. ROBOT „výpis“, je spustit pro každou položku v seznamu, dovozu, které mají odpovídající horizontu soubory (semen) v dovozu/‘ adresář. Tím se vytvoří všechny importní moduly ve stejném adresáři‘ imports/‘. Tím je zajištěno, že když je ontologie vydána s externími termíny, všechny externí termíny jsou aktuální s vydanými verzemi zdrojových ontologií. Uvolnění zastaralých externích termínů může způsobit zmatek, protože termín zobrazí staré i nové podrobnosti ve vyhledávacích službách ontologie, jako je Ontobee a vyhledávací služba ontologie. Další kontroly QC lze spustit v celé ontologii pomocí importů pomocí příkazu „ověřit“ nebo opětovným spuštěním „report“.

poslední, hlavní release produkty jsou vytvořeny: soubor OWL a soubor OBO. Chcete-li vytvořit vydání OWL, soubor editorů prochází řadou zřetězených příkazů robota: „důvod“, „relax“, „zmenšit“ a „anotovat“. Tato série příkazů, pomáhá zajistit, že vydala ontologie je snadné procházet a pochopit, stejně jako bez jakýchkoliv nadbytečných axiomy. Pokud některý z těchto příkazů selže, proces Make se ukončí odpovídající chybovou zprávou. Pokud je například ontologie nesouvislá, krok „důvod“ selže. Nakonec příkaz „anotovat“ přidá verzi IRI do metadat ontologie. Tento soubor OWL je pak převeden do formátu OBO, v tomto okamžiku jsou všechny cíle zkopírovány do adresáře s datem vydání.

vývojová sada ontologie

vytvoření Makefile pro koordinaci všech těchto kroků může být náročné. Děláme to jednodušší pro vývojáře ontologie tím, že poskytuje Ontology Development Kit (ODK) . To lze použít k vytvoření úložiště GitHub podle standardního rozvržení, se standardním Makefile podle pracovního postupu popsaného výše. Výsledný repozitář GitHub bude také automaticky nakonfigurován tak, aby spouštěl kroky ověření (například „report“) pracovního postupu prostřednictvím Travis CI . Pracovní postup lze také provést pomocí Docker s kontejnery ODK uvolněnými na Dockerhub . To umožňuje snadné provádění pracovních postupů buď na lokálním počítači vývojáře ontologie, s Travis CI, nebo pomocí škálovatelných nástrojů, jako je Jenkins .

ODK staví na robotovi a demonstruje užitečnost robota, ale plná diskuse je nad rámec tohoto článku.