2015-07-21 174 views
2

我不明白爲什麼下面的代碼的行爲方式。我試圖用Jena解析一個DCAT文檔,儘管使用完全限定的URI並不是一個破壞性的操作,但我認爲在嘗試訪問語句之前設置URI前綴將允許我使用簡寫符號。使用Model.setNsPrefix()定義前綴後無法使用前綴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); 
+0

設置前綴不啓用速記符號。 – AndyS

+0

這可能適合作爲答案。這種方式是否可以使用簡寫符號?例如,是否有任何設置可以使用簡寫字符串進行搜索? –

+0

對此有API支持,但在Java中使用NS +「#屬性」(這在烏龜中就是這一切)很容易。有些人使用不同尋常的自定義URI方案,這不是一個簡單的添加問題,並且仍然保持長時間的兼容性。 – AndyS

回答

1

設置前綴不啓用速記符號。