Contents |
Virtuoso ships with an executable called isql-vt. Just running that executable should connect you to virtuoso.
If you distribution does not provide the corresponding executable or if it doesn't work for you. Try this script -
#!/bin/bash filename=`ps aux | grep virtuoso-t | grep -v grep | sed -e 's/.*\/tmp\///;s/ini.*/ini/'` port=$(grep ServerPort /tmp/$filename | sed -e 's/.*=//') exec isql-vt -S $port
If for some reason you want to run queries directly on virtuoso, you'll need to connect to virtuoso via isql-vt and then type in the query. From 4.10, we use virtuoso's inbuilt prefix expansion, so you don't need to care about the prefixes.
SQL> sparql SELECT ?r ?name WHERE { ?r nco:fullname ?name . };
Virtuoso internally uses a relational database to store the triples. It contains the following tables -
Read http://docs.openlinksw.com/virtuoso/rdfdatarepresentation.html to properly understand how virtuoso stores the data internally.
Virtuoso has 2 main types - IRI_ID, which is the data type of the graph, subject and predicate. IRI_ID are of the form "#i25". In order to convert an integer to an IRI_ID, use the "iri_id_from_num( int )" function, and the "iri_id_num( iri_id )" to convert an IRI_ID to an integer. In order to convert an IRI_ID to its string representation use the following functions "id_to_iri( iri_id, int )", and "iri_to_id( string, int )". The second integer option should be 0, unless you want the iri/id to be created if it doesn't exist.
Apart from directly running SQL and SPARQL queries, virtuoso also provides some additional commands, which are listed over here.
The status() function can be used to return the current running queries on virtuoso.
The sparql_to_sql_text() function can be used to convert a SPARQL query directly to the SQL it would be executed as.
VARCHAR sparql_to_sql_text ( IN squery VARCHAR );
Example -
SQL> SELECT sparql_to_sql_text('prefix nco: <http://www.semanticdesktop.org/ontologies/2007/03/22/nco#> select ?r ?name where { ?r nco:fullname ?name . }'); SPARQL_TO_SQL_TEXT VARCHAR _______________________________________________________________________________ SELECT __id2i ( "s_1_0-t0"."S" ) AS "r", __ro2sq ( "s_1_0-t0"."O" ) AS "name" FROM DB.DBA.RDF_QUAD AS "s_1_0-t0" WHERE "s_1_0-t0"."P" = __i2idn ( __bft( 'http://www.semanticdesktop.org/ontologies/2007/03/22/nco#fullname' , 1)) OPTION (QUIETCAST) 1 ROWS. -- 1 msec.
It's very useful in debugging why many sparql queries are taking so long.