<?xml version="1.0" encoding="UTF-8" ?>
<!--ATOM based XML document generated By OpenLink Virtuoso-->
<atom:feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:vi="http://www.openlinksw.com/weblog/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/">
<atom:id>http://www.openlinksw.com/blog/vdb/blog/</atom:id>
<atom:title>OpenLink Virtuoso (Product Blog)</atom:title>
<atom:link href="http://www.openlinksw.com/blog/vdb/blog/" type="text/html" rel="alternate" />
<atom:link href="http://www.openlinksw.com/weblog/vdb/136/gems/atom_tag_arch.xml?:tag=postgres&amp;:bid=136" type="application/atom+xml" rel="self" />
<atom:subtitle>A great place to track Virtuoso&#39;s rapid evolution.</atom:subtitle>
 <atom:author>
  <atom:name>kidehen@openlinksw.com</atom:name>
  <atom:email>kidehen@openlinksw.com</atom:email>
  </atom:author>
<atom:updated>2009-11-23T11:53:28Z</atom:updated>
<atom:generator>Virtuoso Universal Server 05.12.3041</atom:generator>
<atom:logo>http://www.openlinksw.com/weblog/public/images/vbloglogo.gif</atom:logo>
 <atom:entry>
  <atom:title>Some Interesting VLDB 2009 Papers (2 of 5)</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2009-09-01#1579</atom:id>
  <atom:published>2009-09-01T15:46:14Z</atom:published>
  <atom:updated>2009-09-01T17:32:45.000003-04:00</atom:updated>
  <atom:content type="html">&lt;h3&gt; &lt;a href=&quot;http://dbpedia.org/resource/Intel_Corporation&quot; id=&quot;link-id0x449c5e0&quot;&gt;Intel&lt;/a&gt; on &lt;a href=&quot;http://dbpedia.org/resource/Hash_join&quot; id=&quot;link-id0x4e82430&quot;&gt;Hash Join&lt;/a&gt; &lt;/h3&gt; &lt;p&gt;Intel and &lt;a href=&quot;http://dbpedia.org/resource/Oracle_Database&quot; id=&quot;link-id0x10bae5e8&quot;&gt;Oracle&lt;/a&gt; had measured hash and sort merge joins on Intel Core i7. The result was that hash join with both tables partitioned to match &lt;a href=&quot;http://dbpedia.org/resource/Central_processing_unit&quot; id=&quot;link-id0x3827798&quot;&gt;CPU&lt;/a&gt; &lt;a href=&quot;http://dbpedia.org/resource/Cache&quot; id=&quot;link-id0x2545b978&quot;&gt;cache&lt;/a&gt; was still the best but that sort/merge would catch up with more &lt;a href=&quot;http://dbpedia.org/resource/SIMD&quot; id=&quot;link-id0x32f4e40&quot;&gt;SIMD&lt;/a&gt; instructions in the future.&lt;/p&gt; &lt;p&gt;We should probably experiment with this but the most important partitioning of hash joins is still between cluster nodes. Within the process, we will see. The tradeoff of doing all in cache-sized partitions is larger intermediate results which in turn will impact the working set of disk pages in RAM. For one-off queries this is OK; for online use this has an effect.&lt;/p&gt; &lt;h3&gt;1000 TABLE Queries&lt;/h3&gt; &lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/SAP_AG&quot; id=&quot;link-id0x4ed7710&quot;&gt;SAP&lt;/a&gt; presented a paper about &lt;a href=&quot;http://dbpedia.org/resource/Federated_database_system&quot; id=&quot;link-id0x26827fd8&quot;&gt;federating relational databases&lt;/a&gt;. Queries would be expressed against VIEWs defined over remote TABLEs, UNIONed together and so forth. Traditional methods of &lt;a href=&quot;http://dbpedia.org/resource/Program_optimization&quot; id=&quot;link-id0x3838888&quot;&gt;optimization&lt;/a&gt; would run out of memory; a single 1000 TABLE plan is already a big thing. Enumerating multiple variations of such is not possible in practice. So the solution was to plan in two stages â first arrange the subqueries and derived TABLEs, and then do the JOIN orders locally. Further, local JOIN orders could even be adjusted at run time based on the actual &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x26033030&quot;&gt;data&lt;/a&gt;. Nice.&lt;/p&gt; &lt;h3&gt;Oracle Subqueries and New Implementation of LOBs&lt;/h3&gt; &lt;p&gt;Oracle presented some new &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x23a0eb48&quot;&gt;SQL&lt;/a&gt; optimizations, combining and inlining subqueries and derived TABLEs. We do fairly similar things and might extend the repertoire of tricks in the direction outlined by Oracle as and when the need presents itself. This further confirms that SQL and other query optimization is really an incremental collection of specially recognized patterns. We still have not found any other way of doing it.&lt;/p&gt; &lt;p&gt;Another interesting piece by Oracle was about their re-implementation of large object support, where they compared LOB loading to file system and raw device speeds.&lt;/p&gt; &lt;h3&gt; &lt;a href=&quot;http://dbpedia.org/resource/Amadeus_CRS&quot; id=&quot;link-id0x1566d470&quot;&gt;Amadeus CRS&lt;/a&gt; booking system, steady query time for arbitrary single table queries&lt;/h3&gt; &lt;p&gt;There was a paper about a memory-resident database that could give steady time for any kind of single-table scan query. The innovation was to not use indices, but to have one partition of the table per processor core, all in memory. Then each core would have exactly two cursors â one reading, the other writing. The write cursor should keep ahead of the read cursor. Like this, there would be no read/write contention on pages, no locking, no multiple threads splitting a tree at different points, none of the complexity of a multithreaded database engine. Then, when the cursor would hit a row, it would look at the set of queries or updates and add the result to the output if there was a result. The data indexes the queries, not the other way around. We have done something similar for detecting changes in a full text corpus but never thought of doing queries this way.&lt;/p&gt; &lt;p&gt;Well, we are all about JOINs so this is not for us, but it deserves a mention for being original and clever. And indeed, anything one can ask about a table will likely be served with great predictability.&lt;/p&gt; &lt;h3&gt; &lt;a href=&quot;http://dbpedia.org/resource/Greenplum&quot; id=&quot;link-id0x196b0538&quot;&gt;Greenplum&lt;/a&gt; &lt;/h3&gt; &lt;p&gt; &lt;a href=&quot;http://dbpedia.org/resource/Google&quot; id=&quot;link-id0x108f8878&quot;&gt;Google&lt;/a&gt;&amp;#39;s chief economist said that the winning career choice would be to pick a scarce skill that made value from something that was plentiful. For the 2010s this career is that of the statistician/data analyst. We&amp;#39;ve said it before â the next web is analytics for all. The Greenplum talk was divided between the Fox use case, with 200TB of data about ads, web site traffic, and other things, growing 5TB a day. The message was that cubes and drill down are passÃ©, that it is about complex statistical methods that have to run in the database, that the new kind of geek is the data geek, whose vocation it is to consume and spit out data, discover things in it, and so forth.&lt;/p&gt; &lt;p&gt;The technical part was about Greenplum, a SQL database running on a cluster with a &lt;a href=&quot;http://dbpedia.org/resource/PostgreSQL&quot; id=&quot;link-id0x3106d00&quot;&gt;PostgreSQL&lt;/a&gt; back-end. The interesting points were embedding &lt;a href=&quot;http://dbpedia.org/resource/MapReduce&quot; id=&quot;link-id0x17968370&quot;&gt;MapReduce&lt;/a&gt; into SQL, and using relational tables for arrays and complex data types â pretty much what we also do. Greenplum emphasized scale-out and found column orientation more like a nice-to-have.&lt;/p&gt; &lt;h3&gt; &lt;a href=&quot;http://dbpedia.org/resource/MonetDB&quot; id=&quot;link-id0x119f7948&quot;&gt;MonetDB&lt;/a&gt;, optimizing database for CPU cache&lt;/h3&gt; &lt;p&gt;The MonetDB people from &lt;a href=&quot;http://dbpedia.org/resource/National_Research_Institute_for_Mathematics_and_Computer_Science&quot; id=&quot;link-id0x3617658&quot;&gt;CWI&lt;/a&gt; in Amsterdam gave a 10 year best paper award talk about optimizing database for CPU cache. The key point was that if data is stored as columns, it ought also to be transferred as columns inside the execution engine. Materialize big chunks of state to cut down on interpretation overhead and use cache to best effect. They vector for CPU cache; we vector for scale-out, since the only way to ship operations is to ship many at a time. So we might as well vector also in single servers. This could be worth an experiment. Also we regularly visit the topic of &lt;a href=&quot;http://dbpedia.org/resource/Column-oriented_DBMS&quot; id=&quot;link-id0x38d43d8&quot;&gt;column storage&lt;/a&gt;. But we are not yet convinced that it would be better than row-style covering indices for &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0x17e25760&quot;&gt;RDF&lt;/a&gt; quads. But something could certainly be tried, given time.&lt;/p&gt;</atom:content>
 </atom:entry>
 <atom:entry>
  <atom:title>Comparison of Open Source Databases with TPC D Queries</atom:title>
  <atom:id>http://www.openlinksw.com/blog/vdb/blog/?date=2007-02-05#1132</atom:id>
  <atom:published>2007-02-05T11:44:34Z</atom:published>
  <atom:updated>2008-04-17T21:04:40-04:00</atom:updated>
  <atom:content type="html">&lt;div&gt; &lt;div style=&quot;display:none;&quot;&gt;Comparison of Open Source Databases with TPC D Queries&lt;/div&gt; &lt;p&gt; &lt;a href=&quot;http://www.openlinksw.com/dataspace/oerling/weblog/Orri%20Erling%27s%20Blog/1116&quot; id=&quot;link-id10598cc0&quot;&gt;Last time&lt;/a&gt; we talked about database engine and transactions. Now we have come to the realm of query processing in our revisiting of the DBMS side of &lt;a href=&quot;http://virtuoso.openlinksw.com&quot; id=&quot;link-id0xd3ecd30&quot;&gt;Virtuoso&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Now the well established, respectable standard benchmark for the basics of query processing is TPC D with its derivatives H and R. So we have, for testing how different &lt;a href=&quot;http://dbpedia.org/resource/SQL&quot; id=&quot;link-id0x15cf6938&quot;&gt;SQL&lt;/a&gt; optimizers manage the 22 queries, run a mini version of the D queries with a 1% scale database, some 30M of &lt;a href=&quot;http://dbpedia.org/resource/Data&quot; id=&quot;link-id0x15ce3928&quot;&gt;data&lt;/a&gt;, all in memory. This basically catches whether SQL implementations miss some of the expected tricks and how efficient in memory loop and hash joins and aggregation are.&lt;/p&gt; &lt;p&gt;When we get to our next stop, high volume I/O, we will run the same with D databases in the 10G ballpark.&lt;/p&gt; &lt;p&gt;The databases were tested on the same machine, with warm cache, taking the best run of 3. All had full statistics and were running with read committed isolation, where applicable. The data was generated using the procedures from the Virtuoso test suite. The Virtuoso version tested was 5.0, to be released shortly. The &lt;a href=&quot;http://dbpedia.org/resource/MySQL&quot; id=&quot;link-id0xc952f58&quot;&gt;MySQL&lt;/a&gt; was 5.0.27, the PostgreSQL was 8.1.6. &lt;/p&gt; &lt;table style=&quot;width: 334px; height: 556px; &quot; border=&quot;1&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;th rowspan=&quot;2&quot;&gt;Query&lt;/th&gt; &lt;th colspan=&quot;4&quot;&gt;Query Times in Milliseconds&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt; Virtuoso &lt;/th&gt; &lt;th&gt; PostgreSQL &lt;/th&gt; &lt;th&gt; MySQL &lt;/th&gt; &lt;th&gt; MySQL with InnoDB &lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q1 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;206&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 763 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 312 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 198 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q2 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 4 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 6 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;3&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;3&lt;/b&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q3 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;13&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 51 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 254 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 64 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q4 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;4&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 16 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 24 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 60 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q5 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;15&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 22 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 64 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 68 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q6 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;9&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 70 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 189 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 65 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q7 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;52&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 143 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 211 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 84 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q8 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 29 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 31 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 13 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;11&lt;/b&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q9 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;36&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 114 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 97 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 61 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q10 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;32&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 51 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 117 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 57 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q11 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 16 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;9&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 12 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 10 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q12 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;8&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 21 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 18 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 130 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q13 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;18&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 74 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; - &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; - &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q14 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;7&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 21 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 418 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 1425 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q15 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;14&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 43 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 389 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 122 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q16 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;16&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 22 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 18 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 25 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q17 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;1&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 54 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 26 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 10 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q18 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;82&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 120 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; - &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; - &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q19 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 19 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 8 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;2&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 17 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q20 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;7&lt;b&gt; &lt;/b&gt;&lt;/b&gt;&lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 15 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 66 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 52 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q21 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;34&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 86 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 524 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 278 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; Q22 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; &lt;b&gt;4&lt;/b&gt; &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 323 &lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 3311&lt;/td&gt; &lt;td align=&quot;right&quot;&gt; 805 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Total (msec)&lt;/td&gt; &lt;td align=&quot;right&quot;&gt;&lt;b&gt;626&lt;/b&gt;&lt;/td&gt; &lt;td align=&quot;right&quot;&gt;2063&lt;/td&gt; &lt;td align=&quot;right&quot;&gt;6068&lt;/td&gt; &lt;td align=&quot;right&quot;&gt;3545&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;We lead by a fair margin but MySQL is hampered by obviously getting some execution plans wrong and not doing Q13 and Q18 at all, at least not under several tens of seconds; so we left these out of the table in the interest of having comparable totals.&lt;/p&gt; &lt;p&gt;As usual, we also ran the workload on &lt;a href=&quot;http://dbpedia.org/resource/Oracle_Database&quot; id=&quot;link-id0x167807c8&quot;&gt;Oracle&lt;/a&gt; 10g R2. Since Oracle does not like their numbers being published without explicit approval, we will just say that we are even with them within the parameters described above. Oracle has a more efficient decimal type so it wins where that is central, as on Q1. Also it seems to notice that the &lt;code&gt;GROUP BY&lt;/code&gt;s of Q18 are produced in order of grouping columns, so it needs no intermediate table for storing the aggregates. If we addressed these matters, we&amp;#39;d lead by some 15% whereas now we are even. A faster decimal arithmetic implementation may be in the release after next.&lt;/p&gt; &lt;p&gt;In the next posts, we will look at IO and disk allocation, and also return to &lt;a href=&quot;http://dbpedia.org/resource/Resource_Description_Framework&quot; id=&quot;link-id0xbb63c20&quot;&gt;RDF&lt;/a&gt; and LUBM.&lt;/p&gt; &lt;/div&gt;</atom:content>
 </atom:entry>
</atom:feed>