python 知识图谱数据库_知识图谱、图数据库神器——Grakn

然后也是增删改查

增加

//entity 这个参数是定义的实体 map参数是实体里的属性和要添加的值

StatementInstance hasSql = var("p").isa(entity);

for (Map.Entry entry : map.entrySet()) {

hasSql = hasSql.has(entry.getKey(), entry.getValue());

}

GraqlInsert query = Graql.insert(hasSql);

GraknClient.Transaction.QueryFuture> execute = transaction.execute(query);

List conceptMaps = execute.get();

insertId = conceptMaps.get(0).get("p").id().toString();

transaction.commit();

删除

//参数为id id即数据库的自己的 ‘VXXXX’

GraqlDelete query = Graql.match(

var("p").id(id)

).delete(var("p"));

transaction.execute(query);

transaction.commit();

修改

//参数id 是要修改的那条数据的id 是“VXXX”。 参数map是要修改的字段和字段的值

//1。 删除属性的值

for (Map.Entry entry : map.entrySet()) {

GraqlDelete delete_query = Graql.match(

var("m").id(id).has(entry.getKey(), var("rn"))

).delete(var("rn"));

transaction.execute(delete_query);

}

//2. 添加属性

StatementInstance has = null;

for (Map.Entry entry : map.entrySet()) {

if (null == has) {

has = var("m").has(entry.getKey(), entry.getValue());

} else {

has = has.has(entry.getKey(), entry.getValue());

}

}

GraqlInsert insert_query = Graql.match(

var("m").id(id)

).insert(

has

);

transaction.execute(insert_query);

transaction.commit();

//参数为entity 实体名 参数params为hashmap "name"=>["like","测试"] 参数order为排序方式

String queryEntity = " $" + entity + " isa " + entity;

//显示的值

for(Map.Entry> entry: params.entrySet()) {

queryEntity = queryEntity + ", has " + entry.getKey()+ " $" + entry.getKey();

}

queryEntity += ";";

for(Map.Entry> entry: params.entrySet()) {

if(entry.getValue().size() > 0) {

queryEntity = queryEntity + " $" + entry.getKey() + " " + queryMap.get(entry.getValue().get(0)) + " '" + entry.getValue().get(1) + "';";

}

}

List queryAsList = Arrays.asList(

"match ",

queryEntity,

"get;sort $"+order+" asc;"

);

System.out.println("\nQuery:\n" + String.join("\n", queryAsList));

String query = String.join("", queryAsList);

List> result = new ArrayList<>();

GraknClient.Transaction.QueryFuture> execute = transaction.execute((GraqlGet) parse(query));

List answers = execute.get();

当然最基本的节点操作就是以上的这些方法。基本的入门应该没问题了

后续如果有需要大的话

会将优化好的代码和关系的操作开源到github上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值