【发布时间】:2015-07-21 23:16:09
【问题描述】:
我不明白为什么下面的代码会这样。我正在尝试使用 Jena 解析 DCAT 文档,虽然使用完全限定的 URI 不是一个交易破坏者,但我认为在尝试访问语句之前设置 URI 前缀将允许我使用速记符号。
例如,我设置了 dcat 前缀,但无法使用 dcat:distribution 以这种方式搜索模型。相反,我必须使用完全限定的 URI。这是预期的还是我做错了什么?
dcatModel = RDFDataMgr.loadModel(URI);
dcatModel.setNsPrefix("dcat", "http://www.w3.org/ns/dcat#");
dcatModel.setNsPrefix("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
dcatModel.setNsPrefix("dct", "http://purl.org/dc/terms/");
String uri = "http://catalog.data.gov/dataset/consumer-complaint-database";
Resource dataSetResource = dcatModel.getResource(uri);
String propString = "http://www.w3.org/ns/dcat#distribution";
//String propString = "dcat:distribution";
Property searchProperty = dcatModel.createProperty(propString);
StmtIterator i = dataSetResource.listProperties(searchProperty);
【问题讨论】:
-
设置前缀不会启用速记符号。
-
这可能适合作为答案。以这种方式可以速记符号吗?例如,是否有任何设置可以通过速记字符串进行搜索?
-
对此有 API 支持,但在 Java 中使用 NS+"#property" 就足够简单了(这在 Turtle 中就是如此)。有些人使用不寻常的自定义 URI 方案,这使得这不是一个简单的添加问题,并且仍然保持长期兼容性。
标签: java rdf jena semantic-web