I am a Research Engineer working at Bosch Corporate Research (CR). In particular, I do knowledge and data engineering as well as software engineering. Currently, I work on three projects: The first one is about a semantic "global search" over several source systems. The second project focuses on data integration to manage changes in labels (e.g., variable names) of evolving ECU software. In my third project, I work on data models and the semantic description of data in the publicly funded Agri-Gaia project, which builds on Gaia-X.
Previously, I was a Postdoc and scientific employee working with Steffen Staab and Ralf Lämmel. My research focus was on programming with semantic data and graph data in general. My Ph.D. thesis is about avoiding runtime errors in programs that query and process such kind of data by leveraging type systems.
I did my bachelor studies at the Johannes Gutenberg University in Mainz. The focus of my studies was Computer Graphics, Web Technologies, and Databases. I was also involved in student teaching for the Programming Languages course, which dealt with programming concepts in C, Prolog, and Scheme, as well as the Software Engineering course. My bachelor's thesis dealt with indoor localization in a hospital setting for minimizing response times by doctors. After receiving my Bachelor's degree in 2011, I switched to the University of Koblenz-Landau for my master's studies. There, I got involved in the field of mining software repositories and extraction of knowledge from source code repositories for the Software Languages Team. My master thesis dealt with the extraction and representation of source code fragments from a repository based on queries.
Dr. rer. nat. in Computer Science, 2020
University of Koblenz-Landau
MSc in Computer Science, 2013
University of Koblenz-Landau
BSc in Computer Science, 2011
Johannes Gutenberg University, Mainz
In general, I'm interested in querying data and programming with data in general. For example, the ideas of Language Integrated Queries or type providers that can generate types during programming fascinate me.
My research is in the area of semantic data, in which conceptualizations are represented in the data and the data itself is described using entity-relation or graph-like descriptions, as well as graph data in general. Knowledge graphs, such as the ones by Google or Wikidata are good examples of this. Often, my research focuses on the RDF data format as a typical example of semantic data.
In the RDF data format, triples are used to make statements about entities. For example, the triple
mleinberger worksFor uniko states that
I work for
uniko (the Univerisity of Koblenz-Landau) whereas
uniko type University states that this is a university.
then add meaning to those terms and can, for
example, define that a university is a special kind of
scientific and educational organization.
Subsequently, when asking “What educational organization does Martin work for?”,
uniko can be derived as a valid answer.
I'm mostly concerned with programming with RDF data. In particular, my thesis is about type checking,
which is a form of program verification. The type of a function consists of its domain, which defines
the values it can work with and its co-domain, which is the set of values it can produce. For example,
pow2, which computes the square value of a number and may have type
int->int. If this function is applied to value, then this value must belong to the set
of integers as the function is otherwise ill-defined. A static type checker checks this at compile
time before the program is to avoid errors.
I take this approach and apply it to programs working with semantic data. I allow programmers to
use concepts such as
EducationalOrganization that are for example defined in ontologies
as types for functions. If
EducationalOrganization is the domain of a function and this
function is applied to results of a query, such as “What educational organization does Martin work
for?”, I try to find evidence that all results produced by this query are indeed instances of
Other research interests of mine include Data Integration and Ontology-based data access, which is a specific form of data integration. Furthermore, I'm interested in query languages in general, particularly graph query languages.
I am mainly responsible for the tutorials for Artificial Intelligence as well as the lectures for Algorithms and Data structures and Big Data.
Algorithms and Data structures is an undergraduate course focusing on algorithm as well as datastructure design and analysis. Topics of the course include:
Artificial Intelligence is an graduate course focusing on classical, symbolic AI. In particular, the course focuses on logics as well as planning and general problem solving through search. Topics of the course include:
As of 2020, I'm responsible for the graduate course Big Data. Topics of the course include:
Besides courses, I’m also sometimes involved in seminars or research practicals such as seminars on graph algorithms or recently a research practical on AIs in Starcraft .