1. March Liu
  2. Socrates

Source

Socrates / docs / CPGM2011 / slideOf.tex

\documentclass[utf8x, notes=hide]{beamer}
%\usepackage[bars]{beamerthemetree} % Beamer Theme v 2.2
% \usetheme{JuanLesPins} % Beamer theme
\usetheme{boxes} % Beamer theme
\usecolortheme{whale} % Beamer color theme

\usepackage[boldfont,slantfont]{xeCJK}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\setsansfont{Helvetica}
\setmonofont{Monaco}
\setCJKmainfont{文泉驿正黑}
\setCJKsansfont{文泉驿微米黑}
\setCJKmonofont{WenQuanYi Micro Hei Mono}
\setCJKfamilyfont{tt}{Monaco}

%中文断行
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt
\usepackage{color}
\definecolor{listinggray}{gray}{0.9} 
\usepackage{xcolor}

\usepackage{listings}
\lstset{language=sql,
%numbers=left,
backgroundcolor=\color{listinggray},
showspaces=false,
showstringspaces=false,
basicstyle=\ttfamily, 
frame=single,
%framexleftmargin=7mm,
frameshape={RYN}{y}{y}{RYN}}
\usepackage{hyperref}

\title{Socrates 动态建模工具}
\author[刘鑫]{March Liu <march.liu@gmail.com>}
\institute{理论及Python + PostgreSQL 实现}

\begin{document}

\begin{frame}
 \titlepage
\end{frame}

\section{什么是Socrates?}

\begin{frame}
  \begin{center}
    \Huge{什么是 Socrates?}
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
     动态建模设计
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
用一套数据库结构自适应任意数据结构
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
可扩展,可适应未知类型
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
自解读,不需要额外的辅助信息,可以从数据库中得到完整的信息内容和结构。
  \end{center}
\end{frame}

\subsection{理论基础}

\begin{frame} 
\frametitle{三元结构}
  \begin{itemize}  [<+-| alert@+> ]
  \item Socrates的原子结构称为subject(条目/主语)。这是一个map数据结构
  \item 每个subject有内部的精细结构,由一组三元短语描述,称为 segment
  \item 三元短语结构为 (subject, predicate, object)
  \item predicate ,即谓词,表示subject的内部结构,即字典的key
  \item object,即宾语,指 subject 由谓词表达的值,即字典的value
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{主语 Subject}
  在语义上,主语 subject 表示一组相关子句的集合。在实现上,subject是一
  个匿名的字典。存储于数据库中的时候,由数据库维护其id,但是通常用户并
  不需要直接关心其id,而是在应用层通过变量使用它。
\end{frame}

\begin{frame}
  \frametitle{谓语 Predicate}
谓词在应用层取出的subject中,就是字典的key。在数据库中,它表示
subject所具有的内部结构。每个predicate必须有自己的名字,需要标的自己的
宾语类型,即 obType。根据objType,可以得到宾语存储的位置。(未来可能改
变)
\end{frame}

\begin{frame}
  \frametitle{宾语 object}
  宾语是实际的值,它可能有任何类型,Socrates 只要求最少实现三种类型:基
  本的 string 和 subject(实际上是integer或string),和integer(如果不考
  虑array支持,可以不包含integer)。
\end{frame}

\section{Socrates 语义}

\begin{frame}
  \begin{center}
    \Huge{语义设计}
  \end{center}
\end{frame}

\begin{frame}[allowframebreaks]
  \frametitle{META SEGMENTS}
为了实现自解释,Socrates 系统包含一组元语义:

\begin{itemize}
\item  subject is type
\item predicate is subject
\item is is predicate
\item is objType subject
\item objType is predicate
\item objType objType subject
\item type is subject
\item string is type
\item name is predicate
\item name objType string
\item storage is predicate
\item storage objType string
\item uri is predicate
\item uri objType string
\end{itemize}

\end{frame}

\subsection{自解释实例}

\begin{frame}
  \frametitle{示例}
  通过前面的元语定义,我们可以做到信息自解释。例如,一个人员信
  息条目可能是:

$$
subject = \begin{cases}
user name, & "March Liu" \\
mail,  & "march.liu@gmail.com" \\
...
\end{cases}
$$

\end{frame}

\begin{frame}
  \frametitle{user name}

其中 username 谓词:

$$
username = \begin{cases}
is, & predicate \\
name , & "user name" \\
objType,  & "string" \\
\end{cases}
$$
\end{frame}

\begin{frame}
  \frametitle{mail}

mail 谓词:

$$
mail = \begin{cases}
is, & predicate \\
name , & "mail" \\
objType,  & string \\
\end{cases}
$$
\end{frame}

\begin{frame}
  \frametitle{Predicate 也是subject}

这里两次出现的 (objType, string),是一条segment, 说明 predicate 的宾
语类型。 类型 string 本身也是一个 subject 

$$
string = \begin{cases}
name , & "string" \\
stroage ,  & "segment_string" \\
\end{cases}
$$

至此,已经完全进入到了原语定义范畴,不需要再递归解释了。

\end{frame}

\begin{frame}
  \frametitle{}
\end{frame}

\section{Python + PostgreSQL 实现}

\begin{frame}
  \begin{center}
    \Huge{已实现的功能}
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
  \huge{Python + SQLAlchemy}
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
    SQLite + PostgreSQL
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
     TDD,测试即文档
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
      通过所有测试(暂时不包括array)
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
      初级的dsl表达式支持
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
      \huge{postgreSQL plpgsql}
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
初步的segment读写
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
一些常用的谓词操作
  \end{center}
\end{frame}

\section{缺陷、构想和待实现的功能}

\begin{frame}
  \begin{center}
    \Huge{缺陷、构想和待实现的功能}
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
DSL
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
性能优化
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
动态类型
  \end{center}
\end{frame}

\begin{frame}
  \begin{center}
其它语言的实现
  \end{center}
\end{frame}

\begin{frame}
\frametitle{正在实现}
  \begin{center}
基于objective c和sqlite的定制ios嵌入版
  \end{center}
\end{frame}

\section{结束}

\begin{frame}
  \begin{center}
\Huge{谢谢大家,再见!}
  \end{center}
 \rightline{\~{} Power By \LaTeX{}}
\end{frame}

\end{document}