请问udf算子的实现应该定义到哪个文件内?
如白皮书案例中的callForMarketShares(s.id, 'marketShare') 应该定义在哪里?
Define (s:Compnay)-[p:marketShare]->(o:Float)
{
Structure {
(s)
}
Constraint {
o = callForMarketShares(s.id, 'marketShare')
}
}
reasoner/udf/src/main/java/com/antgroup/openspg/reasoner/udf/builtin
OpenSPG的函数相关的都在这里面,分为三类:UDF、UDAF、UDTF,可参考这里面的函数示例。 你是现需要定义一些业务独有的udf吗?还是想为openspg贡献一些通用的udf。 如果是前者,可以在你们自己的代码库里面,创建一些udf,然后udf的包名设置为 跟内置udf一样的包名,这样在打包时就能自动打进去。 同时,我们也欢迎代码贡献。
reasoner/udf/src/main/java/com/antgroup/openspg/reasoner/udf/builtinOpenSPG的函数相关的都在这里面,分为三类: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吗?
是得,需要单独修改之后替换掉 reasoner的jar 可以参考文档中客户端启动章节: https://openspg.yuque.com/ndx6g9/nmwkzz/nlfltni1bbbqlgvh