\documentclass[tikz,border=5pt]{standalone}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{positioning, arrows.meta, calc, patterns, backgrounds}
\begin{document}
\begin{tikzpicture}
\node[draw, fill=gray!30, rectangle] at (-5, 1.4) (c1) {\tiny Existing Concept};
\node[draw, fill=white, rectangle, below=0.4cm of c1.south west, anchor=south west] (c2) {\tiny New Non-Basic Concept};
\node[draw, rectangle, pattern=north west lines, pattern color=gray!60, rectangle, below=0.4cm of c2.south west, anchor=south west] (c3) {\tiny New Basic Concept};
\node[right=2.3cm of c1.west] (l1) {};
\node[right=0.5cm of l1] (l2) {};
\node[right=2.3cm of c2.west] (l3) {};
\node[right=0.5cm of l3] (l4) {};
\node[right=2.3cm of c3.west] (l5) {};
\node[right=0.5cm of l5] (l6) {};
\draw[-{Latex[open]}] (l1) -- (l2);
\draw[-stealth,dashed] (l3) -- (l4);
\draw[-stealth] (l5) -- (l6);
\node[right=0.1cm of l2] (l2-l) {\tiny Subsumption};
\node[right=0.1cm of l4] (l4-l) {\tiny Definition};
\node[right=0.1cm of l6] (l6-l) {\tiny Custom relation};
\draw[draw=black] (-5.9, 1.7) rectangle ++(4.9, -1.4);
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle] (top) {$\top$};
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle, below left=0.4cm and 0.4cm of top] (so) {$\mathtt{Spatial\_Object}$};
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle, below left=0.4cm and -1.2cm of so] (lane) {$\mathtt{Lane}$};
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle, below left=0.4cm and -0.1cm of so] (bic) {$\mathtt{Bicycle}$};
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle, below left=0.4cm and 1.8cm of so] (human) {$\mathtt{Human}$};
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle, below right=0.4cm and -0.15cm of so] (sign) {$\mathtt{Traffic\_Sign}$};
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle, below=0.4cm of sign] (stvo) {$\mathtt{StVO\_350}$};
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle, below right=0.4cm and 1.2cm of top] (geo) {$\mathtt{Geometry}$};
\node[minimum height=0.5cm, draw, fill=gray!30, rectangle, below=0.4cm of geo] (rect) {$\mathtt{Rectangle}$};
\node[minimum height=0.5cm, draw, rectangle, below right=0.4cm and -1.1cm of stvo, fill=white] (cross) {$\mathtt{Pedestrian\_Crossing}$};
\node[minimum height=0.5cm, draw, rectangle, fill=white] (bicyclist) at (human.east |- cross) {$\mathtt{Bicyclist}$};
\node[preaction={fill, white}, minimum height=0.5cm, draw, rectangle, pattern=north west lines, pattern color=gray!60] (ndlane) at (lane.north |- cross) {$\mathtt{Non\_Driveable\_Lane}$};
\draw[-{Latex[open]}] ([xshift=0.5cm] so.north) |- (top);
\draw[-{Latex[open]}] (geo) |- (top);
\path[-{Latex[open]}] (rect) edge (geo);
\draw[-{Latex[open]}] (sign.west) -| ([xshift=0.5cm] so.south);
\path[-{Latex[open]}] (lane.north) edge (so.south -| lane.north);
\draw[-{Latex[open]}] (bic) |- (so.west);
\draw[-{Latex[open]}] (human) |- (so);
\path[-{Latex[open]}] (stvo) edge (sign);
\path[-{Latex[open]}] (ndlane) edge (lane);
\draw[-stealth,dashed] (cross) -- (stvo.east -| cross) -- (stvo.east);
\draw[-stealth,dashed] (cross) -- (stvo.east -| cross) -| (rect.south);
\node[above=0.0cm of cross,align=left,fill=white,inner sep=0] (f1) {\tiny$\equiv \exists \mathtt{has\_geometry}. (\mathtt{Rectangle} $\\[-0.15cm]\tiny$ \sqcap \exists \mathtt{is\_signed\_by}. \mathtt{StVO\_350})$};
\draw[-stealth,dashed] (bicyclist) -- (stvo.east -| bicyclist) -| (bic);
\node[above right=0.25cm and -0.7cm of bicyclist,align=left,fill=white,inner sep=0] (f2) {\tiny$\equiv \mathtt{Human} \sqcap$\\[-0.15cm]\tiny$\exists \mathtt{rides} . \mathtt{Bicycle}$};
\path[-{Latex[open]}] (bicyclist.north -| human.south) edge (human);
\path[-stealth] (so) edge node[above,yshift=-0.08cm] {\tiny$\mathtt{has\_geometry}$} (geo);
\draw[-stealth] (so.south east) -| (sign.north);
\node[above right=0.32cm and -1.9cm of sign] (signed) {\tiny$\mathtt{is\_signed\_by}$};
\path[] (so) edge[->,>={stealth},loop above] node[] {\tiny$\mathtt{mounted}$} (so);
\begin{scope}[on background layer]
\node[above left=-0.06 and -0.4cm of so,rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (sol) {\tiny Physics};
\node[above left=-0.06 and -0.6cm of geo,rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (geol) {\tiny Geometry};
\node[above left=-0.06 and -0.4cm of human,rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (humanl) {\tiny Layer 4};
\node[above left=-0.06 and -0.4cm of bic,rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (bicl) {\tiny Layer 4};
\node[above left=-0.06 and -0.25cm of bicyclist,rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (bicyclistl) {\tiny Layer 4};
\node[above left=-0.06 and -0.25cm of cross,rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (crossl) {\tiny Layer 1};
\node[above left=-0.06 and -0.4cm of ndlane, rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (ndlanel) {\tiny Layer 1};
\node[above left=-0.06 and -0.4cm of lane, rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (lanel) {\tiny Layer 1};
\node[above left=-0.06 and -0.4cm of sign, rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (signl) {\tiny Layer 1};
\node[above left=-0.06 and -0.4cm of stvo, rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (stvol) {\tiny Layer 1};
\node[above left=-0.06 and -0.7cm of rect, rectangle,fill=white, draw=black, rounded corners,inner sep=1.7pt] (rectl) {\tiny Geometry};
\end{scope}
\end{tikzpicture}
\end{document}