使用Virtuoso设置RDF本体

时间:2011-04-03 17:31:13

标签: java rdf jena virtuoso

我在google上搜索了有关如何使用virtuoso服务器(开源版本)配置RDF存储的教程或指南。

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

2 个答案:

答案 0 :(得分:3)

最简单的方法可能是解释documentation page 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框,则可以从here安装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服务器正在监听的位置。

答案 1 :(得分:2)

从Virtuoso Conductor(http:cname:8890 / conductor),您可以转到“RDF - > RDF商店上传”标签,您可以在其中上传文件系统或网址位置的RDF数据集文件。

Virtuoso Jena Provider可用于使用Jena Franework查询Virtuoso Quad商店。