Difference between revisions of "Projects/Nepomuk/VirtuosoInternal"

Jump to: navigation, search
(basic structure)
 
(Marked this version for translation)
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Connecting directly to virtuoso =
+
<languages />
 +
<translate>
  
via isql
+
== Connecting directly to virtuoso == <!--T:1-->
  
= List of tables =
+
<!--T:2-->
is a relational database and what not
+
Virtuoso ships with an executable called <tt>isql-vt</tt>. Just running that executable should connect you to virtuoso.
  
= Default Indexes =
+
<!--T:3-->
 +
If you distribution does not provide the corresponding executable or if it doesn't work for you. Try this script -
 +
<syntaxhighlight lang="bash">
 +
#!/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
 +
</syntaxhighlight>
  
= Common Commands =
+
== Running queries directly == <!--T:4-->
== status ==
+
 
== sparql_to_sql_text ==
+
<!--T:5-->
 +
If for some reason you want to run queries directly on virtuoso, you'll need to connect to virtuoso via <tt>isql-vt</tt> 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.
 +
 
 +
=== Example === <!--T:6-->
 +
 
 +
<!--T:7-->
 +
<syntaxhighlight lang="sql">
 +
SQL> sparql select ?r ?name where { ?r nco:fullname ?name . };
 +
</syntaxhighlight>
 +
 
 +
== List of tables == <!--T:8-->
 +
 
 +
<!--T:9-->
 +
Virtuoso internally uses a relational database to store the triples. It contains the following tables -
 +
 
 +
<!--T:10-->
 +
* DB.DBA.RDF_QUAD -- The main table which contains all the statements. It contains four rows "S", "P", "O" and "G" for the subject, predicate, object and graph.
 +
* DB.DBA.RDF_IRI
 +
* DB.DBA.RDF_DATATYPE - Contains all the literal data types which are stored.
 +
* DB.DBA.RDF_PREFIX
 +
* DB.DBA.RDF_OBJ
 +
* DB.DBA.RDF_LANGUAGE
 +
 
 +
<!--T:11-->
 +
Read http://docs.openlinksw.com/virtuoso/rdfdatarepresentation.html to properly understand how virtuoso stores the data internally.
 +
 
 +
<!--T:12-->
 +
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.
 +
 
 +
== Default Indexes == <!--T:13-->
 +
 
 +
== Common Commands == <!--T:14-->
 +
 
 +
<!--T:15-->
 +
Apart from directly running SQL and SPARQL queries, virtuoso also provides some additional commands, which are listed over here.
 +
 
 +
=== status === <!--T:16-->
 +
The [http://docs.openlinksw.com/virtuoso/fn_status.html status()] function can be used to return the current running queries on virtuoso.
 +
 
 +
 
 +
=== sparql_to_sql_text === <!--T:17-->
 +
 
 +
<!--T:18-->
 +
The [http://docs.openlinksw.com/virtuoso/fn_sparql_to_sql_text.html sparql_to_sql_text()] function can be used to convert a SPARQL query directly to the SQL it would be executed as.
 +
 
 +
<!--T:19-->
 +
<syntaxhighlight lang="sql">
 +
varchar sparql_to_sql_text
 +
( in squery varchar );
 +
</syntaxhighlight>
 +
 
 +
 
 +
<!--T:20-->
 +
Example -
 +
<syntaxhighlight lang="sql">
 +
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
 +
_______________________________________________________________________________
 +
 
 +
<!--T:21-->
 +
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)
 +
 
 +
<!--T:22-->
 +
1 Rows. -- 1 msec.
 +
</syntaxhighlight>
 +
 
 +
 
 +
<!--T:23-->
 +
It's very useful in debugging why many sparql queries are taking so long.
 +
 
 +
<!--T:24-->
 +
[[Category:Documentation]]
 +
[[Category:Development]]
 +
[[Category:Tutorials]]
 +
</translate>

Latest revision as of 17:34, 13 December 2012

Other languages:English 100%

Contents

[edit] Connecting directly to virtuoso

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

[edit] Running queries directly

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.

[edit] Example

SQL> sparql SELECT ?r ?name WHERE { ?r nco:fullname ?name . };

[edit] List of tables

Virtuoso internally uses a relational database to store the triples. It contains the following tables -

  • DB.DBA.RDF_QUAD -- The main table which contains all the statements. It contains four rows "S", "P", "O" and "G" for the subject, predicate, object and graph.
  • DB.DBA.RDF_IRI
  • DB.DBA.RDF_DATATYPE - Contains all the literal data types which are stored.
  • DB.DBA.RDF_PREFIX
  • DB.DBA.RDF_OBJ
  • DB.DBA.RDF_LANGUAGE

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.

[edit] Default Indexes

[edit] Common Commands

Apart from directly running SQL and SPARQL queries, virtuoso also provides some additional commands, which are listed over here.

[edit] status

The status() function can be used to return the current running queries on virtuoso.


[edit] sparql_to_sql_text

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.


This page was last modified on 13 December 2012, at 17:34. This page has been accessed 3,144 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal