用 Model.setNsPrefix() 定义前缀后不能使用带前缀的 URI?
Can't use prefixed URI after defining a prefix with Model.setNsPrefix()?
我不明白为什么下面的代码会这样。我正在尝试使用 Jena 解析 DCAT 文档,虽然使用完全限定的 URI 不会破坏交易,但我认为在尝试访问语句之前设置 URI 前缀将允许我使用 shorthand 表示法。
例如,我设置了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);
设置前缀不会启用 shorthand 表示法。
我不明白为什么下面的代码会这样。我正在尝试使用 Jena 解析 DCAT 文档,虽然使用完全限定的 URI 不会破坏交易,但我认为在尝试访问语句之前设置 URI 前缀将允许我使用 shorthand 表示法。
例如,我设置了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);
设置前缀不会启用 shorthand 表示法。