json-graph-specification, 在JSON中,表示图结构( 节点/边)的一

分享于 

8分钟阅读

GitHub

  繁體 雙語
A proposal for representing graph structure (nodes / edges) in JSON.
  • 源代码名称:json-graph-specification
  • 源代码网址:http://www.github.com/jsongraph/json-graph-specification
  • json-graph-specification源代码文档
  • json-graph-specification源代码下载
  • Git URL:
    git://www.github.com/jsongraph/json-graph-specification.git
    Git Clone代码到本地:
    git clone http://www.github.com/jsongraph/json-graph-specification
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/jsongraph/json-graph-specification
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    json-graph-specification

    JSON中表示图形结构的一种。

    链接

    持续集成

    https://travis-ci.org/jsongraph/json-graph-specification.svg?branch=master

    Gitter聊天

    设计原则

    • 使用反映值的语义类型的有意义的属性名。
    • 属性名称不应过长。
    • 属性名为 array 时,属性名应该是复数。
    • 可以省略 null 值的属性。
    • 定义用于内容验证目的的 JSON图形模式。

    对象

    node 对象

    一个 node 对象代表图形中的一个 node。

    node 属性

    • id属性是对象类型的主键,它对于对象类型是唯一的。 它的值被定义为一个的JSON字符串。
    • 标签属性为对象提供文本显示。 它的值被定义为一个 JSON字符串。
    • 类型属性为对象提供分类。 它的值被定义为一个 JSON字符串。
    • 元数据属性允许对对象进行自定义数据。 它的值被定义为JSON对象。

    边缘对象

    边对象表示图形中的边缘。

    边缘属性

    • 源属性提供源 node 对象的id值。 它的值被定义为一个 JSON字符串。
    • 关系属性提供源节点和目标节点之间的交互。 它的值被定义为一个 JSON字符串。
    • 目标属性提供目标 node 对象的id值。 它的值被定义为一个 JSON字符串。
    • 一个有向属性提供边缘模式( 比如。 向directed或者无向。它的值为和 JSON false 用于无向和无向 JSON。 边缘方向由 graph.directed 属性确定如果不存在。
    • 元数据属性允许对对象进行自定义数据。 它的值被定义为JSON对象。

    图形对象

    图形对象表示单个概念图形。

    图属性

    • 类型属性为对象提供分类。 它的值被定义为一个 JSON字符串。
    • 标签属性为对象提供文本显示。 它的值被定义为一个 JSON字符串。
    • directed属性提供图形模式( 比如。 向directed或者无向。它的值为和 JSON false 用于无向和无向 JSON。 这里属性默认为 true,指示有向图。
    • 节点属性提供图形中的节点。 它的值是 node 对象的array。
    • 边属性提供图形中的边。 它的值是边缘对象的array。
    • 元数据属性允许对对象进行自定义数据。 它的值被定义为JSON对象。

    图对象

    图对象将零个或者多个图形对象到一个JSON文档中。

    • 对象被定义为一个的JSON array。

    图属性

    • 类型属性为对象提供分类。 它的值被定义为一个 JSON字符串。
    • 标签属性为对象提供文本显示。 它的值被定义为一个 JSON字符串。
    • 元数据属性允许对对象进行自定义数据。 它的值被定义为JSON对象。

    示例

    空单图

    {
     "graph": {}
    }

    空多图

    {
     "graphs": []
    }

    节点只有单图

    {
     "graph": {
     "nodes": [
     {
     "id": "A",
     },
     {
     "id": "B",
     }
     ]
     }
    }

    节点/边单图

    {
     "graph": {
     "nodes": [
     {
     "id": "A",
     },
     {
     "id": "B",
     }
     ],
     "edges": [
     {
     "source": "A",
     "target": "B" }
     ]
     }
    }

    单图

    {
     "graph": {
     "directed": false,
     "type": "graph type",
     "label": "graph label",
     "metadata": {
     "user-defined": "values" },
     "nodes": [
     {
     "id": "0",
     "type": "node type",
     "label": "node label(0)",
     "metadata": {
     "user-defined": "values" }
     },
     {
     "id": "1",
     "type": "node type",
     "label": "node label(1)",
     "metadata": {
     "user-defined": "values" }
     }
     ],
     "edges": [
     {
     "source": "0",
     "relation": "edge relationship",
     "target": "1",
     "directed": false,
     "label": "edge label",
     "metadata": {
     "user-defined": "values" }
     }
     ]
     }
    }

    multi

    {
     "graphs": [
     {
     "directed": true,
     "type": "graph type",
     "label": "graph label",
     "metadata": {
     "user-defined": "values" },
     "nodes": [
     {
     "id": "0",
     "type": "node type",
     "label": "node label(0)",
     "metadata": {
     "user-defined": "values" }
     },
     {
     "id": "1",
     "type": "node type",
     "label": "node label(1)",
     "metadata": {
     "user-defined": "values" }
     }
     ],
     "edges": [
     {
     "source": "0",
     "relation": "edge relationship",
     "target": "1",
     "directed": true,
     "label": "edge label",
     "metadata": {
     "user-defined": "values" }
     }
     ]
     },
     {
     "directed": true,
     "type": "graph type",
     "label": "graph label",
     "metadata": {
     "user-defined": "values" },
     "nodes": [
     {
     "id": "0",
     "type": "node type",
     "label": "node label(0)",
     "metadata": {
     "user-defined": "values" }
     },
     {
     "id": "1",
     "type": "node type",
     "label": "node label(1)",
     "metadata": {
     "user-defined": "values" }
     }
     ],
     "edges": [
     {
     "source": "1",
     "relation": "edge relationship",
     "target": "0",
     "directed": true,
     "label": "edge label",
     "metadata": {
     "user-defined": "values" }
     }
     ]
     }
     ]
    }

    更多真实世界示例。

    架构

    为JSON图形格式提供了 JSON图形模式 ( 版本 3 )。

    媒体类型

    描述JSON图形格式的媒体类型是应用程序/vnd。jgf+json。 使用media的媒体类型后缀( 如 )的方法由 RFC 6839 描述。

    除了媒体类型的媒体类型媒体类型参数必须设置为引用JSON图表格式的JSON架构的URL。 配置文件的预期用法是由定义的。 例如可以将普通JSON图形格式内容传递给 Content-Type 头内容,可以设置为:

    Content-Type: application/vnd.jgf+json

    JSON图形格式的子架构可以使用附加的概要文件媒体类型参数来传递它的JSON模式。 每个 profile媒体类型参数必须取消引用JSON模式。 例如可以将BEL图形格式传递为:

    Content-Type: application/vnd.jgf+json; profile=http://jsongraphformat.info/schema.json;
     profile=http://jsongraphformat.info/child-schemas/bel-json-graph.schema.json

    支持

    你可以通过通过NPM将模式安装到你的项目中,并要求它。

    npm install --save json-graph-specification
    var JSONGraph =require("json-graph-specification");

    项目测试

    请参见测试

    链接


    rep  str  Struct  PROP  结构  REPR  
    相关文章