Progamming the Semantic Web
In recent years, Semantic Web technologies such as RDF(S) and the Description Logics based Web Ontology Language (OWL DL) have paved the way for standardized formal conceptualizations of all kinds of knowledge. Numerous ontologies have been developed to conceptualize a plethora of domains of discourse.
Since corporations from all sectors have braced to define company specific knowledge using Semantic Web technologies, ontology engineering has become a business model for a number of companies. As the underlying standards have matured, tools for ontology engineering have emerged both in commercial as well as in academic fields.
Knowledge acquisition systems such as Protégé make it particularly easy to construct domain ontologies and to enter data. Ontology management systems such as Jena can be used for creating, modifying, querying, and storing ontologies. Inference engines such as Pellet provide support for automatic reasoning. There is an incessantly growing set of tools, projects, and applications for ontology languages like OWL.
…processing ontological information programmatically is still laborious and error prone. From my experience, this is mainly caused by the lack of compile time support both for XML Schema Definition (XSD) type definitions, which may be the range of OWL data type properties, as well as for terminological knowledge in form of ontologies.
I developed the novel programming language Zhi#, which provides compile time and runtime support for XSD and OWL.
The Zhi# programming language is described in Zhi# – OWL Aware Compilation by Alexander Paar and Denny Vrandečić: “The usefulness of the Web Ontology Language to describe domains of discourse and to facilitate automatic reasoning services has been widely acknowledged. However, the programmability of ontological knowledge bases is severely impaired by the different conceptual bases of statically typed object-oriented programming languages such as Java and C# and ontology languages such as the Web Ontology Language (OWL). In this work, a novel programming language is presented that integrates OWL and XSD data types with C#. The Zhi# programming language is the first solution of its kind to make XSD data types and OWL class descriptions first-class citizens of a widely-used programming language. The Zhi# programming language eases the development of Semantic Web applications and facilitates the use and reuse of knowledge in form of ontologies. The presented approach was successfully validated to reduce the number of possible runtime errors compared to the use of XML and OWL APIs.” Download PDF BibTeX
Use cases of the Zhi# programming language are delineated in Searching and Using External Types in an Extensible Software Development Environment by Alexander Paar: “Schema and ontology languages have proved to be useful for conceptualizing knowledge in a variety of applications. In many software projects, XML Schema Definition data types and ontological concept descriptions coexist with programming language class hierarchies. However, only programming language type definitions are fully integrated into today’s software development environments. Support for external type systems is spotty. For programmers, it is particularly tedious to search type definitions in XML schema files and OWL ontologies, to browse external type hierarchies, to investigate external type members, and to analyze and comprehend the use of external type definitions in program code. In this work, it will be argued that improved search capabilities are required to ease the use of schema and ontology languages in software projects. Difficulties of searching type definitions in software project workspaces will be indicated. An extensible compiler framework will be outlined that facilitates the use of schema and ontology languages in C# programs. An Eclipse-based integrated development environment will be described that makes XML data types and OWL concept descriptions first-class citizens of the source code editor. Finally, identical search and (just in time) program analysis features for programming language and external type definitions will be suggested.” BibTeX
A broader application scope of Zhi# is explained in Implementing OCL Invariants with Constrained Data Types by Alexander Paar: “The Object Constraint Language (OCL) facilitates textual specifications of constraints that apply to Unified Modeling Language (UML) models. In particular, OCL is used for the specification of invariants in UML class diagrams. This paper compares the implementation of OCL invariants in program code by means of aspect-oriented programming (AOP) on the one hand and by means of value space constrained data types on the other hand. By contradistinction of these two approaches it will be argued that the availability of constraint-based type derivation and value space-based subtyping in a statically typed programming language can provide for the enforcement of OCL invariants already at compile time as opposed to runtime.” PDF
“Consider yourself personally invited to have a go at this new tool!”
The Zhi# Programming Language
is an extension of ECMA-334 standard C# 1.0 with compiler and runtime support for XML Schema Definition (XSD) data types and the Web Ontology Language (OWL).
In Zhi#, it is possible to natively reference external type definitions and to cooperatively use these external types along with conventional C# programming language features such as method overriding. The Zhi# compiler framework is extensible with respect to external typing mechanisms (e.g., subsumption, type derivation, type inference).
The type system features of the C# host language can be extended by external compiler components. In the current implementation, the Zhi# compiler framework includes two external compiler components, which provide type checking and program transformation functionality for XML Schema Definition and the Web Ontology Language.
“Zhi# programs don’t just execute, they reason!”
The source code of the Zhi# compiler is available on zhisharp.sourceforge.net.
The Zhi# compiler is available under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 license.
Zhi# Video Demos
|2012||Innovations in XML Applications and Metadata Management: Advancing Technologies, IGI Global||Foreword||BibTeX PDF|
|2012||1st Symposium on Languages, Applications and Technologies (SLATE)||From Program Execution to Automatic Reasoning - Integrating Ontologies into Programming Languages (Keynote)||BibTeX|
|2011||8th Extended Semantic Web Conference (ESWC)||Zhi# - OWL Aware Compilation||BibTeX|
|2011||South African Institute of Computer Scientists and Information Technologists Conference on Knowledge, Innovation and Leadership in a Diverse, Multidisciplinary Environment (SAICSIT)||Static typing with value space-based subtyping||BibTeX|
|2010||Dissertation, Universität Karlsruhe (TH)||Zhi# - Programming Language Inherent Support for Ontologies||BibTeX DOI|
|2010||2nd International Workshop on Search-driven development: Users, Infrastructure, Tools and Evaluation (SUITE)||Searching and Using External Types in an Extensible Software Development Environment||BibTeX|
|2007||4th International Workshop on Software Language Engineering (ateM)||Zhi# - Programming Language Inherent Support for Ontologies||BibTeX|
|2006||21st IEEE/ACM International Conference on Automated Software Engineering (ASE)||Programming Language Inherent Support for Constrained XML Schema Definition Data Types and OWL DL||BibTeX|
|2005||9th IASTED International Conference on Software Engineering and Applications (SEA)||Zhi#: Programming Language Inherent Support for XML Schema Definition||BibTeX|
|2003||18th Annual ACM SIGPLAN Conference on Object Oriented Programming Systems||Semantic Software Engineering Tools||BibTeX|
|2003||5th Autonomic Computing Workshop - Active Middleware Services (AMS)||Semantic Software Engineering Approaches for Automatic Service Lookup and Integration||BibTeX|