我不知道为什么在设置模型的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可以做到这一点。
答案 0 :(得分:1)
设置前缀不会在API中打开它。没有提供,特别是对于ResourceFactory.createProperty
,因为此时没有模型。
使用model.expandPrefix
展开带前缀的名称以获取完整的URI,即使用该URI。