openspg icon indicating copy to clipboard operation
openspg copied to clipboard

请问udf算子的实现应该定义到哪个文件内?

Open AnYingLieShouTuT opened this issue 1 year ago • 4 comments

如白皮书案例中的callForMarketShares(s.id, 'marketShare') 应该定义在哪里?

Define (s:Compnay)-[p:marketShare]->(o:Float) 
{ 
    Structure { 
             (s) 
    } 
    Constraint {
             o = callForMarketShares(s.id, 'marketShare') 
    }
}

AnYingLieShouTuT avatar May 20 '24 13:05 AnYingLieShouTuT

image

AnYingLieShouTuT avatar May 20 '24 13:05 AnYingLieShouTuT

reasoner/udf/src/main/java/com/antgroup/openspg/reasoner/udf/builtin

OpenSPG的函数相关的都在这里面,分为三类:UDF、UDAF、UDTF,可参考这里面的函数示例。 你是现需要定义一些业务独有的udf吗?还是想为openspg贡献一些通用的udf。 如果是前者,可以在你们自己的代码库里面,创建一些udf,然后udf的包名设置为 跟内置udf一样的包名,这样在打包时就能自动打进去。 同时,我们也欢迎代码贡献。

fishjoy avatar May 21 '24 06:05 fishjoy

reasoner/udf/src/main/java/com/antgroup/openspg/reasoner/udf/builtin

OpenSPG的函数相关的都在这里面,分为三类:UDF、UDAF、UDTF,可参考这里面的函数示例。 你是现需要定义一些业务独有的udf吗?还是想为openspg贡献一些通用的udf。 如果是前者,可以在你们自己的代码库里面,创建一些udf,然后udf的包名设置为 跟内置udf一样的包名,这样在打包时就能自动打进去。 同时,我们也欢迎代码贡献。

您好,感谢解答,我是想定义一些业务独有的udf,您说的这种方法指的是克隆源码,然后在reasoner/udf/src/main/java/com/antgroup/openspg/reasoner/udf/builtin里定义自己的udf算子,然后用mvn编译,将 mvn 编译好的 reasoner 和 builder 包复制到 knext 目录中,安装knext和nn4k,在 Python 虚拟环境中执行knext命令吗? 我是使用 docker run --rm --net=host -v ${project_dir}:/code
-it openspg/openspg-python:latest
"/bin/bash" 启动的客户端,没有使用mvn 编译的方式,在docker run这种启动方式下可以定义自己的udf吗?

AnYingLieShouTuT avatar May 21 '24 07:05 AnYingLieShouTuT

是得,需要单独修改之后替换掉 reasoner的jar 可以参考文档中客户端启动章节: https://openspg.yuque.com/ndx6g9/nmwkzz/nlfltni1bbbqlgvh

fishjoy avatar May 21 '24 07:05 fishjoy