Scowl: a Scala DSL for programming with the OWL API


Scowl is a domain-specific language (DSL) which provides a convenient Scala-based syntax for composing OWL (Web Ontology Language, (W3C OWL Working Group 2009)) expressions and axioms. Effective use of complex, community developed ontologies within research applications, such as those from the OBO library (Open Biomedical Ontologies, (Smith et al. 2007)), often requires custom programmatic manipulation of ontologies and data, along with input to and output from automated reasoners. Allowing deeply nested OWL constructs to be coded in a readable, declarative style, Scowl facilitates use cases at the interface of application programming and OWL modeling: 1) tabular data ingest and transformation into OWL; 2) ontology manipulation via programmatic generation of axioms from existing content; and 3) reporting on ontology content using pattern matching on OWL objects.

Within Scala applications, Scowl adds extension methods to native Java OWL API objects (“The OWL API,” n.d.), supporting two syntax styles: the pseudo-English Manchester syntax (Horridge and Patel-Schneider 2009), as well as the OWL Functional syntax (Motik et al. 2009). Integration with the standard Java OWL API provides compatibility with multiple freely available OWL reasoners.


Horridge, Matthew, and Peter F Patel-Schneider. 2009. “OWL 2 Web Ontology Language Manchester Syntax.”

Motik, Boris, Peter F Patel-Schneider, Bijan Parsia, Conrad Bock, Achille Fokoue, Peter Haase, Rinke Hoekstra, Ian Horrocks, Alan Ruttenberg, and Uli Sattler. 2009. “OWL 2 Web Ontology Language: Structural Specification and Functional-Style Syntax.”

Smith, Barry, Michael Ashburner, Cornelius Rosse, Jonathan Bard, William Bug, Werner Ceusters, Louis J Goldberg, et al. 2007. “The OBO Foundry: Coordinated Evolution of Ontologies to Support Biomedical Data Integration.” Nature Biotechnology 25 (11): 1251–5. doi:10.1038/nbt1346.

W3C OWL Working Group. 2009. “OWL 2 Web Ontology Language Document Overview.”