Hi,
so the story goes like that:
you need to first load a triple table with the command:
create table triples_tables(subject integer, property integer, object integer);
copy <n> records into triples_table from <file> using (...)
as described by Sjoerd.
For "forcing" Monet to use a vertical partition schema you have to do
the following:
for each property you will define a new table as follows:
create table prop1(subject integer, object integer);
create table prop2(subject integer, object integer);
create table prop3(subject integer, object integer);
...
then to populate these tables you do for each property:
INSERT into prop1 SELECT subject, object FROM triples_table where
property=prop1 ORDER BY subject, object;
...
Now monet will have vertical partitioned tables and will know about
ordering thus doing merge joins whenever possible etc.
However, notice that I am using integers and not strings. I assume
that you actually have a dictionary where integers point to the
strings, otherwise nothing of this will work fast at query time
because you will always need to join string columns and the comparison
is too slow. So you will need to process a bit more your data before
you add them to monet:)
Take a look also at our paper
http://www.cwi.nl/htbin/ins1/publications?request=pdf&key=SiGoKeNeMa:VLDB:08
where we did a similar comparison.
Hope this helped, good luck
lefteris
On Wed, Oct 7, 2009 at 2:26 AM, Medha Atre
OK. I figured that must be the command after digging through the manuals. But for the vertically partitioned approach demonstrated in various research papers, I believe the end user has to manually load the RDF data split according to the predicates into different tables, which also requires that the SQL query being issued specifies these tables and joins across these tables as opposed to one big triple table.
Correct me if I am wrong.
Thanks.
Medha
On Tue, Oct 6, 2009 at 5:06 PM, Sjoerd Mullender
wrote: On 2009-10-06 17:59, Medha Atre wrote:
Hi,
Thanks for the reply.
At this point, all I am looking for is to load RDF NTriples data -- treated as a 3 column table -- into MonetDB using "vertical partitioning" to index the data nicely (as I read about MonetDB being used for the same in different research papers recently.. e.g. http://portal.acm.org/citation.cfm?id=1453856.1453927 RDF-3X etc). I am not really looking for a great support for different RDF formats (as the data has already been cleaned into NTriples format using rdflib), I want to check the correctness of the results generated using my own querying tool.
So can you please suggest me a method of treating the given RDF NTriples file as a simple "space separated" 3-column data file from which I can load the data into MonetDB creating the required indexes or "vertical partitions"?
Perhaps something like COPY <n> RECORDS INTO <table> FROM <file> USING DELIMITERS ' ','\n'; where <n> is the number of tuples, <table> is the name of a table that you created for this, and <file> is the full path name of the file (in single quotes).
Querying with SQL front end is fine with me!
Looking forward to your help.
Medha
------------------------------
Message: 5 Date: Tue, 6 Oct 2009 10:19:57 +0200 From: Lefteris
Subject: Re: [MonetDB-users] loading RDF data in MonetDB To: Communication channel for MonetDB users Message-ID: <852badbc0910060119x4f125a06qd5fc7ed0c56035c@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Hi,
there is a highly experimental module for MonetDB to load RDF data. This is not activated in the stable release, and in order to use it you will need to do some compilation on your own and possible report back any problems you have. If you are willing to jump deeper in the MonetDB experience I can guide you on how to do this. The module will read any RDF format supported by the rdflib library and create a triple store with appropriate indices. However, the only way to query the triple store at this point is through the SQL front-end.
regrads,
lefteris
On Tue, Oct 6, 2009 at 8:59 AM, Medha Atre
wrote: Hi,
I intend to use MonetDB for some of my experimental work using RDF data. I was wondering if there is an easy way to load RDF data (in NTriples format) in MonetDB making use of the column-wise vertical partitioning of the RDF data, based on properties/predicates in the RDF data.
Some pointers or help regarding this is much appreciated.
I am sorry if this is not the correct forum to post this message.
Thanks. Medha
------------------------------------------------------------------------------ Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference _______________________________________________ MonetDB-users mailing list MonetDB-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-users