Vector プロパティをセットする方法

環境

Oracle Graph Server Shell 20.1.0
PGX server version: 19.4.0 type: SM
PGX server API version: 3.6.0
PGQL version: 1.2

準備

  • Graph の作成
var g = session.<Integer>newGraphBuilder(IdType.INTEGER).addVertex(1).build()

Vector プロパティの設定方法

// Vector Integer プロパティの作成
g.createVertexVectorProperty(PropertyType.INTEGER, 3 /* dimension */, "vp_vec_int")

// Vector Integer プロパティのセット
g.getVertex(1).setProperty("vp_vec_int", new oracle.pgx.api.PgxVect<Integer>(new Integer[]{1,2,3}))
// Vector Long プロパティの作成
g.createVertexVectorProperty(PropertyType.LONG, 3 /* dimension */, "vp_vec_long")

// Vector Long プロパティのセット
g.getVertex(1).setProperty("vp_vec_long", new oracle.pgx.api.PgxVect<Long>(new Long[]{1L,2L,3L}))
// Vector Float プロパティの作成
g.createVertexVectorProperty(PropertyType.FLOAT, 3 /* dimension */, "vp_vec_float")

// Vector Float プロパティのセット
g.getVertex(1).setProperty("vp_vec_float", new oracle.pgx.api.PgxVect<Float>(new Float[]{0.1f,0.2f,0.3f}))
// Vector Double プロパティの作成
g.createVertexVectorProperty(PropertyType.DOUBLE, 3 /* dimension */, "vp_vec_double")

// Vector Double プロパティのセット
g.getVertex(1).setProperty("vp_vec_double", new oracle.pgx.api.PgxVect<Double>(new Double[]{0.1d,0.2d,0.3d}))
  • Vector String プロパティのセットはできない
// Vector String プロパティの作成
g.createVertexVectorProperty(PropertyType.STRING, 3 /* dimension */, "vp_vec_string")

// Vector String プロパティのセット -> エラー発生
g.getVertex(1).setProperty("vp_vec_string", new oracle.pgx.api.PgxVect<String>(new String[]{"str1", "str2", "str3}))

|  Exception java.lang.IllegalArgumentException: type string is not a valid vector property type
|        at PgxVect.<init> (PgxVect.java:49)
|        at (#23:1)

Vector プロパティの参照方法

((oracle.pgx.common.util.vector.Vect<Integer>)g.getVertex(1).getProperty("vp_vec_int")).toArray()
|  Warning:
|  unchecked cast
|    required: oracle.pgx.common.util.vector.Vect<java.lang.Integer>
|    found:    java.lang.Object
|  ((oracle.pgx.common.util.vector.Vect<Integer>)g.getVertex(1).getProperty("vp_vec_int")).toArray()
|                                                ^--------------------------------------^
$28 ==> Integer[3] { 1, 2, 3 }
((oracle.pgx.common.util.vector.Vect<Long>)g.getVertex(1).getProperty("vp_vec_long")).toArray()
|  Warning:
|  unchecked cast
|    required: oracle.pgx.common.util.vector.Vect<java.lang.Long>
|    found:    java.lang.Object
|  ((oracle.pgx.common.util.vector.Vect<Long>)g.getVertex(1).getProperty("vp_vec_long")).toArray()
|                                             ^---------------------------------------^
$29 ==> Long[3] { 1, 2, 3 }
((oracle.pgx.common.util.vector.Vect<Double>)g.getVertex(1).getProperty("vp_vec_double")).toArray()
|  Warning:
|  unchecked cast
|    required: oracle.pgx.common.util.vector.Vect<java.lang.Double>
|    found:    java.lang.Object
|  ((oracle.pgx.common.util.vector.Vect<Double>)g.getVertex(1).getProperty("vp_vec_double")).toArray()
|                                               ^-----------------------------------------^
$30 ==> Double[3] { 0.1, 0.2, 0.3 }
((oracle.pgx.common.util.vector.Vect<Float>)g.getVertex(1).getProperty("vp_vec_float")).toArray()
|  Warning:
|  unchecked cast
|    required: oracle.pgx.common.util.vector.Vect<java.lang.Float>
|    found:    java.lang.Object
|  ((oracle.pgx.common.util.vector.Vect<Float>)g.getVertex(1).getProperty("vp_vec_float")).toArray()
|                                              ^----------------------------------------^
$31 ==> Float[3] { 0.1, 0.2, 0.3 }