[关闭]
@contribute 2016-09-05T13:35:33.000000Z 字数 2535 阅读 2323

图数据库schema

tinkerpop



1. 需求

  1. 提交一个schema。

    • schema 的id在图中已经存在,如果schema不存在,怎返回错误。
  2. 更新一个schema。(现在只能添加顶点和边标签、属性)

  3. schema 转换成 scripts。

2. API设计

2.1 schema转换成script

2.1.1 定义

  • method : POST
  • address: /api/schema/script/:gid
  • parameter1: 参数名:schema ;类型:String;格式:json
  • return: 将schema转换后script脚本。

2.1.2 示例

提交参数:

  1. {
  2. "vertexlabels": [
  3. {
  4. "name": "person",
  5. "ttl": 0
  6. },
  7. {
  8. "name": "god",
  9. "ttl": 0
  10. }
  11. ],
  12. "edgelabels": [
  13. {
  14. "name": "create",
  15. "ttl": 0,
  16. "multiplicity": "MANY2ONE"
  17. },
  18. {
  19. "name": "knows",
  20. "ttl": 313410,
  21. "multiplicity": "MULTI"
  22. }
  23. ],
  24. "propertykeys": [
  25. {
  26. "cardinality": "SINGLE",
  27. "datatype": "String",
  28. "name": "name",
  29. "ttl": 0,
  30. "order": true
  31. },
  32. {
  33. "cardinality": "SET",
  34. "datatype": "String",
  35. "name": "age",
  36. "ttl": 324,
  37. "order": true
  38. }
  39. ]
  40. }

返回结果:

  1. mgmt = graph.openManagement()
  2. HPvmYa = mgmt.makeVertexLabel('person').make()
  3. kAOqFO = mgmt.makeVertexLabel('god').make()
  4. jtJyjt = mgmt.makeEdgeLabel('create').multiplicity(MANY2ONE).make()
  5. QEsVNf = mgmt.makeEdgeLabel('knows').multiplicity(MULTI).make()
  6. mgmt.setTTL(QEsVNf, Duration.ofSeconds(313,410))
  7. ckYTXj = mgmt.makePropertyKey('name').cardinality(Cardinality.SINGLE).dataType(String.class).make()
  8. LKOays = mgmt.makePropertyKey('age').cardinality(Cardinality.SET).dataType(String.class).make()
  9. mgmt.setTTL(LKOays, Duration.ofSeconds(324))
  10. mgmt.commit()

2.2 根据id获取一个schema

2.2.1 定义

  • method : GET
  • address: /api/schema/:id
  • return: 将schema转换后script脚本。

2.2.2 举例

请求:

  1. /api/schema/schema-001231

返回:

  1. {
  2. "vertexlabels": [
  3. {
  4. "name": "person",
  5. "ttl": 0
  6. },
  7. {
  8. "name": "god",
  9. "ttl": 0
  10. }
  11. ],
  12. "edgelabels": [
  13. {
  14. "name": "create",
  15. "ttl": 0,
  16. "multiplicity": "MANY2ONE"
  17. },
  18. {
  19. "name": "knows",
  20. "ttl": 313410,
  21. "multiplicity": "MULTI"
  22. }
  23. ],
  24. "propertykeys": [
  25. {
  26. "cardinality": "SINGLE",
  27. "datatype": "String",
  28. "name": "name",
  29. "ttl": 0,
  30. "order": true
  31. },
  32. {
  33. "cardinality": "SET",
  34. "datatype": "String",
  35. "name": "age",
  36. "ttl": 324,
  37. "order": true
  38. }
  39. ]
  40. }

2.3 更新schema

2.3.1 定义

  • method : POST
  • address: /api/schema/:id
  • parameter1: 参数名:schema;类型:String;格式:json
  • return: 合并后json格式的schema定义。

2.3.2 举例

/api/schema/schema-001231
请求参数:

  1. {
  2. "vertexlabels": [
  3. {
  4. "name": "Hemigod",
  5. "ttl": 0
  6. },
  7. {
  8. "name": "god",
  9. "ttl": 0
  10. }
  11. ],
  12. "edgelabels": [
  13. {
  14. "name": "knows",
  15. "ttl": 313410,
  16. "multiplicity": "MULTI"
  17. }
  18. ],
  19. "propertykeys": [
  20. {
  21. "cardinality": "SET",
  22. "datatype": "String",
  23. "name": "age",
  24. "ttl": 324,
  25. "order": true
  26. }
  27. ]
  28. }

返回结果

  1. {
  2. "vertexlabels": [
  3. {
  4. "name": "person",
  5. "ttl": 0
  6. },
  7. {
  8. "name": "Hemigod",
  9. "ttl": 0
  10. },
  11. {
  12. "name": "god",
  13. "ttl": 0
  14. }
  15. ],
  16. "edgelabels": [
  17. {
  18. "name": "create",
  19. "ttl": 0,
  20. "multiplicity": "MANY2ONE"
  21. },
  22. {
  23. "name": "knows",
  24. "ttl": 313410,
  25. "multiplicity": "MULTI"
  26. }
  27. ],
  28. "propertykeys": [
  29. {
  30. "cardinality": "SINGLE",
  31. "datatype": "String",
  32. "name": "name",
  33. "ttl": 0,
  34. "order": true
  35. },
  36. {
  37. "cardinality": "SET",
  38. "datatype": "String",
  39. "name": "age",
  40. "ttl": 324,
  41. "order": true
  42. }
  43. ]
  44. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注