2014-04-15 2 views
1

일부 도움주세요.Sparql 쿼리 방법

+1

당신은이 질문에 많은 것을 요구하고 있으며, 필요한 것이 모두 분명하지 않습니다. Jena가'service' 키워드에 대한 지원을 이용하여 외부 엔드 포인트를 쿼리하거나, 다운로드 가능한 경우 LinkedMDB 데이터를 다운로드하여 로컬로 쿼리 할 수 ​​있습니다. 원하지 않는다면 여기 Fuseki를 사용할 필요가 없습니다. SPARQL 쿼리를 실행하기 위해 Java 코드를 작성하거나 Fuseki 인스턴스에 데이터를로드하고 그런 식으로 쿼리하거나 Jena에 번들 된 명령 줄 도구를 사용할 수 있습니다. –

답변

1

LinkedMDB이를 노출 D2R Server을 사용

지금까지 내가 ARQ (명령 행)와 예나를 사용하는 방법을 알고하는 query.rq 파일에 쿼리를 작성하고 다음 명령을 사용하여 쿼리를 실행 xml 파일을로드 읽기 전용 SPARQL Endpoint (http://data.linkedmdb.org/sparql)

가 준수 경우, 엔드 포인트 쿼리 예나를 사용할 수 있습니다

final String service = "http://data.linkedmdb.org/sparql"; 
final Query query = QueryFactory.create("SELECT * WHERE { ?s ?p ?o } LIMIT 1"); 
final QueryExecution exec = QueryExecutionFactory.createServiceRequest(service, query); 
final ResultSet resultSet = exec.execSelect(); 
ResultSetFormatter.out(resultSet); 

이 작동하고 다음과 유사한 출력을 제공합니다 데이터를 추출 할 경우

------------------------------------------------------------------------------------------------------------------------------------------------------------ 
| s                | p           | o          | 
============================================================================================================================================================ 
| <http://data.linkedmdb.org/resource/film_distribution_medium/1> | <http://www.w3.org/2000/01/rdf-schema#label> | "Theatrical (Film Distribution Medium)" | 
------------------------------------------------------------------------------------------------------------------------------------------------------------ 

final Model localModel = ModelFactory.createDefaultModel(); 

final Query query = QueryFactory.create(
    "CONSTRUCT { ?s ?p ?o } WHERE {\n"+ 
    " SERVICE <http://data.linkedmdb.org/sparql> { SELECT * { ?s ?p ?o . } LIMIT 1 } \n"+ 
    "}" 
); 

final QueryExecution exec = QueryExecutionFactory.create(query, localModel); 
exec.execConstruct(localModel); 
localModel.write(System.out, "N3"); 
: 다른 모델에 저장하면, 다음 Federated Query 그렇게 할 적절한 방법이 될 것입니다3210

이 출력물에서 보여 주듯이, 우리가 생성 쿼리 중에 빌드 한 트리플은 로컬 모델에 저장됩니다.

<http://data.linkedmdb.org/resource/film_distribution_medium/1> 
     <http://www.w3.org/2000/01/rdf-schema#label> 
       "Theatrical (Film Distribution Medium)" . 

당신은 당신이 자바에서 포석에 액세스하기위한 any number of methods을 사용할 수 있습니다, 오히려 로컬 모델보다 데이터 저장으로 포석을 사용하려는 경우. 쿼리의 구조를 적절하게 조정하면됩니다.

예를 들어 자신의 새 데이터를 수정하려면 설명서에서 UpdateRemote.execute을 사용하여 업데이트 쿼리를 실행해야하며 두 번째 예와 같이 페더레이션 쿼리 (SERVICE)가 있어야합니다.