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

标签 java jena semantic-web apache-jena

我不知道为什么在设置 Model 的 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 可以做到这一点。

最佳答案

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

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

关于java - 如何在 Apache Jena 模型中添加 NameSpace/PrefixMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41998516/

相关文章:

symfony - 三元组存储的数据库结构?

url - Unicode 字符是否有已知的 URI 方案或 URN 命名空间?

java - 当与 Android 中的图 block 碰撞时停止玩家

rdf - 在加载到 apache-jena TDB Triplestore 之前清理 YAGO 文件

rdf - OWL 我怎么知道某个东西应该是类还是实例?

java - 如何将 Jena 规则添加到 OntModel

java - 在 JSP View 中访问 RDF 模型的最佳方法是什么?

java - 哪种java布局适合我的布局

java - servlet.PageNotFound : No mapping found for HTTP request with URI in DispatcherServlet

java - 如何在 Spring 中加载系统属性文件?