Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Sparql SPARUL查询,使用Jena API删除大多数图形_Sparql_Virtuoso_Apache Jena - Fatal编程技术网

Sparql SPARUL查询,使用Jena API删除大多数图形

Sparql SPARUL查询,使用Jena API删除大多数图形,sparql,virtuoso,apache-jena,Sparql,Virtuoso,Apache Jena,作为单元测试前后清理过程的一部分,我正在尝试使用ApacheJena清除本地triple store中包含的大多数图形。我认为应该这样做。首先,检索要删除的图形URI;然后我执行一个SPARUL Drop操作 String sparqlEndpointUsername = ...; String sparqlEndpointPassword = ...; String sparqlQueryString = ...; // Returns the URIs of the graphs to be

作为单元测试前后清理过程的一部分,我正在尝试使用ApacheJena清除本地triple store中包含的大多数图形。我认为应该这样做。首先,检索要删除的图形URI;然后我执行一个SPARUL Drop操作

String sparqlEndpointUsername = ...;
String sparqlEndpointPassword = ...;
String sparqlQueryString = ...; // Returns the URIs of the graphs to be deleted

HttpAuthenticator authenticator = new SimpleAuthenticator(sparqlEndpointUsername,
            sparqlEndpointPassword.toCharArray());
ResultSet resultSetToReturn = null;
try (QueryEngineHTTP queryEngine = new QueryEngineHTTP(sparqlEndpoint, sparqlQueryString, authenticator)) {
    resultSetToReturn = queryEngine.execSelect();
    resultSetToReturn = ResultSetFactory.copyResults(resultSetToReturn);

    while(resultSetToReturn.hasNext()){
        String graphURI = resultSetToReturn.next().getResource("?g").getURI();

        UpdateRequest request = UpdateFactory.create() ;
        request.add("DROP GRAPH <"+graphURI+">");

        Dataset dataset = ...; // how can I create a default dataset pointing to my local virtuoso installation?

        // And perform the operations.
        UpdateAction.execute(request, dataset) ;

    }
}
;
String sparqlenpointusername=。。。;
字符串sparqlEndpointPassword=。。。;
字符串sparqlQueryString=…;//返回要删除的图形的URI
HttpAuthenticator authenticator=新的SimpleAuthenticator(sparqlEndpointUsername,
sparqlendpassword.toCharArray());
ResultSet resultSetToReturn=null;
try(QueryEngineHTTP queryEngine=newqueryenginehttp(sparqlenpoint,sparqlQueryString,authenticator)){
resultSetToReturn=queryEngine.execSelect();
resultSetToReturn=ResultSetFactory.copyResults(resultSetToReturn);
while(resultSetToReturn.hasNext()){
String graphURI=resultSetToReturn.next().getResource(“?g”).getURI();
UpdateRequest请求=UpdateFactory.create();
请求。添加(“下拉图”);
Dataset Dataset=…;//如何创建指向本地virtuoso安装的默认数据集?
//并执行操作。
执行(请求、数据集);
}
}
;
问题:

  • 如中所示,ARQ需要一个数据集来操作。如何创建指向本地Virtuoso安装的数据集以进行更新操作
  • 除了我的方法,也许还有别的选择吗?使用另一种方法(除了耶拿)会更好吗

  • 请注意,我不是在试图删除所有图表。我只删除名称通过开头(第3行)定义的SPARQL查询返回的图形。

    您的问题似乎是针对Virtuoso的,旨在删除所有RDF数据,因此您可以使用

    这不是SPARQL/SPARUL查询;它通常通过SQL连接发布——可以是JDBC、ODBC、ADO.NET、OLE DB、iSQL等

    也就是说,当您通过SPARUL特权连接进行连接时,您应该能够使用--

    (通过非特权连接(如默认SPARQL端点)执行此操作将导致出现类似以下错误的错误:
    Virtuoso 37000 error SP031:SPARQL编译器:函数bif:RDF_GLOBAL_RESET(),由于安全限制,无法在SPARQL查询的文本中使用


    (ObDisclaimer:products,and employee me。)

    您的问题似乎是针对Virtuoso的,旨在删除所有RDF数据,以便您可以使用

    这不是SPARQL/SPARUL查询;它通常通过SQL连接发布——可以是JDBC、ODBC、ADO.NET、OLE DB、iSQL等

    也就是说,当您通过SPARUL特权连接进行连接时,您应该能够使用--

    (通过非特权连接(如默认SPARQL端点)执行此操作将导致出现类似以下错误的错误:
    Virtuoso 37000 error SP031:SPARQL编译器:函数bif:RDF_GLOBAL_RESET(),由于安全限制,无法在SPARQL查询的文本中使用


    (ObDisclaimer:products,and employees me。)

    您可以构建一个SPARQL更新请求:

    DROP GRAPH <g1> ;
    DROP GRAPH <g2> ;
    DROP GRAPH <g3> ;
    ... ;
    
    DROP图;
    落差图;
    落差图;
    ... ;
    

    因为在SPARQL更新中,一个HTTP请求可以是多个更新操作,由
    分隔

    您可以生成单个SPARQL更新请求:

    DROP GRAPH <g1> ;
    DROP GRAPH <g2> ;
    DROP GRAPH <g3> ;
    ... ;
    
    DROP图;
    落差图;
    落差图;
    ... ;
    

    因为在SPARQL更新中,一个HTTP请求可以是多个更新操作,由
    分隔

    在没有
    下拉菜单的情况下。。。其中…
    在SPARQL更新中,我认为这是您所能做的最好的了。jena代码可能需要清理一点,但基本上您需要执行“graphs to remove”查询,然后进行更新。@user205512非常感谢您的时间。你能为第一个问题提供一个提示/答案吗。可移植的答案是通过sparql http协议,我认为Virtuoso支持该协议,可能会起作用?更正:可移植的答案是通过sparql http协议,我认为Virtuoso支持该协议。对于查询和更新,我想?在没有
    下拉菜单的情况下。。。其中…
    在SPARQL更新中,我认为这是您所能做的最好的了。jena代码可能需要清理一点,但基本上您需要执行“graphs to remove”查询,然后进行更新。@user205512非常感谢您的时间。你能为第一个问题提供一个提示/答案吗。可移植的答案是通过sparql http协议,我认为Virtuoso支持该协议,可能会起作用?更正:可移植的答案是通过sparql http协议,我认为Virtuoso支持该协议。对于我想的查询和更新?非常感谢您的回答。然而,我并没有真正删除所有的图。我正在删除通过开头(第3行)中定义的SPARQL查询返回名称的图形。非常感谢您的回答。然而,我并没有真正删除所有的图。我正在删除名称通过开头(第3行)中定义的SPARQL查询返回的图。