eclipse jena 解析语句

eclipse jena parsing statement

我正在尝试将 RDF 文件解析为语句,并在下拉列表中将值显示为主题对象和谓词。文本字段将是本地名称,而后面的值将是相应的 URI 或文字。对于主题和谓词,我认为我可以处理这个,但对于对象,RDFNode class 没有 getLocalName 属性 这让我陷入了困境。任何帮助将不胜感激

public void TestMethod() {
    Map<String, Map<String, Object>> patternMap = new HashMap<String, Map<String, Object>>();
    Map<String, Object> subjectMap = new HashMap<String, Object>();
    Map<String, Object> predicateMap = new HashMap<String, Object>();
    Map<String, Object> objectMap = new HashMap<String, Object>();
    Model model = ModelFactory.createDefaultModel();
    model.read("dbpedia.owl");
    StmtIterator iter = model.listStatements();
    while (iter.hasNext()) {
        Statement stmt = iter.nextStatement();
        subjectMap.put(stmt.getSubject().getLocalName(),stmt.getSubject().getURI() );
        predicateMap.put(stmt.getPredicate().getLocalName(),(stmt.getPredicate().isLiteral() ? stmt.getPredicate().getLocalName() : stmt.getPredicate().getURI()));
        objectMap.put(stmt.getObject().toString(), stmt.getObject().toString());

    }
    patternMap.put("Subjects", subjectMap);
    patternMap.put("Predicates", predicateMap);
    patternMap.put("Objects",objectMap);
}

RDFNode 对象将是 LiteralResource。您可以使用您在 Predicate 上使用的相同 isLiteral() 方法来确定对象的类型,然后使用 asLiteral()asResource() 方法执行必要的转换。

在文字的情况下,尝试 literal.getValue().toString() 到 return 它的名字。资源当然会像主题一样被处理。