我正嘗試使用以下鏈接來獲取ColdFusion中RDF/XML格式的增強建議。語義網站ColdFusion cfhttp請求選項
http://dev.iks-project.eu:8081/engines
我的問題是,該列表包含單詞反覆。我可以設置一些選項來獲得獨特的增強功能嗎?
我正嘗試使用以下鏈接來獲取ColdFusion中RDF/XML格式的增強建議。語義網站ColdFusion cfhttp請求選項
http://dev.iks-project.eu:8081/engines
我的問題是,該列表包含單詞反覆。我可以設置一些選項來獲得獨特的增強功能嗎?
您需要使用並熟悉Jena並知道如何使用Java內聯。那麼它只是一個例子:
<cfset oldModel = createObject("java", "com.hp.hpl.jena.rdf.model.ModelFactory").createDefaultModel().read("http://dev.iks-project.eu:8081/engines")>
<cfset newModel = createObject("java", "com.hp.hpl.jena.rdf.model.ModelFactory").createDefaultModel()>
<cfset sparqlQuery = "SELECT DISTINCT ?s ?p ?o WHERE {?s ?p ?o}">
<cfset triples = createObject("java", "com.hp.hpl.jena.query.QueryExecutionFactory").create(sparqlQuery, rdfModel).execSelect()>
<cfloop condition="triples.hasNext()">
<cfset nextTriple = triples.nextSolution()>
<cfset newModel.add(newModel.createStatement(nextTriple.getResource("s"), newModel.createProperty(nextTriple.getResource("p").getURI()), nextTriple.get("o")))>
</cfloop>
<cfset outputStream = createObject("java", "java.io.ByteArrayOutputStream")>
<cfset newRdfXmlContent = newModel.write(outputStream, "RDF/XML-ABBREV").toString()>
本質上,在ColdFusion中執行此操作的最佳方法是循環訪問列表並創建ColdFusion結構。假設你的Web服務返回一個有效分隔的列表,這裏是如何的例子:
<cfset enhancements = "item1,item2,item3,item4,item1,item2,item3,item4">
<cfset objEnhancement = structNew()><!---- CREATE STRUCT--->
<cfloop index="item" list="#enhancements#"><!---- LOOP THROUGH RESPONSE TEXT--->
<cfset objEnhancement[item] = ""><!---- CREATE STRUCT KEYS, THESE WILL AUTO DE-DUPE --->
</cfloop>
<cfset uniqueEnhancements = StructKeyList(objEnhancement)> <!---- DUMP THE STRUCT KEYS TO A NEW LIST---->
httpReq.text將是一個布爾值。你的意思是httpReq.fileContent? – 2012-03-12 13:14:05
是的 - 這不適用於RDF/XML。您不能也不應該將RDF/XML解析爲XML,並且需要RDF解析器 – 2012-03-12 13:46:28
感謝David和William。我編輯了我的回覆,以顯示清單清單的基本信息。看起來他已經知道如何執行http請求並從XML響應中檢索列表。 – 2012-03-12 14:13:17
你可能會給你一個樣本,你正在粘貼在Stanbol增強器以及什麼被返回?你是否試圖獲取RDF/XML數據,然後在CF中以相同格式**返回數據**? – 2012-03-12 13:16:21