如何在Apache Jena模型中添加NameSpace / PrefixMap?

时间:2017-02-02 09:30:13

标签: java jena semantic-web apache-jena

我不知道为什么在设置模型的setNsPrefix之后它根据我的期望不起作用。
这是我的 Java代码

public class TestClass
{
   public static void main(String[] args){
     Model model = ModelFactory.createDefaultModel();
     model.setNsPrefix("vocab","http://myweb.in/vocab#");         
     model.createResource().addLiteral(ResourceFactory.createProperty("vocab:name"),"Dhannan");
     String query
                = " SELECT * "
                + " WHERE { "
                + " ?Subject ?Predicate ?Object . "
                + " } ";
     Services.executeQuery(model, query);
    }
}

输出

--------------------------------------
| Subject | Predicate    | Object    |
======================================
| _:b0    | <vocab:name> | "Dhannan" |
--------------------------------------

预期:

------------------------------------------------------
| Subject | Predicate                    | Object    |
======================================================
| _:b0    | <http://myweb.in/vocab#name> | "Dhannan" |
------------------------------------------------------

我哪里弄错了? 从我的想法setNsPrefix可以做到这一点。

1 个答案:

答案 0 :(得分:1)

设置前缀不会在API中打开它。没有提供,特别是对于ResourceFactory.createProperty,因为此时没有模型。

使用model.expandPrefix展开带前缀的名称以获取完整的URI,即使用该URI。