gpt4 book ai didi

java - 为新的内置 Jena 创建一个库

转载 作者:行者123 更新时间:2023-12-01 12:59:25 25 4
gpt4 key购买 nike

我为耶拿制作了一些新的内置插件。我想创建一个库来放置所有这些。

我怎样才能做到这一点?在这种情况下我该如何创建我的规则?我需要导入规则文件中的一些文件吗?

最佳答案

请注意,由于这个问题非常广泛,我的回答只是针对整体设计的一组建议。首先,我们将从耶拿如何做到这一点开始。

Apache Jena 将其规则文件作为类路径资源存储在其分发 jar 中。 jena-core 有一个名为 etc 的包(目录),其中存储了多个规则文件。 Jena 实现的推理器实际上只是具有特定规则集的 GenericRuleReasoner。例如,FBRuleReasoner#loadRules()方法用于检索该推理器将使用的规则集。您应该查看它是从哪里调用的,以便弄清楚如何使用这样的范例。

在您的系统中,我建议您构建自己的 ReasonerFactory 实现(我们将其称为 MyReasonerFactory)。在 MyReasonerFactory 中,您可以有一个静态初始化 block ,它将为您的特定域推理器注册 Builtin。当有人调用 ReasonerFactory#create(Resource) 时,您可以从类路径加载规则,然后创建一个利用这些规则的 GenericRuleReasoner

一些伪代码(可能无法编译)如下:

public class MyReasonerFactory implements ReasonerFactory

private static final String RULE_LOC = "/some/directory/in/my/jar/filename.extensiondoesntmatter";

static {
// register your builtins
}

@Override
public RuleReasoner create(Resource r) {
final GenericRuleReasoner reasoner = new GenericRuleReasoner(this, r);
reasoner.setRules(FBRuleReasoner.loadRules(RULE_LOC));
return reasoner;
}

@Override
public String getUri() {
return "urn:ex:yourReasoner";
}

@Override
public Model getCapabilities() {
// Your capabilities are identical to GenericRuleReasoner's
return GenericRuleReasonerFactory.theInstance().getCapabilities();
}
}

关于java - 为新的内置 Jena 创建一个库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23640770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com