2012-03-12 64 views
0

我正嘗試使用以下鏈接來獲取ColdFusion中RDF/XML格式的增強建議。語義網站ColdFusion cfhttp請求選項

http://dev.iks-project.eu:8081/engines

我的問題是,該列表包含單詞反覆。我可以設置一些選項來獲得獨特的增強功能嗎?

+0

你可能會給你一個樣本,你正在粘貼在Stanbol增強器以及什麼被返回?你是否試圖獲取RDF/XML數據,然後在CF中以相同格式**返回數據**? – 2012-03-12 13:16:21

回答

1

您需要使用並熟悉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()> 
0

本質上,在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----> 
+0

httpReq.text將是一個布爾值。你的意思是httpReq.fileContent? – 2012-03-12 13:14:05

+0

是的 - 這不適用於RDF/XML。您不能也不應該將RDF/XML解析爲XML,並且需要RDF解析器 – 2012-03-12 13:46:28

+0

感謝David和William。我編輯了我的回覆,以顯示清單清單的基本信息。看起來他已經知道如何執行http請求並從XML響應中檢索列表。 – 2012-03-12 14:13:17