当前位置: 首页 > 知识库问答 >
问题:

getLiteral在使用jena读取RDF文件时返回null

微生俊材
2023-03-14

这些天来我一直在读关于OWL本体和RDF文件的文章。我还是不能理解这一点。

假设我使用Protege创建了一个简单的本体。它有一个称为Review的类,具有两个数据属性,即comment和rating。

<?xml version="1.0"?>
<rdf:RDF
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
      xmlns:c="http://review-analyzer.local/ontologies/reviews_2.owl#">

<rdf:Description rdf:ID="me">
    <c:review>Display looks amazing!</c:review>
    <c:raitng>5</c:raitng>
</rdf:Description>
<rdf:Description rdf:ID="me2">
    <c:review>Display is great!</c:review>
    <c:raitng>5</c:raitng>
</rdf:Description>
</rdf:RDF>
  Model model = ModelFactory.createOntologyModel();
        model.read("./rdf/119.rdf", "RDF/XML");
  String queryString = 
                "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\r\n" +
                "PREFIX ns: <http://review-analyzer.local/ontologies/reviews_2.owl#>"+
                "select *\r\n" + 
                "where {\r\n" + 
                "  ?Comment ns:review ?review .\r\n" + 
                "  ?Comment ns:raitng ?raitng .\r\n" + 
                "}";
        Query query = QueryFactory.create(queryString);
        QueryExecution qexec = QueryExecutionFactory.create(query, model);
        try {
            ResultSet results = qexec.execSelect();
            List<String> varNames = results.getResultVars();
            while (results.hasNext()) { 

                QuerySolution soln = results.nextSolution();
                Literal name = soln.getLiteral("review");
                System.out.println(soln);
            }
        } finally {
            qexec.close();
        }

后面的行返回NULL。

Literal name = soln.getLiteral("review");

这里面有什么问题?

共有1个答案

督德泽
2023-03-14

rdf:id需要解析为绝对IRI,但文件中没有xmlns:base。或者添加一个,或者使用带有绝对虹膜的rdf:about,例如“C:Me”。

 类似资料:
  • 我想把xml文件转换成RDF。我认为JENA GRDDL可以使用,但我不知道它是如何工作的!我没有找到任何例子!你能帮助我请开始使用这个API或显示我任何可能的解决方案!

  • 我需要帮助从RDF和Jena框架中获取一些信息。我有一个RDF内容是这样的: 我如何提取值test_id_test???如果我想用SPARQL,我怎么用Jena???

  • 其中url是RDF/XML web文档。

  • 问题内容: 我正在编写一个简单的请求处理程序以返回一对CSS文件。使用fs.readFileSync,这很容易。但是,我很难使用异步版本的readFile完成相同的任务。下面是我的代码。将我的response.write()方法调用拆分到两个不同的回调中似乎是有问题的。有人可以指出我做错了什么吗?有趣的是,如果我将response.end()放在第一个else语句中,则此代码有效。但是,这产生了一

  • 我用一个递归函数尝试过它,它迭代语句,当语句不是文字时,它会跟随对象到达下一个节点。像这样: 但不知怎的,我用这个方法没有什么进展。非常感谢你的每一次洞察。