Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';由于类型化文字(xsd:string)从Jena查询SPARQL,无法获得结果;_Java_Xsd_Sparql_Jena_String Literals - Fatal编程技术网

Java Can';由于类型化文字(xsd:string)从Jena查询SPARQL,无法获得结果;

Java Can';由于类型化文字(xsd:string)从Jena查询SPARQL,无法获得结果;,java,xsd,sparql,jena,string-literals,Java,Xsd,Sparql,Jena,String Literals,我让我的Virtuoso服务器运行已加载的本体,以下查询通过将其粘贴到web上sparql端点的文本字段来工作(ronto,由于安全原因我跳过了本体的前缀(对不起),但我确信它定义正确,因为查询可以工作,但返回空列表,这是一个问题): 输出是 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX owl:

我让我的Virtuoso服务器运行已加载的本体,以下查询通过将其粘贴到web上sparql端点的文本字段来工作(ronto,由于安全原因我跳过了本体的前缀(对不起),但我确信它定义正确,因为查询可以工作,但返回空列表,这是一个问题):

输出是

PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  owl:  <http://www.w3.org/2002/07/owl#>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>


SELECT  ?p
WHERE
  { ?s  ronto:isin        "id-XXXX" ;
        ronto:mainThemes  ?p
  }
PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  owl:  <http://www.w3.org/2002/07/owl#>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT  ?p
WHERE
  { ?s  ronto:isin        "id-XXXX" ;
        ronto:mainThemes  ?p
  }

-----
| p |
=====
-----
Running as a string
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

select ?p where {?s ronto:isin "id-XXXX"^^xsd:string; ronto:mainThemes ?p.}

PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  owl:  <http://www.w3.org/2002/07/owl#>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT  ?p
WHERE
  { ?s  ronto:isin        "id-XXXX" ;
        ronto:mainThemes  ?p
  }

-----
| p |
=====
-----

在RDF1.1中,不带
xsd:string
的字符串和带
xsd:string
的字符串是相同的RDF术语。不管您是否编写
^^xsd:string

ARQ打印不带
^^xsd:string
的查询,这用于远程SPARQL调用

看起来Virtuoso实例与RDF1.1不兼容

您可以在查询中尝试值表达式:

{ ?s ronto:isin ?X;
     ronto:mainThemes ?p.
  FILTER ( ?X = "id-XXXX"^^xsd:string)
}
它适用于RDF1.0和RDF1.1以及系统的混合


或者,直接使用
QueryEngineHTTP
,而不是
QueryExecutionFactory
。这允许应用程序传入一个字符串作为发送到远程端点的查询,而无需进行解析或检查。

谢谢,只有当我应用了筛选器并使用QueryEngineHTTP作为字符串传递查询时,它才起作用@安德斯,你救了我一天。
        <dependency>
            <groupId>org.apache.jena</groupId>
            <artifactId>jena-arq</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jena</groupId>
            <artifactId>jena-core</artifactId>
            <version>3.0.1</version>
        </dependency>
   public static void main(String[] args) {
        String isin = "id-XXXX";
        final ParameterizedSparqlString qs = new ParameterizedSparqlString(
                "select ?p where {?s ronto:isin ?isin^^xsd:string; ronto:mainThemes ?p.}");
        qs.setBaseUri(base);
        qs.setNsPrefix("owl", "http://www.w3.org/2002/07/owl#");
        qs.setNsPrefix("xsd", "http://www.w3.org/2001/XMLSchema#");
        qs.setNsPrefix("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
        qs.setNsPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");

        qs.setLiteral("isin", isin);

        System.out.println("Running as a query " +qs.asQuery());
        try (QueryExecution exec = QueryExecutionFactory.sparqlService(publicSparqlEndpoint, qs.asQuery())) {
            final ResultSet resultSet = exec.execSelect();
            System.out.println(exec.getQuery());
            ResultSetFormatter.out(resultSet);
        }
        System.out.println("Running as a string " + qs.toString());
        try (QueryExecution exec = QueryExecutionFactory.sparqlService(publicSparqlEndpoint, qs.toString())) {
            final ResultSet resultSet = exec.execSelect();
            System.out.println(exec.getQuery());
            ResultSetFormatter.out(resultSet);
        }
PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  owl:  <http://www.w3.org/2002/07/owl#>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>


SELECT  ?p
WHERE
  { ?s  ronto:isin        "id-XXXX" ;
        ronto:mainThemes  ?p
  }
PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  owl:  <http://www.w3.org/2002/07/owl#>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT  ?p
WHERE
  { ?s  ronto:isin        "id-XXXX" ;
        ronto:mainThemes  ?p
  }

-----
| p |
=====
-----
Running as a string
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

select ?p where {?s ronto:isin "id-XXXX"^^xsd:string; ronto:mainThemes ?p.}

PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  owl:  <http://www.w3.org/2002/07/owl#>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT  ?p
WHERE
  { ?s  ronto:isin        "id-XXXX" ;
        ronto:mainThemes  ?p
  }

-----
| p |
=====
-----
public static void main(String[] args) {
    String isin = "id-XXXX";
    final ParameterizedSparqlString qs = new ParameterizedSparqlString(
            "select ?p where {?s ronto:isin ?X; ronto:mainThemes ?p. FILTER (?X= ?isin^^xsd:string)}");
    qs.setBaseUri(base);
    qs.setNsPrefix("owl", "http://www.w3.org/2002/07/owl#");
    qs.setNsPrefix("xsd", "http://www.w3.org/2001/XMLSchema#");
    qs.setNsPrefix("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
    qs.setNsPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
    qs.setNsPrefix("ronto", "....");

    qs.setLiteral("isin", isin);

    System.out.println("Running as a string " + qs.toString());
    try (QueryEngineHTTP exec = new QueryEngineHTTP(publicSparqlEndpoint, qs.toString())) {
        final ResultSet resultSet = exec.execSelect();
        System.out.println(exec.getQuery());
        ResultSetFormatter.out(resultSet);
    }
}
{ ?s ronto:isin ?X;
     ronto:mainThemes ?p.
  FILTER ( ?X = "id-XXXX"^^xsd:string)
}