Конечная точка вернула Content-Type: text / html, который не распознается для запросов SELECT - PullRequest
0 голосов
/ 20 февраля 2019

Это оригинальный вопрос (Это вторая часть).

Я использую HyperGraphQL для запроса EBI-RDF sparql конечная точка на основе этого учебного пособия .

Когда я выполняю этот запрос GraphQL, чтобы получить родителей GO_0044727:

{
  Class_GET_BY_ID(uris:[
    "http://purl.obolibrary.org/obo/GO_0044727"]) {
    id
    label
    subClassOf {
      id
      label
      subClassOf {
        id
        label
        subClassOf {  # <--- 4th sub level
          id
          label
        }
      }
    }
  }
}

Я не получил результатов:

{
  "extensions": {},
  "data": {
    "@context": {
      "_type": "@type",
      "_id": "@id",
      "label": "http://www.w3.org/2000/01/rdf-schema#label",
      "id": "http://www.geneontology.org/formats/oboInOwl#id",
      "Class_GET_BY_ID": "http://hypergraphql.org/query/Class_GET_BY_ID",
      "subClassOf": "http://www.w3.org/2000/01/rdf-schema#subClassOf"
    },
    "Class_GET_BY_ID": []
  },
  "errors": []
}

В журналах я получил ошибку:

java.util.concurrent.ExecutionException: org.apache.jena.query.QueryException: Endpoint returned Content-Type: text/html which is not rcognized for SELECT queries
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at org.hypergraphql.datafetching.services.SPARQLEndpointService.iterateFutureResults(SPARQLEndpointService.java:86)
    at org.hypergraphql.datafetching.services.SPARQLEndpointService.executeQuery(SPARQLEndpointService.java:69)
    at org.hypergraphql.datafetching.ExecutionTreeNode.generateTreeModel(ExecutionTreeNode.java:357)
    at org.hypergraphql.datafetching.FetchingExecution.call(FetchingExecution.java:21)
    at org.hypergraphql.datafetching.FetchingExecution.call(FetchingExecution.java:8)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.jena.query.QueryException: Endpoint returned Content-Type: text/html which is not rcognized for SELECT queries
    at org.apache.jena.sparql.engine.http.QueryEngineHTTP.execResultSetInner(QueryEngineHTTP.java:377)
    at org.apache.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:344)
    at org.hypergraphql.datafetching.SPARQLEndpointExecution.call(SPARQLEndpointExecution.java:81)
    at org.hypergraphql.datafetching.SPARQLEndpointExecution.call(SPARQLEndpointExecution.java:33)
    ... 4 more

Запрос SPARQL, сгенерированный на основе запроса GraphQL выше:

SELECT * 
WHERE { 
    GRAPH <http://rdf.ebi.ac.uk/dataset/go> { 
        VALUES ?x_1 { <http://purl.obolibrary.org/obo/GO_0044727> } 
        ?x_1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> . 
        OPTIONAL { 
            ?x_1 <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?x_1_1 .?x_1_1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> . 
            OPTIONAL { ?x_1_1 <http://www.w3.org/2000/01/rdf-schema#label> ?x_1_1_1 . }  
                OPTIONAL { ?x_1_1 <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?x_1_1_2 .?x_1_1_2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> . 
                OPTIONAL { ?x_1_1_2 <http://www.geneontology.org/formats/oboInOwl#id> ?x_1_1_2_1 . }  
                OPTIONAL { 
                    ?x_1_1_2 <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?x_1_1_2_2 .?x_1_1_2_2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> . 
                    OPTIONAL { ?x_1_1_2_2 <http://www.w3.org/2000/01/rdf-schema#label> ?x_1_1_2_2_1 . }  
                    OPTIONAL { ?x_1_1_2_2 <http://www.geneontology.org/formats/oboInOwl#id> ?x_1_1_2_2_2 . }  
                }  
                OPTIONAL { ?x_1_1_2 <http://www.w3.org/2000/01/rdf-schema#label> ?x_1_1_2_3 . }  
            }  
            OPTIONAL { ?x_1_1 <http://www.geneontology.org/formats/oboInOwl#id> ?x_1_1_3 . }  
        }  
        OPTIONAL { ?x_1 <http://www.w3.org/2000/01/rdf-schema#label> ?x_1_2 . }  
        OPTIONAL { ?x_1 <http://www.geneontology.org/formats/oboInOwl#id> ?x_1_3 . }  
    }  
}

Я попытался @AKSW ответить здесь , добавив ?force в файл config.json (строка: "url": "http://www.ebi.ac.uk/rdf/services/sparql?force"), но это не сработало.

Я подумал, что, возможно, запросслишком длинный, но когда я проверил запрос , он не дал никакой ошибки.

1 Ответ

0 голосов
/ 22 февраля 2019

Единственное решение, которое я нашел, - запросить онтологию Гена с помощью локального RDF-файла :

  1. I Загружено go.owl file.
  2. Конвертировал его в Черепаху с помощью конвертера онтологий .
     java -jar ont-converter.jar -i go.owl -o go_ont.ttl -of ttl -v
    
  3. Настроенный HyperGraphQL:

    Файл goconfig.json:

    {
        "name": "go-hgql",
        "schema": "schemas/goschema.graphql",
        "server": {
            "port": 8082,
            "graphql": "/graphql",
            "graphiql": "/graphiql"
        },
        "services": [
            {
                "id": "go-local",
                "type": "LocalModelSPARQLService",
                "filepath": "go_ont.ttl",  # <----- the TTL file
                "filetype": "TTL"
            }
        ]
    }
    

    goschema.graphql:

    type __Context {
        Class:          _@href(iri: "http://www.w3.org/2002/07/owl#Class")
        id:             _@href(iri: "http://www.geneontology.org/formats/oboInOwl#id")
        label:          _@href(iri: "http://www.w3.org/2000/01/rdf-schema#label")
        subClassOf:     _@href(iri: "http://www.w3.org/2000/01/rdf-schema#subClassOf")
    }
    
    type Class @service(id:"go-local") {
        id: [String] @service(id:"go-local")
        label: [String] @service(id:"go-local")
        subClassOf: [Class] @service(id:"go-local")
    }
    
  4. Запустил HyperGraphQL с помощью файла конфигурации:

    java -jar build/libs/hypergraphql-1.0.3-exe.jar --config hgql/config/goconfig.json
    
  5. Затем выполнил запрос, и он прошел без проблем, я мог добавить столько подуровней, сколько мне нужно.
...