3

过去几个小时,我在 Google 上搜索有关如何使用 virtuoso 服务器(开源版本)配置 RDF 存储的教程或指南。

我有使用 Protégé 软件创建的 RDF 文件。如何将此文件添加到 virtuoso 服务器并配置一个端点,以便能够通过 Jena 或其他此类 API 插入/更新或查询数据。

4

2 回答 2

3

最简单的方法可能是本文档页面 HTTP PUT using Content-Type: application/rdf+xml的第 (16.8.3) 点上的解释。这种机制基本上运行HTTP PUT将您的文件发送到三重存储。

curl -T your_file.rdf entity_uri_to_store_file -u user:pass

想象一下entity_uri_to_store_file您要保存该文件的表。

因此,假设您的文件是 ontology1.owl 并且您想将其保存在http://myorganisation.com/ontologies/ontology1您的命令的实体中,然后看起来像...

curl -T ontology1.owl http://myorganisation.com/ontologies/ontology1 -u user:pass

注意:如果您运行的是 Windows 机器,您可以curl此处安装。

之后查询数据...您也可以使用curl.

curl -F "query=YOUR SPARQL QUERY" http://your.virtuososerver.org/sparql

请注意,您必须使用SPARQL来访问数据。

在 Jena 的情况下,您必须通过命令行使用Jena ARQ ...

java -cp ... arq.query --service 'hhttp://your.virtuososerver.org/sparql' 'SELECT * WHERE {?s ?p ?o}'

或通过使用API以编程方式...

import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.sparql.engine.http.QueryExceptionHTTP;

public class QueryTest {

public static void main(String[] args) {
    String service = "http://your.virtuososerver.org/sparql";
    String query = "SELECT * WHERE {?s ?p ?o}";
    QueryExecution qe = QueryExecutionFactory.sparqlService(service, query);
    try {
       ResultSet results = qe.execSelect() ;
       for ( ; results.hasNext() ; ) {
           QuerySolution soln = results.nextSolution() ;
           RDFNode x = soln.get("s") ;
           RDFNode r = soln.get("p") ; 
           RDFNode l = soln.get("o") ;   
       }
    } catch (Exception e) {
        System.out.println("Query error:"+e);
    } finally {
        qe.close();
    }
 }

只需记住将变量service指向您的 virtuoso 服务器正在侦听的位置。

于 2011-04-04T08:19:32.377 回答
2

在 Virtuoso Conductor (http:cname:8890/conductor) 中,您可以转到“RDF -> RDF Store Upload”选项卡,您可以在其中从文件系统或 URL 位置上传 RDF 数据集文件。

Virtuoso Jena Provider可用于使用 Jena Fanework 查询 Virtuoso Quad Store 。

于 2011-04-04T20:26:31.073 回答