语义Web ColdFusion cfhttp请求选项

时间:2012-03-12 10:33:11

标签: coldfusion semantic-web

我正在尝试使用以下链接在ColdFusion中获取RDF / XML格式的增强建议。

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

我的问题是该列表包含重复的单词。我可以设置一些选项来获得独特的增强功能吗?

2 个答案:

答案 0 :(得分: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()>

答案 1 :(得分: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---->