2012-11-12 5 views
1

여기에 문제가 있는데,보기가 쉽지만 Sparal 쿼리에 익숙하지 않아 솔루션을 찾을 수 없습니다.SPARQL 쿼리를 HTML 테이블 형식으로 데이터를 반환하는 방법?

내 문제를 설명해 드리겠습니다. SPARQL 쿼리 결과를 HTML 테이블에 표시하고 싶습니다. 쿼리를 생성했지만 성공적으로 실행되었지만 결과를 웹 페이지에 HTML 테이블로 표시하는 방법을 모르겠습니다.

예를 들어 하나의 셀에 이름과 다른 셀을 포함하여 그 이름을 가진 사람들에 대한 모든 정보 나 설명을 표시하고 싶습니다.이 이름은 내 온톨로지에서 가져옵니다. 가능한지 궁금해. 그렇다면 어떻게 할 수 있습니까?

+1

쿼리를 실행하기 위해 사용하는 도구/라이브러리와 현재 사용되는 출력 형식을 알려줘야합니다. – toniedzwiedz

+0

답장을 보내 주셔서 감사합니다. 일식과 예나 TDB를 사용합니다. – maya

답변

2

Jena는 기본적으로 쿼리 결과를 HTML로 출력하는 방법을 제공하지 않습니다. 그러나 XML을 생성 할 수 있습니다. ResultSetFormatter이 필요합니다. 다음 예는 다음과 같습니다

Dataset ds = TDBFactory.createDataset(dbDirectory.getAbsolutePath()); 
Model model = ds.getDefaultModel(); 
String query = "SELECT * WHERE {?subject ?predicate ?object .}"; 
execution = QueryExecutionFactory.create(query, model.getUnionGraph()); 
ResultSet results = execution.execSelect(); 
resultString = ResultSetFormatter.asXMLString(results); 

이 방법은 매우 간단한 양식이있을 것이다 얻을거야 XML (예외가 명확성을 위해 생략 잡기).

<sparql xmlns="http://www.w3.org/2005/sparql-results#"> 
    <head> 
    <variable name="subject"/> 
    <variable name="predicate"/> 
    <variable name="object"/> 
    </head> 
    <results> 
    <result> 
     <binding name="subject"> 
     <uri>http://blahblahblah</uri> 
     </binding> 
     <binding name="predicate"> 
     <uri>http://foobar</uri> 
     </binding> 
     <binding name="object"> 
     <uri>http://fizzbuzz</uri> 
     </binding> 
    </result> 
    <result> 
     <binding name="subject"> 
     <uri>http://yadayada</uri> 
     </binding> 
     <binding name="predicate"> 
     <uri>http://example</uri> 
     </binding> 
     <binding name="object"> 
     <literal>This is a literal, expect them to pop up here and there too</literal> 
     </binding> 
    </result> 
    <!-- and the results continue like this --> 
    </results> 
</sparql> 

는 HTML 테이블에 여기에서 가져 오기 XSL 변환을 적용하는 문제이다 : 여기 위에서 사용 된 쿼리에 대한 예입니다. XPath 또는 XML 구문 분석기로 데이터를 읽고 JSP로 전달하는 것도 쉽습니다.

또 다른 옵션은 ResultSetFormatter을 사용하여 Model을 반환하고 iterators provided by Jena을 사용하여 테이블을 구성하는 것입니다.

관련 문제