我有一个可以使用的 RDF 文件
Model model = ModelFactory.createDefaultModel();
// use the FileManager to find the input file
InputStream in = FileManager.get().open(args[0]);
if (in == null) {
throw new IllegalArgumentException(
"File: " + args[0] + " not found");
}
// read the RDF/XML file
model.read(in, null);
我也有 OWL 文件,其中包含用于创建我的模型的本体的描述。我的问题是:我是否需要阅读此文件(以及如何阅读?)才能正确使用我的 RDF 模型?
为了清楚起见,我举个例子:我需要知道一个资源是否与另一个资源有某种关系(例如Station1 has predicate "isResponsibleFor" Workorder1
)。我怎么能用 Jena 做到这一点?
如果我尝试使用类似的东西resource.hasProperty(ResourceFactory.createProperty("isResponsibleFor"))
,它会返回 false (但属性在那里!)。
你能指导我看一些关于这个主题的高级教程吗?我在 Papache 网站等上找到了许多教程,但它们没有为我提供我正在寻找的信息。对不起,如果问题不清楚,我对耶拿很陌生
编辑:目前,我正在搜索我的模型是否包含给定的语句:
public static boolean containsStatement(Model model, String sub,
String pred, String obj) {
// list the statements in the Model
StmtIterator iter = model.listStatements();
// print out the predicate, subject and object of each statement
while (iter.hasNext()) {
Statement stmt = iter.nextStatement(); // get next statement
Resource subject = stmt.getSubject(); // get the subject
Property predicate = stmt.getPredicate(); // get the predicate
RDFNode object = stmt.getObject(); // get the object
if (subject.toString().contains(sub)
&& predicate.toString().contains(pred)
&& object.toString().contains(obj)) {
return true;
}
}
return false;
}
但我很确定这是非常无效的方法..你能建议我一些更优雅和快速的方法吗?谢谢!