zoukankan      html  css  js  c++  java
  • 知识工程及语义网技术 2020-04-02 (第二节)-语义网数据管的理-RDF的存储和管理

    https://www.bilibili.com/video/BV1Di4y1b79x/?spm_id_from=333.788.recommend_more_video.10

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    各位同学,我们就接着刚才的这个sparkle的查询啊,草下脚。那么我们刚才看到了这个sparkle的第一种查询是一种称为叫select的查询。这个呢也是我们比较好理解这样的一个插曲。你再来看看第二个插曲。第二个产品呢是我们刚才说的一个叫constructor型的这个查询。现在这个可是drop的行的这个查询啊,比如说我们现在有这样的一个需求。这个需求说的是我们想重写这个命名的信息。在原来的图里面把这个命名信息来重写。从写的要求来是怎么来通过使用一个叫form name的?这样的一个属性进行这个重写。那么我们来看一看这个是怎么样的一个意思,以及它的这个结果是什么。啊,我们现在可以看到真的是我们的一个查询。这个查询里面第一个我们应该能注意到的。这个perfect蒂法变了,原来我们的perfect只有一个,只写了一个叫we cut。那么现在呢我们增加了一个这个fourth。这个FOB实际上是这个for flame的这样的一个需求,因为我们说要重新构建这个啊df图。所以我们有个force。然后呢那么在这里我们的一个查询。这个里面的关键词也变了,这个关键词的变成了一个叫construct的这样一个词。原来我们是select,现在是construct。而我们的条件还是where这个条件。那么他实际上这个construct的这个需求,那么大家呢是他从这个例子里面也可以猜到。他是当之想查询满足使用这个full name的。这样一些三元组。然后呢把这些三元组。把他的full name这个属性替换成force内容。这样一个新的属性。然后呢重构这些三元。所以这个constructor这样的一个东西,实际上它的含义就变成了我想把一个RDF图转换成另外一种啊df图的这种形式,我定义了一下这个转换的规则是什么。那么我们知道这个idea,反它是一种这个图结构。所以如果我们现在想,这个把一个图结构做一些规范化,或者做一些变换等等,谁让我可以很容易地通过这个sparkle的语序把他查出来。随着这种场景下,那么大家可能就可以看到这是我们刚才的原始的id,f的数据。那么我们看一看它的输出结果是什么。那么在这里我们食堂比较容易看到的第一个我们where子距离。问号x for name问号name?那么这时候呢我要查。是后来我要查有four named这样的一些这个属性的三元,那么拽来可以看到for naming这呢有个for那所以我应该有两个三元组一个,但是ex中for name是Jones Smith,然后后来ex Mary这个v card for name to marry Smith。所以这时候x就是这个John或者Mary这个name啦,就是John Smith或者Mary Smith。那满是对的这边的那个所以就变成了两条新的三元组。点的两条新的三元组变成了Jones,这个force,那女士John Smith这个Maryland,他的fourth named是Mary Smith。这就是我们做的这个整个的重构的过程。那么重固这里大家需要注意的是他的这个输出结果时机的不是一个,我们说简简单单就输出两条三元。因为输出这两条三元组他不是我们做的一个图。一个啊df图实到是一个完整的XML或者其他结构的个片段。有时候在这里我们可以把重构的这个图啊表达成了我们输出出来的东西,实际上是一个我们习惯的一种表示方法。这个表示方法里面就是我们做的XML的一种语法去写的,说有个job。那么他是一个啊df的description,他的name呢是John Smith,false name是John Smith。然后有个Mary他来有一个他的也是一个啊df的description是一个三元组,他的这个for flame的是个Mary Smith。虽然整个的这个实话这个才是一个完整的他的输出,大家一定要注意construct的输出实际大是一个完整的IDF的。嫁一个文件这样一个片段,而不仅仅是把这个里面的两条三元组速度。这个呢大家一定要注意,这是我们做的第二种方式叫construct的方式。那么第三种方式的是我们说可以进行一种方案测试,进行他的测试一个方案的这个存在性的这种方式。在这个里面呢,这个测试方案的存在性是一个比较简单的一个东西。我们说。我们有一个问题说是不是有这个存在着已婚的这些人在我们的这个知识库里面。有没有这些已婚的已经结婚的人?那么这个查询时代我们表达成了这样的一个形式。表达是他这样的一个形式,这个形式里面说的是什么呢?说的是我还是一样一个perfect。我要进行一个ask。Ask来说是不是有一个person他存在了这个married to这样一个关系。那么这个里面我们有一个关键词叫ask。二,刺客的结果实际上就是做,如果满足了后面的这个查询条件,满足了那某返回的结果,就是在结果就是yes。而如果来没有的话了,他的结果呢就是弄。所以这个呢是一个比较简单的一种存在性的自动确认。那么存在性的这个圈圈里面,这个20个大家看到了这个ask后面直接跟的就是我们一个查询的这个条件。这个查询的条件里面就是这个person marry to spouse。这个地方可以看到,那么对于装来讲,但是呢我们在这只要有其中的一条,我的返回结果来就是这个yes。所以我并不需要把它确认出来这一条一定也得有这个Mary to的属性,我只要满足其中一个,我就是yes。那么这个ask后面直接跟的就是我想测试的这个条件,那么类似于这个吊着为而子君的这种条件。这这个人是一个比较简单的一种形式,一种ask的这个形式,那么带着它也有很有用。比如说我们那些数据里面,那么实际上我想返回的这个结果,我只是想测试一下他是不是存在。而不想用到所有的结果。这时候呢,我如果选用了select语句的话去做的话。那么意味着我需要把所有的结果都查出来,那么我知道结果所有的这个结果。那么所有的结果如果不是零的话,那么我就知道他是存在,那么这种时机到来效率很低,因为如果我的数据比较大,那么我查询的时候我可以查出来的结果来很多,怎么会导致了出现一些这个性能上的问题。但是如果我用ask来讲的话嘞,因为我只要测试他是不是存在,是不是满足。我返回第一条结果的时候,那么我的整个查询就已经结束了,那么我不需要了,获得所有的结果。所以ask了,可以在这种方面做一些这个优化。那么最后一条了,我说我们可以有一个叫described的语句。Described语句干的事情呢更加比较直接了,他想返回的是什么?他说返回所有关于状的这个信息。也就是说这时候我想返回关于装的所有的这个信息,就是所有的和他相关的啊df的三元组。这个地方所有和IDF和John相关的三元组就是在这儿我们可以写的一个叫describe的这个形式。这个地方呢我可以写的两种,一种呢我们说我们利用perfect,我们就写describe ex装也可以。另外一种呢我也可以写成一个完整的URL的形式,这个都可以,这是这是等价的。我们这时候这时候如果只是describe这个这个煎锅好里面的装呢?这个你perfect就没有用的。这辆呢我们这样写的主要是给大家来展示一下,如果你写完整URI,他的样子一定要大家注意,这个左右两边一定要用煎锅好泼起来。如果你不用见过号括起来,那么他认为的是一个字符串,这时候你的查询就不会得到你想要的这个结果。

    这时候你的查询就不会得到你想要的这个结果。所以这个时候我们做这个describe的语句就会把何壮相关的所有的这个三元组啊。把它一条一条的把它拿出来,这里面我们刚才看到了有John,他的这个for four name是什么?然后装了他有一个name。这让大家注意到这个内幕后面跟的是一个匿名节点,然后这个匿名节点他没有继续的,然后呢这个装来有一个叫has age的将来有个marry tool use。这个地方大家注意到有个匿名节点,那么这个匿名节点,那么他后面跟的这个三元组是什么?他并没有。去这个八达拿出来,虽然从这个量我们食堂可以看到这个sparkle语句啊。他返回的describe语句返回的只是他的一跳邻居的这样所有的信息。这个一跳邻居的信息,如果你不考虑这个三元这个匿名节点的话,那么其实是比较完整的,但是你如果考虑到匿名节点的话,那么这个匿名节点的完整性呢就被破坏。虽然这个在后面的科研上面在许多研究中见呢有许多的人专门去研究了一下这个问题。也就是说如果遇到这种匿名节点,应该来讲,他不应该啊这个把它直接返回给匿名节点儿,应该来返回它多跳的这个邻居一直到一个非匿名节点,他在宗旨。将来会产生一个是个循环的向下递归的一个过程,这个量来大家是需要妇女。另外一个需要注意的是的。你describe一个三元。那么并不意味着这个三元组一定是作为主语的。虽然在我们这个例子里面,这个装了都是作为主语出现的。但是这个并不意味着它一定是这么做,如果装了它出现在了宾语。有位置,那么十大这个三元组也会被返回去的,因为我们前面的例子里面的正好没有说这个Mary,比如说也这个价给了这个妆没有这一条。所以呢我们没有这个补充上来。但是如果有这一条的话,我们也会出现主语是Mary,然后呢这个属性是marry to,然后呢宾语是drum这个节目。这个也是满族我们describe的要求这个地方来大家一定要注意及时快步并不意味着我们一定要让他出现在主语的位置,它实际上是可以出现的这个三元组的这个任意的位置上。这个是我们describing那么我们前面的主要讲了这个语法层面的东西,讲了select describe,然后ask已经construct。那么它背后啊这个查询这个sparkle,查询它的理论基础到底是什么?上这儿来我们还可以的在稍微的研究一下。那么我们前面说的sparkle,他和这个SQL实际上从语法上有一点相似。但是他们的本质的这个理论基础上是不一样的,SQL是寄予的是村委叫关系代数的这个东西。而斯巴克他是基于的一种叫涂模式匹配的这个方法。也就是说我们上面例子里面的这个where子句,这个where子君里面我们刚才还说不管是这个select里面也好,这个construct也好,还是ask那个里面变种的这个威尔也好。那么他实际上这个里面都是基于的这个威尔这样的一个子句去做了一个教徒模式匹配的过程。那么这个图模式又是什么意思的?我们这儿可以看的图模式里面,首先它会有一个我们说的叫三元组模式的一个概念。我是来叫这个triple拍的。他呢这个三元组模式很简单,他和啊df的三元组非常类似。只不过呢这个主谓宾的这三个位置可以替换为变量。这个变量就是我们刚才说到了以这个问号开头的这些东西,比如说问号,那问号s等等。那么他就是我们做的主谓宾。这个位置上变患者的变量,所以这个三元组模式就是把RDF三元组。总监的某些位置换成了变量的形式,那么就称未来就要这个三元组模式,它不是三元组的,它是一个模式了。那么sparkle中间呢有两种类型的这个图模式。一种来称为叫group g pattern。就是组的这个图模式。他在这个构成南师大有几块,第一块呢有基本图模式,然后呢又有过滤条件,有可选图模式,有病炼铜模式在几种一起构成。那么这几个东西呢这个看起来名字呢有点这个rock,等会儿我们会解释一下。第二种呢是这个在named graph上面的这个模式,这个named graph的图模式只是把这个一个啊df的graph啊还有命名呢在这个上面去构建。对,这个上面的我们不太展开,比较常用的就是我们上面做group graph pattern这个东西。这个里面,那么首先我们来看一看第一块。基本模式。基本图模式它是建立在我们刚才的这个三元组模式基础上。基本图模式,它就可以被认为是若干条三元组模式的一个集合。怎么它可以理解成呢是所包含的三元组模式的一个交集?所以在这里我们大家可以看到在这个里面,比如说我有两条三元组模式,大家注意这是两条三元组模式,第一条。是这样的,一个三元组把某一个人他的form name是一个具体的取值,把子两个主语和宾语的位置变成了我们做的变量。这又变成问号x for name问号。那第二个嘞三元组我实在是问号x four mailbox。问号没有box,这是两条三元组模式。这两条三元组模式合起来就变成了我们做的一个基本图模式。而这个基本图模式里面,他们是交集的关系。焦急的关系意味着这两条都要买,而且里面这个变量如果起的名字是一样,意味着它们的取值应该是相同的情况。也就是说比如说这是我求的时候是张三,那么这个呢x问号x也一定是脏,在这时候他们被应分别对应的类和它的没有box。而不能这个问号x上面曲张三,下面是李四把他们的结果拼起来。这是不允许,所以大家一定要厘一件这个叫基本模式的这样的盖。那么基本图模式是我们刚才的基础,也就是说如果在这个三元组模式里面,多条三元组模式组成的一个基本模式。这个基本图模式的就是我们四八国查询的一个最最基础的东西。那么在这个基本图模式的基础上来,实际上还可以引入另外三个关键字。一个叫过滤条件,一个叫可选模式,一个懒觉避免的模式分别对应到的是叫filter,一个叫optional,一个叫Union。那么这三个了实际上是对于上面的基本模式的一些补充,使得这个sparkle了,它的功能更加好用,更加强大。但是在这个本质上来讲,这个基本模式是大家一定要掌握,也就是说你如果要写一个sparkle查询的话,那么一定呢要有这个基本图模式这部分,那么理解好了你才可以做18款查询。而现在的研究上也是这样,研究上对于sparkle的复杂性的一些研究了,那么主要了都是研究在这个基本图模式最快的内容。那么这个filter等等的他是当不是sparkle的一个本质的特征,对这部分的研究了十到来。相对来讲没有什么那么多人去关注。啊,首先让我们来看一看一些整容叫过滤。过滤来主要来它是为了满足我们的一个在基本图模式里面。不能做一些取值过滤啊等等约束条件啊等等的这些东西。这些操作。因为基本图模式里面要不然就是一个变量,要不然就是啊df数据的一个值,一个一个属性,或者一个主语或者一个宾语。他不太好做取值上的约束。所以呢这时候他们就定义了一个叫过滤条件的。那么比如说我们现在有这样的一个句子。这个句子里面写的是什么呢?写的是我想查询的是这样的一个基本图模式。X他有一个has he,然后呢有一个取值叫age。那么我要要求了这个age。

     那么我要要求了,这个age要大于30。所以这样的一个查询它就变成了这样的一个形式。这个查询里面,那么我先要找到所有的这个三元有has age的这样一个三元。这些三元组里面他的结果了就是这个age要大于30,我就把他的这个x的速速出来。这就是我们的过滤条件写成这样的形式。那么在这个啊df的这个句子里面,我们十大可以看到有很多我们可以看到。这个地方有John他有一个has age是32,这个单曲32,32大于30,所以撞了会速度。而对于marry来讲,Mary来他的这个has aged还是29,所以在Mary不满就不会死。最终按这个结果来就是只租出了一个这个妆。对这个地方来大家可以看到了这个还是h。H大于30,这就是简单的一个素质过滤的情况。而实际上在我们的这个sparkle语言里面,这个量的过滤条件呢是比较丰富的。它不仅仅可以做这个数值,涨得过滤,它还可以做许多的这个变量之间的比较,也可以去做这个文本文字上面的这个约束,甚至写真,正则表达式的形式啊等等的。那么比如说我说要姓名中间有一个姓张的这样一个单词的人,我想把它取出来,觉得张姓张的这些同学把它取出来怎么办呢?这时候我也可以用filter举行,所以这个filter的实际上是一个就是说功能比较强大的。但是从这个原理上来讲,他对sparkle的基础理论的来讲没有什么太多贡献的家人有关。那个这个嘞需要来大家来,如果在使用中间的,你可以去查询在这个18个手册。那么sparkle的官方的文档里面列举了各种各样的这个filter以及他们的这个用法语法等等的。你查询一下,我们很容易的就可以去学会。还有另外一部分嘞。第二,第二种呢,我们说补充呢是这个可选图模式。可选图模式的是一个相对来讲设计这个比较怪的一个东西。大家来先看一下这个例子,我们先给大家一点点这个时间看下这个例子,这个例子里面有一个option。Optional就是个可选图模式。然后呢再大家再看一下针对这个图。他的一个返回结果。那么大家呢自己尝试着去理解一下这个我们说的可选图模式啊,他是一个怎么样的工作过程,我们给大家来这个一分钟的时间大家来看一看。而且这个呢?们来一起啊来看一看这个可选图模式可选图模式,但是这个司法口设计里面,这个比较奇怪的一个,而且呢这个呢,实际上呢它在这个争议呢也比较多,这个副本咱们来看一看这个是讲的什么。首先呢他想选这个person和这个spouse。一个人和他的配偶。那么他坐在这个where里面的有两条,第一条说这个person嘛,他要有个has h。这个age把它取出来。然后呢有一个叫optional。这个person呢他那Mary to一个这个具体的一个人。这个personal他有一个年龄,而且呢他有一个配有但是呢他有配偶这个事情啊是一个可选。也就是说他可以有配偶,他没有配偶了也不要紧,我也可以把这个结果把他速度出来,我就把这个人数组也就是说在select这边,如果他有配偶来,我就把这个人和他的配偶一起输出。如果来他没有配偶了,我就把这个人啊自己输出。这个呢就叫这个option。所以对应到我们这里蹲到我们这个id f的片段里面没看。Drama他有has aged?然后呢他有marry to的。所以对于撞这样的一个结果来讲,它的输出就是两条,一条说这个状。是person spouse的这类他是一个这个Mary。而对于marry来讲了Mary,他的has age是有的,但是marry to了是没有的。虽然对于Mary来讲,那么它只输出了一条,也就是说对应person这个地方它只输出的Mary。Do you spouse这边呢?他是一个空值。所以这个就是我们的可选模式。在这个查询里面还是age是一定要满足的这个三元组模式。如果你连孩子age都没有,那么这个查询你肯定不会出现在最后的结果,但是这个Mary是一个可选,你不管有没有我都赖不影响,我最终查询这个person。只不过没有配偶的话来我这个配偶这个掉了会有为空,这就是我们说的一个这个查询。那么这里呢这个里面的可选图模式来,那么如果来你想更进一步的了解来,实际上它类似于我们说关系数据库里面的一种称为叫左外连接的这个操作。这个左外连接的操作人的吗?这个相对来讲就已经这个比较这个少见了。那么在这个里面呢,这个sparkle里面呢它引入了这个叫option中的是它是一个左外连接的。但是呢为什么说他比较奇怪呢?那么比如说数据库里面除了左外连接,它还有右外联接,比如说或者全外连接等等,而这个spark里面只有一个option。所以他没有这个称为叫这个又爱连接的东西。所以这种设计的就比较奇怪。那么这个呢这个也不知道,就就我而言我也不知道这个就是说他当时这个设计的初衷是什么?那么这个呢也没有什么专门的书上专门讲过,就是这个optional,他设计的这个原理是什么?虽然我们这里主要大家也搞清楚这个option,一个可以。那么第三个来关于这个优劣呢比较简单,就是把两个结果把它合并起来,那么这个呢我们就不多讲。也就是说把两个这个查询的结果优劣到一块儿去,这个是一个病,那么比较简单,因为我们刚才说这个基基本的图模式之间,这个三元组模式之间呢它是一个教的关系,所以呢他又额外定义了一个这个病人关系这么做,为了这个补充。好,那么我们前面呢大体上就把这个sparkle的这个语法了大气状态教给了大家,怎么大家都应该来讲呢都可以的比较这个正常的去理解了。总体来讲呢,这个sparkle来他比这个我们说的关系数据库SQL要容易很多,因为他没有很复杂的比如说嵌套查询啊等等的东西。它的功能还没有那么强,那么唯一的不太好的地方,也就是大家写sparkle时候比较容易出错的地方呢。主要是由于一些语法上的一些问题导致的,比如说你关于ui你没有写这个尖括号。关于一些这个perfect的拼写那么出错了,少了冒号等等的一些问题,只要大家来在这个我们课后作业里面这个认真的去练习练习。那么适当的都会比较好地去掌握了这个八口的一些这个查询了。那么我们后面来这个靓仔稍微再扩展一点。就是我们这个课来讲到了数据管理,实际上就会讲到了很多跟数据库相关的前面。实际大奶,那么有一个这样的一个专门的研究方向,就是研究啊这个本体和数据库的一个交互。也就是说我们本体是以这个id,f的形式写的这样的一个概念上的东西。

    那数据库里面呢也有很多的束缚,那么这些数据我们要去使用的话,虽然有几种方法。一种方法是我直接把这个数据库里面的数据我把它转换成。这个啊df的形式发不成这个云网数据,那么这个数据啊实际上就是我们很简单很很这个容易的一种方法。比如说现代,像这个阿里巴巴,那么他在这个淘宝上他的就有许多的这个数据。他通过自己的一些结构化的数据,他通过自己的这个知识图谱的这个平台,那么把它转换成了这个以往里面这个啊df出去那么方便了,在一些应用总结使用。那么这个转换来那么它实际上就会有很多的这个方法到底怎么样去转换。这个方面呢就会有许多的这个研究。我们这里有一个这个调查。调查来说到的是deep Web也就说我们简称为叫声网数据。深网数据里面,它实际上比搜索引擎能够爬取到的网页数据来。要多500倍以上。也就是说比如说啊这个网页是这个爬虫,我们有个爬虫去爬。这个外部上的数据,这个数据啊有很多数据我们是爬不到的。有的情况是怎么了?有的情况是这个网页它需要有着要填用户名,密码才能获取到这个里面背后的书。这时候这个受伤已经他因为不知道你的用户名网,所以他爬不出来。另外他还有很多情况,比如像这个淘宝上面的这个商品时,当他背后的商品非常多。那么你需要用关键词才能去处罚你不同的关键词,你的结果就不一样。而你并不能直接获取到他所有的这个淘宝商品。所以这时候了整个的是个搜索引擎获取到的淘宝上的这个数据,比如说他去爬这个淘宝的话,那么他也只能爬取一小部分的。所以呢这个背后在这个深网deep外部里面的数据要比这个搜索引擎能够找到的这个数据远远的要多。而这个deep外部里面它的最主要的特征就是它的数据来大部分都是存储在我们说的关系数据库系统。传统的关系数据库。所以呢就有一些人呢认为比如说把关系型的数据转化成啊df数据呢。实际上是与以往成功的一个关键。实际上这个后来呢在这个链接数据啊只是图馆等等的一些经验,也被经营者这个呢是一种比较便宜的,比较有效的方法。他代价比较小,那么比你直接从文本里面抽取相关的这个啊df知识三元。要容易的多。那么我们说将这个关系型数据库转化成啊df,那有什么好处嘞?那么实在有可能呢有的几个方面的好。第一个它可以将私有的数据来开放,便于来这个信息共享。比如说现在在很多企业里面都提出来有一只名叫数据中台啊等等的一些概念。实际上你这个啊df数据,你如果把数据开放出来,便于各个部门啊业务部门之间去共享,怎么他是一个很好的一个方案。另外呢,在整个互联网呢也一样,那么许多原来存储的关系数据库里面的数据。那么大家呢要写这个SQL才能去访问不太方便。那么你如果来能以这个啊df的形式,这个发疯了,把公开让大家去访问。那么许多数据企鹅结构化的数据,那么大家呢就很好去使用,比如说对于维基百科里面有许多的这个数据,那么现在都被转换成了这个啊店。第二个咧,这个数据库表格呢他的这个含义呀,实际的逻辑含义来她实际上是比较隐含的,也就是说这个表的结构时大势比较隐含逻辑的。那么如果嘞你使用啊颠覆的数据来实战,你会使得这种表格里面的逻辑带变的显示还。方便了这个用户了,确实。比如说有一些表格,他的列名啊很不清楚,过了一段时间之后呢,你可能都已经忘掉了这个劣,他到底叫什么含义?是什么名字了?儿啊,颠覆的这个过程的实际上来是引入本体到这个领域中间这个过程。那么使得咧你对这个领域啊进行了一个建模,这样一个过程中间你就会使得这些列名啊等等的更加的是个形式化。你易华录完以后呢,那么时间长了之后呢你也不容易的就忘掉,即使你忘掉了之后呢,通过观察这个本体啊等等的也可以很容易地回想起,这实际上也是他的另外一个服务员。那么具体来讲怎么样去转换呢?实际上如果你想关系型数据库转换成二df数据的话,在2007年w三c嘞成立了一个称为叫啊df access to relational database的一个工作。这个工作组来发布了两个互补的标准。一个标准来就要direct magic一个呢叫这个啊图二ml。这两个标准,这两个标准里面,阿夸是一种的这个映射语言。允许用户啊手工的去定义了这个映射。那么这时候就定义成了一个我们说怎么样一个啊df的一个一个本体怎么样和这个关系数据库啊?做映射的一个一这个语法。而direct mapping that是一种自动的方式。他是一个默认的且自动的方式来将关系数据库来翻译成了一个二ds。他不需要用户啊任何输入他就可以了,把这个关系数据库啊。转成一个啊df的形式,并且了他使用这个啊two啊语言呢去表达。那么这个地方嘞那么大家可能会说到这个direct mapping,那肯定是一个比较好的方法的。那比如说大家都不需要这个人工介入,它可以自动转。这个地方来确实是,这是他的一方面就是给定的一个关系数据库。他一定可以把它转成呢那个啊df的形式,这就是direct mapping这样的一个东西。因为这个呢也比较好理解大家可能如果你知道一点这个关系数据库的设计的时候,那么我们前面讲这个存储的时候也知道,那么你一定是可以把它变成比如说。这个第一列假设是组建的话,这个组件和上面的属性,然后呢以及一个取值变得一种三元组的形式,我一定可以这么去翻译。但是在direct mapping的它的缺点就是它有一些情况下它翻译的不太好。比如说我们说数据库里面可能会存在这个外键,他表示的是一个这个关系,这个表啊他是一种表示的是一种关系。比如说我们说成绩这个表,他表示的是学生和这个课程之间的一种关系。那么这种关系的,那么你就不应该把它翻译成一个表的形式。所以这个样子情况下,你如果用direct mapping,你的翻译的这个效果呢不是很好,所以的也有,他就有这个啊图案这种音色语言。允许的这个用户啊手工的去定义这个映射。那么所以在实际使用中间你可以这样去用。比如说你说direct mapping翻译的结果我先有个结果,然后呢我根据阿图艾麦尔来我再去点进行一个调整。那么具体来讲呢,我们可以看到这个啊图案ml是怎么样工作的呢?我们假设可以有这样的一个这个例子。这个例子里面我们有这个第一个有个site这个表,然后呢有个这个active酱那个表。然后呢有一个对应他们俩之间的一个关系side和IQ的一个对应。那么这个就是我们一个标准的关系数据库的一个表。在这个关系数据库的这个表那么我们怎么样通过啊time转换成啊df了?那么他实际上来这个可以来进行这样的一个转换。假设对于上面的数据库,我们希望呢得到下面的一些信息。这个我说是啊得到啊所有的这个照片,所有的话和这个地图呢都是和这个地笼这个castle相关的。然后呢这个迪龙这个东西啊这个东西啊also on the这个map,然后呢,说没有这个啊cover和这个人相关等等的。这些东西实际上如果我们用SQL来表达a sparkle来表达的话来。可能会比的这个是吧?呃,这个SQL来更加的直观一些。具体来讲怎么样去转换了,适当就会转换成的,我们说这样的一个形式,这个里面它实际上背后的这样一个原理,实际上就是

    原理是让就是把一个关系表变成了一个图的形式,大家可以看这就是一个图的形式,所以有一个点这个点啊,它的这个classification是defense。他来这个parish来是这个迪龙,然后他内幕是什么?他也site number是什么?她的type是一个site site的太服了,是一个二DFS的class。这个就是我们啊这个表示层啊一条记录,把它表示成了这个啊df的这样的一个形式,就是这样。这边呢我们依然一样给出了一些这个perfect的东西,为了这边缩写方便。那么整体来讲来,那么这个id,f怎么样把关系数据库把他推转换呢?那么它的转换的过程实际上来就是类似于啊我们这儿的一个图的这样一个形式。也就是说把一个表把他俩变成了我们说的一个图的结构,这个图的结构了类似于的我从中间啊取一行作为这个上面的顶顶。然后通过这个点呢把他一起拉断下来,变成了一条一条的。这样一个三元,所以也就是刚才的点了,就是我们这的这个节点,然后呢拉出来了很多条不同的这个三元结构。这就是r two I mayor他的一个基本的转换的过程。那么在这个转换过程里面呢,实际上那么它的一个逻辑来是大体的是用这样的一个图案可以表示。首先我有一个三元组。我称为叫triple map,triple map里面呢会有分成好几块。第一,快来,我说我有一个对应的,他的表示什么logic table是什么?然后呢我对于主语进行一个处理,对于谓语和宾语进行一个处主语来讲。是一个谓语,宾语的可能有多个,对于主语来讲主语了我还可以来。知道主语的它的类型是什么?而对于对谓语,宾语的这样的一个东西的我又进一步把它拆分成了谓语是什么?宾语是什么?比如说对于一个谓语来讲,来他又可能呢有多个并和他相对,所以呢这个就是我们说的这个啊to这样一个形式。那么这个形式里面就是我们做的整体的这样的一个东西,从这个根出发,对每一个三元组。进行的它的一个转换的过程,这个转换的过程呢实际上来,如果大家来如果感兴趣的可以看一看这个w三星的这个规范很简单。包括了后来了,也出现了比如说较低to argue啊等等的一些方法,那么它可以帮你自动地完成这个转换的过程。所以总体上来讲了,这部分来都不是很复杂的一些这个内容。啊,今天呢我们这个呃这张呢就彻底讲完了这个关于两部分的内容,一部分来是关于这个啊df的这个查询,一部分来是关于这个啊df数据的这个存储。这两部分来这个都这个这个把它讲完了,那么我们来这个有了一个这个课后作业,那么给大家来取练习一下。那么另外呢这个今天呢我还会给大家来布置一个小的这个任务,这个任务呢不是一个作业。就是为了我们后面的这个呃我们的这个课堂讨论的一些内容呢,我需要来大家来做一个这个分组。到时候来我会在那个呃教学立方上来,你一个作业的形式在布置一下。大家来这个课,后来自己先找好自己的一个小伙伴,就是形成的两个人一个组,然后呢去呃做这个读书报告。那么这个分组的内容呢到时候呢希望大家来在这个教学立方中间来进行一个提交,就是告诉我你和哪一个同学在进行的这个分组。那么这样的我这边来好记录一下,那么分组完之后来我们再去决定就是说大家怎么样去选择论文啊或者等等的一些这个要求。行,我们今天克莱就上到这边好下课吧。

  • 相关阅读:
    Ubuntu 12.10下为Firefox安装Adobe Flash Player
    oracle同时操作两个实例,如何进行切换操作?
    Ubuntu 12.10下为Firefox安装Adobe Flash Player
    Ubuntu11.10 安装oracle 11g
    oracle忘记system和sys账户的密码怎么办?
    linux 搭建java开发环境
    Oracle 笔记 day04
    节约网络带宽的设计策略
    集群化服务器
    01 基础概念(实战Linux Shell编程与服务器管理)
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/14528563.html
Copyright © 2011-2022 走看看