精华内容
下载资源
问答
  • 知识存储

    千次阅读 2018-07-05 12:06:57
    本节从以Jena为例,对知识在数据库中的导入、存储、查询、更新做一个简要的介绍,而后对主流的图数据库进行介绍。图数据库简介Apache Jena数据的导入查询Endpoint接口查询查询举例更新举例通过SPARQLWrapper 包查询...

    http://pelhans.com/2018/04/20/xiaoxiangkg-note5/

    知识存储,即获取到的三元组和schema如何存储在计算机中。本节从以Jena为例,对知识在数据库中的导入、存储、查询、更新做一个简要的介绍,而后对主流的图数据库进行介绍。

    图数据库简介

    图数据库源起欧拉和图理论(graph theory),也称为面向/基于图的数据库,对应的英文是Graph Database。图数据库的基本含义是以“图”这种数据结构存储和查询数据。它的数据模型主要是以节点和关系(边)来体现,也可以处理键值对。它的优点是快速解决复杂的关系问题。

    Apache Jena

    Jena 是一个免费开源的支持构建语义网络和数据连接应用的Java框架。下图为Jena的框架:

    其中,最底层的是数据库,包含SQL数据库和原生数据库,其中SDB用来导入SQL数据库, TDB导入RDF三元组。数据库之上的是内建的和外联的推理接口。在往上的就是SPARQL查询接口了。通过直接使用SPARQL语言或通过REfO等模块转换成SPARQL语言进行查询。

    在上方我们看到有一个Fuseki模块,它相当于一个服务器端,我们的操作就是在它提供的端口上进行的。

    数据的导入

    数据导入分为两种方式,第一种是通过Fuseki的手动导入,第二种是通过TDB进行导入,对应的命令如下:

    /jena-fuseki/tdbloader --loc=/jena-fuseki/data filename
    

    数据导入后就可以启动Fuseki了,对应的命令如下:

    /jena-fuseki/fuseki-server --loc=/jena-fuseki/data --update /music
    

    查询

    查询也有两种方式,第一种就是简单直接的通过Fuseki界面查询,另一种就是使用endpoint接口查询。

    Endpoint接口查询

    endpoint的SPARQL 查询网址为: http://localhost:3030/music/query; 
    更新网址为:http://localhost:3030/music/update .

    查询举例
    • 首先是最简单的单个语句查询,意在查询某一歌手所唱的所有歌曲:
    SELECT DISTINCT ?trackID
    WHERE {
        ?trackID track_artist artistID
    
    }
    

    可以看出查询语句整体和SQL很像的,下面多举几个例子。

    • 查询某一位歌手所有歌曲的歌曲名:
    SELECT ?name
    WHERE {
        ?trackID track_artist artistID .
        ?trackID track_name ?name
    
    }
    
    • 使用CONCAT关键字进行连接,它的效果是在查询结果前增加一列叫专辑信息,它的结果以专辑名+ : + 查询结果组成:
    SELECT ?歌曲id ?专辑id (CONCAT("专辑
                                       名",":",?专辑名) AS ?专辑信息)
    WHERE {
        ?歌曲id track_name track_name .
        ?歌曲id track_album ?专辑id .
        ?专辑id album_name ?专辑名
    
    }"))
    
    • 其余还有LIMIT 关键字限制查询结果的条数
    SELECT ?trackID
    WHERE {
        ?albumID
        album_name album_name .
        ?trackID
        track_album ?albumID
    
    }
    LIMIT 2
    
    • 使用COUNT进行计数;
    SELECT (COUNT(?trackID) AS ?num)
    WHERE {
        ?albumID album_name album_name .
        ?trackID track_album ?albumID
    
    }
    
    • 使用DISTINCT去重;
    SELECT DISTINCT ?tag_name
    WHERE {
        ?trackID track_artist artistID .
        ?trackID track_tag ?tag_name
    
    }
    
    • ORDER BY排序;
    SELECT DISTINCT ?tag_name
    WHERE {
        ?trackID track_artist artistID .
        ?trackID track_tag ?tag_name
    
    }
    ORDER BY DESC(?tag_name)
    
    • UNION进行联合查询
    SELECT (COUNT(?trackID ) AS ?num)
    WHERE {
        {
            ?trackID track_tag tag_name .
    
        }
        UNION
        {
            ?trackID track_tag tag_name2 .
        }
    }
    
    • 使用FILTER对结果进行过滤
    SELECT (count(?trackID ) as ?num)
    WHERE {
        ?trackID track_tag ?trag_name
        FILTER (?tag_name = tag_name1 ||
               ?tag_name = tag_name2)
    
    }
    
    • ASK来询问是否存在,回答结果只有True或False
    ASK
    {
        ?trackID track_name ?track_name .
        FILTER regex(?track_name,‖xx‖)
    
    }
    
    更新举例

    在更新时要更换端口地址为: http://localhost:3030/music/update

    • 使用INSERT DATA操作,对数据的属性和事例进行添加
    INSERT DATA
    {
        artistID artist_name artist_name .
    }
    
    • 使用WHERE定位,DELETE删除事例
    DELETE
    {
        artistID artist_name ?x .
    }
    WHERE
    {
        artistID artist_name ?x .
    }
    

    对于更多的SPARQL用法请参见官方文档

    通过SPARQLWrapper 包查询和更新

    首先通过pip安装SPARQLWrapper,而后就可以通过下图所示的方式进行查询了。具体的查询语句与端口的一样,此处不再赘述。

    图数据库介绍

    图数据库很多,其中开源的如RDF4j、gStore等。商业数据库如Virtuoso、AllegroGraph、Stardog等。原生图数据库如Neo4j、OrientDB、Titan等,涉及内容较广,我也是刚刚入门,不足以从大体上介绍,因此只对我打算用的几个图数据库进行简单介绍,其余的可以自己查阅文档了解。

    图数据库的分类与发展如下图所示:

    开源图数据库

    RDF4j

    它是处理RDF数据的Java框架,使用简单可用的API来实现RDF存储。支持SPARQL 查询和两种RDF存储机制,支持所有主流的RDF格式。

    gStore

    gStore从图数据库角度存储和检索RDF知识图谱数据, gStore支持W3C定义的SPARQL 1.1标准,包括含有Union,OPTIONAL,FILTER和聚集函数的查询;gStore支持有效的增删改操作。 gStore单机可以支持1Billion(十亿)三元组规模的RDF知识图谱的数据管理任务。

    商业图数据库介绍

    Virtuoso

    智能数据, 可视化与整合。可扩展和高性能数据管理,支持Web扩展和安全

    Allgrograph

    AllegroGraph是一个现代的高性能的,支持永久存储的图数据库。它基于Restful接入支持多语言编程。具有强大的加载速度、查询速度和高性能。

    原生图数据库

    Neo4j

    Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。内置Cypher 查询语言。

    Neo4j具有以下特性:

    • 图数据库 + Lucene索引
    • 支持图属性
    • 支持ACID
    • 高可用性
    • 支持320亿的结点,320亿的关系结点,640亿的属性

    Neo4j的优点为:

    • 高连通数据
    • 推荐
    • 路径查找
    • A*算法
    • 数据优先
    展开全文
  • 知识图谱—知识存储

    千次阅读 2020-08-05 11:32:10
    导读(链接自点):1.知识提取从原始数据语料中自动识别出命名实体。实体是知识图谱中最基本的元素。2.知识表示(一)介绍了知识表示学习的常见的代表模型:距离模型、单层神经网络模型、能量模型...

    导读(链接自点):

    1.知识提取

    从原始数据语料中自动识别出命名实体。实体是知识图谱中最基本的元素。

    2.知识表示(一)

    介绍了知识表示学习的常见的代表模型:距离模型、单层神经网络模型、能量模型、双线性模型、张量神经网络模型、矩阵分解模型。

    3.知识表示(二)

    介绍翻译模型(Trans模型),TransH模型、TransR模型、TransD模型、TranSpare模型、TransA模型、TransG模型、KG2E模型、

    4.实体对齐

    介绍实体消歧和共指消歧的方法。


    本篇文章,主要介绍知识图谱的知识存储。

    1.RDF、RDFS和OWL数据模型

    RDF、RDFS和OWL是W3C[1]推荐的本体描述用护眼,也是知识图谱中数据的常用存储格式,它们都是基于XML[2]编写的元数据[3],是用于计算机传输数据,让机器可理解,而不是面向用户展示的数据模型。

    (1)RDF

    RDF本质是一个数据模型,它提供了一个统一的标准描述web资源,资源指的是类、属性、实例等。RDF在形式上表示为三元组。用于描述具体事物及关系,RDF也可以表示为一张带有标记的有向图,图中有节点和边,节点对应实体,边对应关系或者属性,关系指的是实体之间,实体与属性之间的关系。

    RDF中的三元组Triple
    带有资源标识符URI的三元组

    声明命名空间ex = ex.org/和ex-schema = ex.org/schema,于是带有资源标识符的URI三元组就可以表示为下图形式。

    声明前缀的三元组

    RDF以三元组的形式描述资源,简洁明了,但是有着语义表达能力的缺陷。RDF中没有定义类、属性等词汇。RDF只能是对具体的事物进行描述,缺乏抽象能力,无法对同一个类别的事物进行定义和描述。RDF可以描述实体、实体的属性以及他们之间的关系,但是无法描述类与类之间的关系,类的属性等

    (2)RDFS

    RDFS在RDF的基础上定义了类(class)、属性(property)以及关系(relation)来描述资源,并且通过属性的定义域(domain)和值域(range)来约束资源。RDFS在数据层(data)的基础上引入了模式层(schema),模式层定义了一种约束规则,而数据层是在这种规则下的一个实例填充。

    RDFS

    RDFS相比于RDF语义表达能力有所提升,但RDFS依旧有语义表达的缺陷。在RDFS中关于类与类之间的关系它只能声明子类关系,无法声明互斥类的关系,也无法声明多个类、实例、属性是否等价。

    (3)OWL

    OWL是对RDFS关于描述资源词汇的一个扩展,OWL中添加了额外的预定于词汇来描述资源,具备更好的语义表达能力。在OWL中可以声明资源的等价性,属性的传递性、互斥性、函数性、对称性等等,具体见OWL的词汇扩展。

    本体和知识图谱在构建过程中,数据的存储常以RDF格式存放。而基于RDF数据的结构化查询语言SPARQL,可以实现对三元组的查询。在SPARQL中,常以“?”来表示变量或者资源标识符,select子句检索指定资源的资源标识符,where子句限定资源的由来。

    2.基于RDF的存储

    大部分开放的知识图谱,都是以RDF形式对外开放。

    RDF结构:

    RDF 为描述资源提供的基本元素有 IRI,字面值和空节点 (blank node)。IRI 就是一个符合特定语法的 UINICODE 字符串,跟 URL 的形式比较类似。其实 URL 属于 IRI 的一种。字面值可以理解为像时间、人名、数字等常量的表示,由字符串和表示数据类型的 IRI 构成。例如数字 1 的字面值可以表示为"1"^^xs:integer,其中 xs:integer 是表示整型数据类型的 IRI。空节点是指没有 IRI 的匿名节点。一般是 RDF 内部使用的一个特殊结构,不可被引用。

    一个 RDF 数据集由一组相关的三元组的组成。由于这个三元组集合可以抽象为一张 graph,因此也称为 RDF graph。

    例如,用 RDF 描述一本书,RDF 字典就需要定义一本书需要包含作者、书名、页数、出版时间、语言类型等。RDF 字典定义了数据建模的元数据项,这些元数据项主要包括两种类型 class 和 property。Class 是指对象实例的集合,可以理解为面向对象编程里的 class;Property 还分为两种子类型:一个是表示 class 的属性 (attribute),另一个是表示多个 class 之间的关系 (relationship)。

    另外,RDF 字典的定义自身也是一个 RDF graph。这也是说明 RDF 是自描述的数据模型,是一种 schema-free 的数据模型。

    3.基于图数据库的存储

    图数据库是一种非关系型数据库,以解决现有关系数据库的局限性。图模型明确地列出了数据节点之间的依赖关系,而关系模型和其他 NoSQL 数据库模型则通过隐式连接来链接数据。图数据库从设计上,就是可以简单快速地检索难以在关系系统中建模的复杂层次结构的。

    以neo4j为例介绍

    数据存储形式:主要是 节点(node)和 边(edge) 来组织数据。node可以代表知识图谱中的实体,edge可以用来代表实体间的关系,关系可以有方向,两端对应开始节点和结束节点。另外,可以在node上加一个或多个标签(Node Label)表示实体的分类,以及一个键值对集合来表示该实体除了关系属性之外的一些额外属性。关系也可以附带额外的属性。

    查询语言Cypher:neo4j采用自己设计的查询语言cypher,其特点和sql有很多相似的地方。match、where、return是最常用到的关键词:

    • match: 相当于 sql中的select,用来说明查询匹配的数据模式(或者说图模式)

    • where: 用来限制node或者关系中部分属性的属性值,从而返回我们想要的数据

    • return: 返回节点或者关系

    neo4j存储例子
    展开全文
  • sharepreference中怎么存类似于数组的数据,类似于分类存储,每个类有几个内容
  • 知识图谱入门——知识存储

    千次阅读 2018-12-24 16:55:23
    文章首发于博客du_ok’s Notes,本文链接为知识图谱入门——知识存储 本文首对一些开源数据库(如RDF4J、gStore),商业数据库(如Virtuoso、AllegroGraph和Stardog),以及一些原生的图数据库(如Neo4j、OrientDB...

    文章首发于博客du_ok’s Notes,本文链接为知识图谱入门——知识存储

    本文首对一些开源数据库(如RDF4J、gStore),商业数据库(如Virtuoso、AllegroGraph和Stardog),以及一些原生的图数据库(如Neo4j、OrientDB和Titan)进行了粗略的介绍;接着介绍了一个使用Apache Jena数据库的例子。

    图数据库介绍

    图数据库源起欧拉和图理论 (graph theory),也可称为面向/基于图的数据库,对应的英文是Graph Database。图数据库的基本含义是以“图”这种数据结构存储和查询数据。它的数据模型主要是以节点和关系 (边)来体现,也可处理键值对。它的优点是快速解决复杂的关系问题。
    图具有如下特征:

    • 包含节点和边
    • 节点上有属性 (键值对)
    • 边有名字和方向,并总是有一个开始节点和一个结束节点
    • 边也可以有属性

    图数据库的分类如下:
    图数据库的分类.PNG

    • 原生数据库:包括基于main memory和基于disk。
    • 非原生数据库
      • RDBMS:基于关系数据库
        • Schema-based:需要设计表结构
        • Schema-free:不需要设计表结构
      • 基于NoSQL
        • Key-value:如Redis
        • Column family
        • Document store:如MongoDB
        • Graph database:如Neo4j(广义上的原生数据库)

    开源数据库

    开源数据库——RDF4J

    • 处理RDF数据的Java框架
    • 使用简单可用的API来实现
      RDF存储
    • 支持SPARQL endpoints
    • 支持两种RDF存储机制
    • 支持所有主流的RDF文件格式

    开源图数据库——gStore

    • gStore从图数据库角度存储和检索RDF知识图谱数据;
    • gStore支持W3C定义的SPARQL 1.1标准,包括含有Union,OPTIONAL,FILTER和聚集函数的查询;gStore支持有效的增删改操作
    • gStore单机可以支持1Billion(十亿)三元组规模的RDF知识图谱的数据管理任务。

    商业图数据库

    Virtuoso

    • 智能数据,可视化与整合
    • 可扩展和高性能的数据管理
    • 支持Web 扩展和安全

    Allgrograph

    • 一个现代的,高性能的,支持永久存储的图数据库
    • 基于Restful接入支持多语言编程

    Stardog

    Stardog.PNG

    原生图数据库介绍

    Neo4J

    参见百度百科:Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

    Neo4j的数据结构:
    Neo4j数据结构.PNG

    • 在一个图中包含两种基本的数据类型:Nodes (节点) 和Relationships (关系)。
    • Nodes 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。

    Neo4j数据导入:

    1. Cypher CREATE语句,为每一条数据写一个CREATE
    2. Cypher LOAD CSV 语句,将数据转成CSV格式,通过LOAD CSV读取数据
    3. 官方提供的Java API — Batch Inserter
    4. 官方提供的 neo4j-import 工具
    5. 第三方开发者编写的 Batch Import 工具

    Neo4j数据存储:
    Neo4j数据存储.PNG

    **Neo4j查询数据:**使用Cypher查询语言(基于遍历)
    Neo4j查询数据.PNG

    OrientDB

    OrientDB是一个用Java实现的开源NoSQL数据库管理系统。它是一个多模式的数据库,支持图形、文档、键值对、对象模型和关系,也可以为图数据库的管理与记录之间的提供连接。

    Titan(小规模不推荐使用)

    • 弹性和线性增长的数据和用户的可扩展性
    • 数据分布和复制性能和容错性
    • 支持增删改查,支持一致性
    • 支持各种后端存储
    • 支持全局图数据分析,报告,并通过ETL连接大数据平台
    • 支持全文检索

    Benchmark

    常用的Benchmark

    常用Benchmark.PNG

    常用衡量指标

    • Load Time
    • Repository Size
      当知识图谱越大时,希望读写性能呈线性增长时的斜率低
    • Query Response Time
      • 单Query:是否使用了Cache
      • 多Query:mix query使得cache失效,大多存在与冷启动,即cache无预先保存与Query相关的结果情况
    • Throughputs
      • 单Query
      • 多Query
    • Inference Support

    一个知识存储的例子

    Jena是一个免费开源的支持构建语义网络和数据链接应用的Java框架。
    Jena框架.PNG

    • 底层存储支持基于内存、基于SDB(导入关系数据库)、基于TDB(导入原生的三元组数据)和基于custom的存储;
    • 同时Jena还支持一些推理的API;
    • RDF API,支持基于SPARQL语言的查询;
    • 可使用Fuseki进行增删查改。

    前期工作

    定义一个音乐知识图谱的Schema如下:
    音乐知识图谱Schema.PNG

    Schema中的蓝线指向属性,绿线指向实体,虚线指向图谱生成之后添加的属性,后面通过
    SPARQL Update语句添加。

    我们使用python脚本生成了1000个音乐知识图谱的三元组:
    生成的三元组数据.PNG

    数据导入:

    • 使用TDB导入
      使用tdbloader工具的命令为:
      /jena-fuseki/tdbloader --loc=/jena-fuseki/data filename
      

      '/jena-fuseki/data’是存储的位置。

    • 使用Fuseki导入

    启动Fuseki服务:
    在导入数据之后我们可以使用接口对我们的数据进行查询,于是我们使用Fuseki Server进行查询,启动命令如下,注意此处需要指定TDB生成的文件路径和数据库名:

    /jena-fuseki/fuseki-server --loc=/jena-fuseki/data --update /music
    

    其中/music是刚刚导入的数据

    数据库查询方法:

    1. Fuseki界面查询
    2. 使用endpoint接口查询,endpoint地址为:
      SPARQL Query: http://localhost:3030/music/query
      SPARQL Update: http://localhost:3030/music/update
    3. 使用SPARQLWrapper包查询和更新(详见https://rdflib.github.io/sparqlwrapper/
      SPARQLWrapper.PNG

    后两种方法都是可以基于Python语言。

    查询示例

    1. 查询某一艺术家的所有歌曲
    PREFIX music: <http://kg.course/music/>
    
    SELECT  DISTINCT   ?trackID
    WHERE { 
      ?trackID  music:track_artist  music:artist_01
    }
    
    1. 查询某一艺术家的所有歌曲的歌曲名
    PREFIX music: <http://kg.course/music/>
    
    SELECT ?name
    WHERE {
      ?trackID  music:track_artist music:artist_01  .
      ?trackID  music:track_name  ?name
     }
    
    1. 查询某一首歌曲名的专辑信息
    PREFIX music: <http://kg.course/music/>
    
    SELECT ?trackID ?ablumID ?name
    WHERE { 
     ?trackID    music:track_name     "track_name_00001"  .  
     ?trackID    music:track_album    ?ablumID .
     ?ablumID    music:ablum_name     ?name 
    }
    
    1. 查询某一首歌曲名的专辑信息,使用中文来当变量名
    PREFIX music: <http://kg.course/music/>
    
    SELECT ?歌曲id ?专辑id ?专辑名 
    WHERE {
      ?歌曲id  music:track_name   "track_name_00001"   . 
      ?歌曲id  music:track_album  ?专辑id  . 
      ?专辑id  music:album_name   ?专辑名
    }
    
    1. 查询某一首歌曲名的专辑信息,变量名添加描述
    PREFIX music: <http://kg.course/music/>
    
    SELECT ?歌曲id ?专辑id (CONCAT("专辑名",":",?专辑名) AS ?专辑信息)
    WHERE {
      ?歌曲id  music:track_name   "track_name_00001"   . 
      ?歌曲id  music:track_album  ?专辑id  . 
      ?专辑id  music:album_name   ?专辑名
    }
    
    1. 查询某个专辑里面的所有歌曲
    PREFIX music: <http://kg.course/music/>
    
    SELECT  ?trackID
    WHERE {
      ?albumID    music:album_name   "album_name_0002"  .  
      ?trackID    music:track_album   ?albumID 
    }
    
    1. 查询某个专辑里面的所有歌曲,限制前2
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    
    SELECT ?S  ?P
    WHERE {
      ?subject  ?predicate  "ablum_name_0002" .
      ?S        ?P           ?subject
    }
    limit 2
    
    1. 对某个专辑里面的所有歌曲计数
    PREFIX music: <http://kg.course/music/>
    
    SELECT  (COUNT(?trackID) as ?num)
    WHERE {
      ?albumID    music:album_name   "album_name_0002"  .  
      ?trackID    music:track_album   ?albumID 
    }
    
    1. 查询某一首歌是哪一个艺术家的作品
    PREFIX music: <http://kg.course/music/>
    
    SELECT ?trackID  ?artistID 
    WHERE {  
      ?trackID  music:track_name   "track_name_00001"  .  
      ?trackID music:track_artist ?artistID 
    }
    
    1. s查询某一首歌属于什么歌曲类型
    PREFIX music: <http://kg.course/music/>
    
    SELECT  ?trackID ?tag_name 
    WHERE {  
        ?trackID  music:track_name   "track_name_00001" .  
        ?trackID  music:track_tag    ?tag_name  
    }
    
    1. 查询某一艺术家唱过歌曲的所有标签
    PREFIX music: <http://kg.course/music/>
    
    SELECT  DISTINCT ?tag_name
    WHERE { 
        ?trackID    music:track_artist  music:artist_001  .  
        ?trackID    music:track_tag    ?tag_name
    }
    
    1. 查询某一艺术家唱过歌曲的所有类型并排序
    PREFIX music: <http://kg.course/music/>
    
    SELECT  DISTINCT ?tag_name
    WHERE { 
        ?trackID    music:track_artist  music:artist_001  .  
        ?trackID    music:track_tag    ?tag_name
    }
    
    ORDER BY ?tag_name
    
    1. 查询某几类歌曲标签中的歌曲的数目
    PREFIX music: <http://kg.course/music/>
    
    SELECT  (COUNT(?trackID ) AS ?num) 
    WHERE {  
        {    
            ?trackID  music:track_tag    "tag_name_01" .  
        }   
        UNION 
        {   
            ?trackID music:track_tag   "tag_name_02"  .  
        } 
    }
    
    PREFIX music: <http://kg.course/music/>
    
    SELECT  (count(?trackID ) as ?num)
    WHERE { 
        ?trackID music:track_tag  ?tag_name
        FILTER (?tag_name = "tag_name_01"|| ?tag_name = "tag_name_02")
    }
    
    1. 查询所有歌曲中带有’xx’字符的歌曲名
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    SELECT ?subject  ?object
    WHERE {
      ?subject <http://kg.course/music/track_name>  ?object .
      FILTER  regex(?object,"088")
    }
    
    1. 询问是否存在带有’xx’字符的歌曲名
    PREFIX music: <http://kg.course/music/>
    ASK  
    { 
      ?trackID  music:track_name  ?track_name . 
      FILTER    regex(?track_name,"008")
    }
    

    增加示例

    给艺术家id新增属性艺术家名字

    PREFIX music: <http://kg.course/music/>
    
    INSERT DATA
    {
      music:arttist_01  music:artist_name  "artist_name_01" . 
      music:arttist_02  music:artist_name  "artist_name_02" .
      music:arttist_03  music:artist_name  "artist_name_03" .
    }
    
    PREFIX music: <http://kg.course/music/>
    
    SELECT  ?artistID  ?artist_name
    WHERE {
      ?artistID  music:artist_name ?artist_name 
    }
    

    删除示例

    删除增加的属性艺术家名字

    PREFIX music: <http://kg.course/music/>
    
    DELETE 
    {  
      music:artist_02   music:artist_name ?x .
    }
    WHERE 
    { 
       music:artist_02  music:artist_name ?x .
    }
    
    PREFIX music: <http://kg.course/music/>
    
    SELECT  ?artistID  ?artist_name
    WHERE {
      ?artistID  music:artist_name ?artist_name 
    }
    
    展开全文
  • 存储基础知识

    万次阅读 2018-05-17 12:52:25
    存储的发展历程 什么是存储存储:就是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些截止上并能保证有效的访问。 当前存储的主要体系结构有三种:DAS、NAS、SAN。 存储发展历程的两...

    存储的发展历程

    什么是存储:

    存储:就是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问。

    当前存储的主要体系结构有三种:DAS、NAS、SAN。

    存储发展历程的两个推动力:

    1. 业务上的需求
    2. 技术上的不断提升

    早期的存储:

    服务器与存储一体:

    1. CPU主频较低
    2. 内存比较小
    3. 硬盘容量也不大
    4. 业务要求也没那么多

    存储发展趋势:

    • 重复数据删除
    • SSD固态硬盘
    • 云存储
    • 虚拟化环境的保护
    • 一体化应用存储设备
    • 非结构化数据存储与管理
    • 备份容灾

    存储与应用环境

    主机内部存储环境:

    主机内部I/O流程各个环境共同构成了数据储存的内部应环境。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nhwFBEjP-1600358338453)(存储基础知识/内部.png)]

    图:内部存储环境流程

    主机内部存储环境的瓶颈:

    传统内置存储,有接口,CPU,内存,硬盘等。

    • 硬盘成为整个系统的瓶颈

      有限的硬盘槽数

      单个硬盘存放数据,安全性得不到保证

    • 存储空间利用率等

      本地存储,数据分散,难以共享

    • 可扩展性不够

      总线结构,而非网络结构

      可连接的设备受到限制增加容量时,需停机

    网络存储应用环境:

    网络存储系统各层构成了网络存储系统的应用环境,决定了数据存储的可靠性、性能和安全性。

    这里写图片描述

    图:网络存储结构

    存储介质

    机械硬盘:

    这里写图片描述

    图:机械硬盘结构

    机械硬盘由盘片、磁头驱动机构、接口、控制电路、磁头组件、主轴等构成。还有高速缓存芯片、主控芯片、数据传输信息。

    机械硬盘的主要参数:

    • 硬盘容量(Volume)

    • 缓存(Rotatinoal speed):磁盘转动圈数/分钟

    • 缓存

    • 平均访问时间

      平均访问时间由平均寻道时间和平均等待时间构成。

    • 数据传输率(Data Transfer Rate)

      内部传输率(Internal Transfer Rate)

      外部传输率(External Transfer Rate)

    • IOPS(Input/Output per Second)每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。

    • Throughput吞吐量:值单位时间内可以成功传输的数据数量。对于大量数据读写的应用,如电视台的视频编辑,视频点播VOD(Video On Demand),则更关注吞吐量指标。

    SSD硬盘:

    这里写图片描述

    图:SSD架构框图
    • 无高速旋转部件,性能高,功耗低
    • 多通道并发,通道内Flash颗粒复用时序
    • 支持TCQ/NCQ,一次响应多个IO请求。
    • 典型响应时间低于0.1ms。

    SSD优势:

    1. 响应时间段

      机械硬盘的机械特性导致大部分时间浪费在寻道和机械延迟上,数据传输效率受到严重制约。

    2. 读写效率高

      机械硬盘在进行随机读写操作时,磁头不听地移动,导致读写效率底下,而SSD通过内部控制器计算出数据的存放位置,直接进行存取操作,过效率高。

    3. 设备温度低,功耗比机械硬盘低。

    4. SSD不含高速的机械结构部件,可经得住严苛的环境考验,以华为SSD硬盘为例:

      HSSD可承受整栋加速度16.4G,机械硬盘一般为0.5G以下。

      HSSD可抗冲击1500G,机械硬盘一般为70G左右。

    SSD硬盘–存储中的应用:

    这里写图片描述

    图:存储中的应用

    硬盘接口类型:

    • ATA(Advanced Technology Attachment)高级技术附加装置

      ATA硬盘以经常成为IDE Integrated Drive Electronics硬盘。

      ATA接口为并行ATA技术。

    • SCSI接口(Small Computer System Interface)小型计算机系统接口

    • SATA:Serial ATA,串型ATA。

      SATA采用串型方式进行数据传输,接口速率比IDE接口高,最低为150Mps,并且第二代(SATA II),300Mbps接口硬盘已经形成商用,规划内的最高速率可达600Mbps。

      SATA硬盘采用点对点连接方式,支持热插拔,即插即用。

      适合大数据块,业务压力不大的用户使用。如;企业备份数据,归档数据,视频图片存储。

    • SAS接口:(Serial Attached SCSI)串行连接SCSI

      SAS是一种点对点、全双工、双端口的接口。

      SAS专为满足高性能企业需求而设计,实现与SATA的互操作,为企业用户带来前所未有的灵活性和低成本。

      速率每路600M

      SAS具有高性能、高可靠性、强大的扩展性能。

      适合业务量大, 范围评率较高,以小数据块居多,数据较为离散的中/高端用户。如:企业数据库,CRM、ERP等应用。

    • FC接口:FC硬盘采用FC-AL(Fiber Channel Arbitrated Loop)光纤通道仲裁环。

      FC-AL是一种双端口的串型存储接口

      FC-AL支持全双工工作方式

      FC-AL利用类似SATA/SAS所用的4芯连接,提供一种单环拓步结构,一个控制器能够访问126个硬盘。

    • NL SAS采用SAS接口,SATA盘体,也叫近线SAS。

      原生支持SCSI,支持双端口访问,高级容错技术,大容量低功耗。

      更适合大数据块业务,压力不大的用户使用。如:;邮件服务器,文件服务器。

    展开全文
  • 本PPT讲解区块链存储领域的知识。 主要面向所有想了解区块链领域的人员。特别是那些想了解区块链存储相关知识的人员。 …… 本PPT的主要问题是区块链存储与传统存储相比的优缺点? 相关的区块链知识请参考我们...
  • 存储入门必读】存储基础知识

    千次阅读 2017-07-25 12:41:54
    Group by 网络存储主要技术, 主要协议和相关技术, 文件系统相关知识, RAID技术详解, 数据复制与容灾, 备份技术, windows相关, Linux相关, 存储网络技术, 存储I/O专栏, 云存储概念, 其它存储技术, 大数据, ...
  • 本文章旨在用neo4j构建一个简单的金融领域的知识图谱,挖掘“高管—上市企业—行业/概念”之间的关系。关于具体的任务描述可下载我百度网盘的链接。链接:https://pan.baidu.com/s/12v0df74Y1kW0WHiJTvQZpQ 密码:q9...
  • 分布式存储基础知识

    万次阅读 2018-11-11 20:47:42
    分布式存储的数据类型有以下三类: 非结构化的数据:主要是数据之间的关联系不大,像文本图片之类的数据 结构化的数据:数据之间关联系很大,关系型数据库这种,可以用表进行表示的 半结构化的数据:介于上述两种...
  • Web本体语言OWL是当前存储本体的主要形式.OWL也适用于知识图谱的存储, 但OWL文档不适用于大数据量的情况, 影响查询、修改和推理速度. 作为知识库的知识图谱, 其基本元素是海量的各种关系联系在一起的实体, 需要创新...
  • 一、前言 知识图谱本质(Knowledge Graph)上是一种叫做语义网络(semantic network)的知识库,即具有有向图结构的一个知识库;图的结点代表实体(entity)或者概念...知识图谱的存储,通常采用RDF和图数据的方
  • 知识图谱入门 (五) 知识存储

    万次阅读 2018-04-20 16:18:49
    知识存储,即获取到的三元组和schema如何存储在计算机中。本节从以Jena为例,对知识在数据库中的导入、存储、查询、更新做一个简要的介绍,而后对主流的图数据库进行介绍。 图数据库简介 图数据库源起欧拉和图...
  • 存储知识、mount挂载理解

    千次阅读 2017-12-05 16:56:58
    嵌入式系统存储知识Android中mount命令可以得到/dev/block/mtdblock3 /system yaffs2 rw,relatime 0 0 /dev/block/mtdblock4 /cache yaffs2 rw,nosuid,nodev,relatime 0 0 /dev/block/mmcblk0p3 /mnt/asec/extdata ...
  • 知识图谱是一种有向图结构,描述了现实世界存在的实体、事件或者概念以及它们之间的关系,为自动问答、信息检索等应用提供支撑。其中,图中的节点表示实体、事件或概念,图中的边表示相邻节点间的关系,如下图所示。...
  • /jena-fuseki/tdbloader --loc=/jena-fuseki/data filename
  • 知识存储和检索 知识图谱是一种有向图结构,描述了现实世界中存在的实体、事件或者概念以及他们之间的关系。图中的节点表示实体、事件或者概念,图中的边表示相邻节点的关系。 知识图谱的存储 基于表结构的存储 ...
  • KV存储相关基础知识

    千次阅读 2018-11-19 15:13:20
    从今天开始研究存储里面键值系统的相关知识存储介质提供一个存储体为生成,结合上次的存储服务,形成一个存储系统,我们最常见的存储系统就是文件系统,以文件的方式来在存储体上管理数据。同时也可以使用数据库,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 773,333
精华内容 309,333
关键字:

关于存储的知识