2014-12-14 2 views
-1

FedX를 사용하여 원격 연합을 만들려고했습니다. 아래는 제 코드입니다. 첫 번째 트리플 패턴은 "시맨틱 웹 개밥"SPARQL 엔드 포인트에서 실행될 때 결과를 제공하고 두 번째 트리플 패턴은 DBPedia SPARQL 엔드 포인트에서 실행됩니다. 아무도 친절하게 코드에 무엇이 잘못되었는지 설명 할 수 있습니까? 나는 쿼리를 시도하고 406 오류가 발생했습니다. 프록시없이 인터넷에 연결하고 있습니다.FedX를 사용하여 원격 SPARQL 끝점 쿼리

package Query; 

import java.net.Authenticator; 
import java.net.PasswordAuthentication; 

import org.openrdf.query.QueryLanguage; 
import org.openrdf.query.TupleQuery; 
import org.openrdf.query.TupleQueryResult; 
import org.openrdf.repository.Repository; 

import com.fluidops.fedx.Config; 
import com.fluidops.fedx.FedXFactory; 
import com.fluidops.fedx.FederationManager; 

import java.util.Arrays; 

public class QueryFedX { 

    public static void main(String[] args) { 

     try 
     { 
      Config.initialize(); 
      Repository repo = FedXFactory.initializeSparqlFederation(Arrays.asList(
        "http://dbpedia.org/sparql", 
        "http://data.semanticweb.org/sparql" 
        )); 
      String q = "SELECT ?y ?z WHERE { <http://data.semanticweb.org/organization/university-of-oxford> <http://www.w3.org/2000/01/rdf-schema#label> ?z . ?y <http://www.wikidata.org/entity/P373> ?z .}"; 
      TupleQuery query = repo.getConnection().prepareTupleQuery(QueryLanguage.SPARQL, q); 
      TupleQueryResult res = query.evaluate(); 

      while (res.hasNext()) { 
       System.out.println(res.next()); 
      } 

      FederationManager.getInstance().shutDown(); 
      System.out.println("Done."); 
      System.exit(0); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

} 
+0

는 HTTP (406)를 나타내는 하나의 클라이언트가 요구되는 구문 형식을 제공 할 수 없습니다. 어떤 엔드 포인트가 오류를 일으키는 지 알아 내려고 시도 했습니까? FedEx 연맹에서이 코드를 하나의 엔드 포인트 만 실행하면됩니까? –

+3

또한 귀하의 프로필을 신속하게 살펴 보았을 때 많은 질문을 던졌지 만 도움이되는 답변을 받아들이는 데 어려움을 겪지 않았던 것 같습니다. 그 문제를 해결하고 싶을 수도 있습니다. –

+0

안녕하세요 Jeen, 공헌 할 수 없기 대단히 죄송합니다. 나는 그것을 미래에 치료할 것이다. 나는 두 종점으로 노력하고 있었고 두 종점 모두에서 "select? x where {? x? y? z.}"라는 결과를 주었다. 그러나 두 종점에서 실행하려고 할 때, 406 오류. 원격 엔드 포인트에서이 동작을 이해할 수 없습니까? –

답변

1

우리가 이미 설명한 같은 문제로 실행하는 것 같습니다 [1] [2] : 최근 공공 DBpedia 엔드 포인트는 SPARQL은 더 이상 쿼리를 ASK 허용하지에 대한 권한을 변경했습니다. FedX는 소스 선택을위한 SPARQL ASK 쿼리에 의존하기 때문에 HTTP 오류가 표시됩니다.

FedX 3.1에서는이 문제 ([2] 참조)를 해결했으며 선택적으로 SELECT 쿼리를 사용하여 소스를 결정했습니다. 이미 FedEx 3.1을 사용하고 있습니까? 자세한 내용은 번들 된 설명서 및 참조 된 스레드를 살펴보십시오. 또한 문제가 해결되는지 알려 주시기 바랍니다.

참조

엔드 포인트

[1] https://groups.google.com/forum/#!topic/iwb-discussion/Fb6SwQRWdv4

[2] https://groups.google.com/forum/#!topic/iwb-discussion/aIHtzvNk4v0