<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xavier Llorà &#187; cloud computing</title>
	<atom:link href="http://www.xavierllora.net/tag/cloud-computing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xavierllora.net</link>
	<description>A notebook on data-intensive computing, genetics-based machine learning &#38; more.</description>
	<lastBuildDate>Sun, 08 Jan 2012 19:39:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Soaring the Clouds with Meandre</title>
		<link>http://www.xavierllora.net/2010/03/15/soaring-the-clouds-with-meandre/</link>
		<comments>http://www.xavierllora.net/2010/03/15/soaring-the-clouds-with-meandre/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 22:55:11 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Data-Intensive Computing]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[hadoop]]></category>
		<category><![CDATA[meandre]]></category>
		<category><![CDATA[ZigZag]]></category>

		<guid isPermaLink="false">http://www.xavierllora.net/?p=659</guid>
		<description><![CDATA[You may find the slide deck and the abstract for the presentation we delivered today at the &#8220;Data-Intensive Research: how should we improve our ability to use data&#8221; workshop in Edinburgh. Abstract This talk will focus a highly scalable data intensive infrastructure being developed at the National Center for Supercomputing Application (NCSA) at the University [...]
Related posts:<ol>
<li><a href='http://www.xavierllora.net/2008/11/15/meandre-semantic-driven-data-intensive-flows-in-the-clouds/' rel='bookmark' title='Meandre: Semantic-Driven Data-Intensive Flows in the Clouds'>Meandre: Semantic-Driven Data-Intensive Flows in the Clouds</a></li>
<li><a href='http://www.xavierllora.net/2008/04/18/meandre-semantic-driven-data-intensive-flow-engine/' rel='bookmark' title='Meandre: Semantic-Driven Data-Intensive Flow Engine'>Meandre: Semantic-Driven Data-Intensive Flow Engine</a></li>
<li><a href='http://www.xavierllora.net/2009/01/29/data-intensive-computing-for-competent-genetic-algorithms-a-pilot-study-using-meandre/' rel='bookmark' title='Data-Intensive Computing for Competent Genetic Algorithms: A Pilot Study using  Meandre'>Data-Intensive Computing for Competent Genetic Algorithms: A Pilot Study using  Meandre</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>You may find the slide deck and the abstract for the presentation we delivered today at the <a href="http://wikis.nesc.ac.uk/escienvoy/Data-Intensive_Research:_how_should_we_improve_our_ability_to_use_data">&#8220;Data-Intensive Research: how should we improve our ability to use data&#8221;</a> workshop in Edinburgh.</p>
<p><center><iframe src="http://www.slideshare.net/slideshow/embed_code/3440242" width="425&type=s" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/></center></p>
<p><strong>Abstract</strong></p>
<p>This talk will focus a highly scalable data intensive infrastructure being developed at the National Center for Supercomputing Application (NCSA) at the University of Illinois and will introduce current research efforts to tackle the challenges presented by big-data. Research efforts include exploring potential ways of integration between cloud computing concepts—such as Hadoop or Meandre—and traditional HPC technologies and assets. These architecture models contrast significantly, but can be leveraged by building cloud conduits that connect these resources to provide even greater flexibility and scalability on demand. Orchestrating the physical computational environment requires innovative and sophisticated software infrastructure that can transparently take advantage of the functional features and to negotiate the constraints imposed by this diversity of computational resources. Research conducted during the development of the Meandre infrastructure has lead to the production of an agile conductor able to leverage the particular advantages in the physical diversity. It can also be implemented as services and/or in the context of another application benefitting from it reusability, flexibility, and high-scalability. Some example applications and an introduction to the data intensive infrastructure architecture will be presented to provide an overview of the diverse scope of Meandre usages. Finally, a case will be presented showing how software developers and system designers can easily transition to these new paradigms to address the primary data-deluge challenges and to soar to new heights with extreme application scalability using cloud computing concepts.</p>
<p>Related posts:<ol>
<li><a href='http://www.xavierllora.net/2008/11/15/meandre-semantic-driven-data-intensive-flows-in-the-clouds/' rel='bookmark' title='Meandre: Semantic-Driven Data-Intensive Flows in the Clouds'>Meandre: Semantic-Driven Data-Intensive Flows in the Clouds</a></li>
<li><a href='http://www.xavierllora.net/2008/04/18/meandre-semantic-driven-data-intensive-flow-engine/' rel='bookmark' title='Meandre: Semantic-Driven Data-Intensive Flow Engine'>Meandre: Semantic-Driven Data-Intensive Flow Engine</a></li>
<li><a href='http://www.xavierllora.net/2009/01/29/data-intensive-computing-for-competent-genetic-algorithms-a-pilot-study-using-meandre/' rel='bookmark' title='Data-Intensive Computing for Competent Genetic Algorithms: A Pilot Study using  Meandre'>Data-Intensive Computing for Competent Genetic Algorithms: A Pilot Study using  Meandre</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xavierllora.net/2010/03/15/soaring-the-clouds-with-meandre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liquid: RDF endpoint for FluidDB</title>
		<link>http://www.xavierllora.net/2009/09/24/liquid-rdf-endpoint-for-fluiddb/</link>
		<comments>http://www.xavierllora.net/2009/09/24/liquid-rdf-endpoint-for-fluiddb/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 20:45:19 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Data-Intensive Computing]]></category>
		<category><![CDATA[FluidDB]]></category>
		<category><![CDATA[meandre]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.xavierllora.net/?p=593</guid>
		<description><![CDATA[A while ago I wrote some thoughts about how to map RDF to and from FluidDB. There I explored how you could map RDF onto FluidDB, and how to get it back. That got me thinking about how to get a simple endpoint you could query for RDF. Imagine that you could pull FluidDB data [...]
Related posts:<ol>
<li><a href='http://www.xavierllora.net/2009/08/25/liquid-rdf-meandering-in-fluiddb/' rel='bookmark' title='Liquid: RDF meandering in FluidDB'>Liquid: RDF meandering in FluidDB</a></li>
<li><a href='http://www.xavierllora.net/2009/09/29/temporary-storage-for-meandres-distribute-flow-execution/' rel='bookmark' title='Temporary storage for Meandre&#8217;s distributed flow execution'>Temporary storage for Meandre&#8217;s distributed flow execution</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A while ago I wrote some thoughts about how to map RDF to and from <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a>. There I explored how you could map RDF onto FluidDB, and how to get it back. That got me thinking about how to get a simple endpoint you could query for RDF. Imagine that you could pull <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> data in RDF, then I could just get all the flexibility of <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a> for free. With this idea in my mind I just went and grabbed <a href="http://seasr.org/meandre">Meandre</a>, the <a href="http://github.com/rossjones/JFluidDB">JFLuidDB</a> library started by <a href="http://github.com/rossjones">Ross Jones</a>, and build a few components.</p>
<p>The main goal was to be able to get an object, list of the tags, and express the result in RDF. <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> helps the mapping since objects are uniquely identified by URIs. For instance, the unique object <code>5ff74371-455b-4299-83f9-ba13ae898ad1</code> (FluidDB relies on UUID version four with the form <code>xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx</code>) is uniquely identified by <code>http://sandbox.fluidinfo.com/objects/5ff74371-455b-4299-83f9-ba13ae898ad1</code> (or a url of the form <code>http://sandbox.fluidinfo.com/objects/xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx</code>), in case you are using the sandbox or <code>http://fluiddb.fluidinfo.com/objects/5ff74371-455b-4299-83f9-ba13ae898ad1</code> if you are using the main instance. Same story for tags. The tag <code>fluiddb/about</code> can be uniquely identified by the URI <code>http://sandbox.fluidinfo.com/tags/fluiddb/about</code>, or <code>http://fluiddb.fluidinfo.com/tags/fluiddb/about</code>.</p>
<h2>A simple RDF description for and object<br />
<h2>
<p>Once you get the object back the basic translated RDF version for object <code>a10ab0f3-ef56-4fc0-a8fa-4d452d8ab1db</code> should look like as the listing below in TURTLE notation.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/objects/a10ab0f3-ef56-4fc0-a8fa-4d452d8ab1db<span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#type<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/objects<span style="color: #000000; font-weight: bold;">/&gt;</span></span> , <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#Bag<span style="color: #000000; font-weight: bold;">&gt;</span></span> ;
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#_1<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/tags/fluiddb/about<span style="color: #000000; font-weight: bold;">&gt;</span></span> ;
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#_2<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/tags/fluiddb/tags/path<span style="color: #000000; font-weight: bold;">&gt;</span></span> ;
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#_3<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/tags/fluiddb/tags/description<span style="color: #000000; font-weight: bold;">&gt;</span></span> ;
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//purl.org/dc/elements/1.1/description<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              &quot;Object for the attribute fluiddb/default/tags/permission/update/policy&quot;^^<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/2001/XMLSchema#string<span style="color: #000000; font-weight: bold;">&gt;</span></span> .</pre></div></div>

<p>I will break the above example into small chunks and explain the above example into the three main pieces involved (the id, the about, and the tags). The basic construct is simple. First a triple to mark the object as a <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> object.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/objects/a10ab0f3-ef56-4fc0-a8fa-4d452d8ab1db<span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#type<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/objects<span style="color: #000000; font-weight: bold;">/&gt;</span></span>   
.</pre></div></div>

<p>Then if the object has an <code>about</code> associated on creation, another triple gets generated and added, as shown below. To be consistent, I suggest reusing DC description since that is what the <code>about</code> for an object tend to indicate.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/objects/a10ab0f3-ef56-4fc0-a8fa-4d452d8ab1db<span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//purl.org/dc/elements/1.1/description<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              &quot;Object for the attribute fluiddb/default/tags/permission/update/policy&quot;^^<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/2001/XMLSchema#string<span style="color: #000000; font-weight: bold;">&gt;</span></span> 
.</pre></div></div>

<p>Finally, if there are tags associated to the object, a bag gets created, and all the URI describing the tags get pushed into the bag as shown below.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/objects/a10ab0f3-ef56-4fc0-a8fa-4d452d8ab1db<span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#type<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#Bag<span style="color: #000000; font-weight: bold;">&gt;</span></span> ;
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#_1<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/tags/fluiddb/about<span style="color: #000000; font-weight: bold;">&gt;</span></span> ;
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#_2<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/tags/fluiddb/tags/path<span style="color: #000000; font-weight: bold;">&gt;</span></span> ;
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//www.w3.org/1999/02/22-rdf-syntax-ns#_3<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;http:</span>//sandbox.fluidinfo.com/tags/fluiddb/tags/description<span style="color: #000000; font-weight: bold;">&gt;</span></span>
.</pre></div></div>

<h2>Creating and RDF endpoint</h2>
<p>Armed with the previous, the thing should be easy. Just allow querying for objects, then collect the object information, and finally generate the final RDF. Using <a href="http://seasr.org/meandre">Meandre</a> and <a href="http://github.com/rossjones/JFluidDB">JFLuidDB</a> I wrote a few components that allow the simple creation of such an endpoint as illustrated by the picture below.</p>
<p><a href="http://www.xavierllora.net/wp-content/uploads/2009/09/meandre-fluiddb-rdf.png"><img src="http://www.xavierllora.net/wp-content/uploads/2009/09/meandre-fluiddb-rdf.png" alt="Meandre FluidDB RDF endpoint" title="Meandre FluidDB RDF endpoint" width="500" height="204" class="aligncenter size-full wp-image-602" /></a></p>
<p>The basic mechanism is simple. Just push the query into the <em>Query for objects</em> component. This component will stream each of the <code>uuid</code> of the matched objects to <em>Read object</em> which pulls the object information. Then the object is passed to <em>Object to RDF model</em> that basically generates the RDF snipped shown in the example shown above for each of the objects pushed. Finally all the RDF fragments are reduced together by component <em>Wrapped models reducer</em>. Then the resulting RDF model just gets serialize into text using the Turtle notation. Finally the serialized text is printed to the console. The equivalent code could be express as a <a href="http://seasr.org/meandre/documentation/for-developers/zigzag/">ZigZag</a> script as:</p>
<pre>
#
# Imports eliminated for clarity
#

#
# Create the component aliases
#
alias <meandre://fluidinfo.com/fluiddb/meandre/component/object-to-rdf> as OBJECT_TO_RDF
alias <meandre://fluidinfo.com/fluiddb/meandre/component/print-object> as PRINT_OBJECT
alias <meandre://fluidinfo.com/fluiddb/meandre/component/query-for-objects> as QUERY_FOR_OBJECTS
alias <meandre://fluidinfo.com/fluiddb/meandre/component/reads-the-requested-object> as READS_THE_REQUESTED_OBJECT
alias <meandre://seasr.org/components/tools/wrapped-models-reducer> as WRAPPED_MODELS_REDUCER
alias <meandre://seasr.org/components/tools/model-to-rdf-text> as MODEL_TO_RDF_TEXT
alias <meandre://fluidinfo.com/fluiddb/meandre/component/push-string> as PUSH_STRING

#
# Create the component instances
#
push_query_string = PUSH_STRING()
wrapped_models_reducer = WRAPPED_MODELS_REDUCER()
query_for_objects = QUERY_FOR_OBJECTS()
reads_object = READS_THE_REQUESTED_OBJECT()
model_to_rdf_text = MODEL_TO_RDF_TEXT()
print_rdf_text = PRINT_OBJECT()
object_to_rdf_model = OBJECT_TO_RDF()

#
# Set component properties
#
push_query_string.message = "has fluiddb/tag/path"
query_for_objects.fluiddb_url = "http://sandbox.fluidinfo.com"
eads_object.fluiddb_url = "http://sandbox.fluidinfo.com"
model_to_rdf_text.rdf_dialect = "TTL"

#
# Create the flow by connecting the components
#
@query_for_objects_outputs = query_for_objects()
@model_to_rdf_text_outputs = model_to_rdf_text()
@push_query_string_outputs = push_query_string()
@object_to_rdf_model_outputs = object_to_rdf_model()
@reads_object_outputs = reads_object()
@wrapped_models_reducer_outputs = wrapped_models_reducer()

query_for_objects(text: push_query_string_outputs.text)
model_to_rdf_text(model: wrapped_models_reducer_outputs.model)
object_to_rdf_model(object: reads_object_outputs.object)
reads_object(uuid: query_for_objects_outputs.uuid)[+200!]
print_rdf_text(object: model_to_rdf_text_outputs.text)
wrapped_models_reducer(model: object_to_rdf_model_outputs.model)
</pre>
<p>The only interesting element in the script is the [+200!] entry that creates 200 parallel copies of read object that will concurrently hit FluidDB to pull the data, trying to minimize the latency. The script could be compiled into a MAU and run. The output of the execution would look like the following:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">$ java <span style="color: #339933;">-</span>jar zzre<span style="color: #339933;">-</span>1.4.7.<span style="color: #006633;">jar</span> pull<span style="color: #339933;">-</span>test.<span style="color: #006633;">mau</span> 
Meandre MAU Executor <span style="color: #009900;">&#91;</span>1.0.1vcli<span style="color: #339933;">/</span>1.4.7<span style="color: #009900;">&#93;</span>
All rights reserved by DITA, NCSA, UofI <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2007</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2009</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">THIS</span> SOFTWARE IS PROVIDED UNDER University of Illinois<span style="color: #339933;">/</span>NCSA OPEN SOURCE LICENSE.
&nbsp;
<span style="color: #006633;">Executing</span> MAU file pull<span style="color: #339933;">-</span>test.<span style="color: #006633;">mau</span>
Creating temp dir pull<span style="color: #339933;">-</span>test.<span style="color: #006633;">mau</span>.<span style="color: #006633;">run</span>
Creating temp dir pull<span style="color: #339933;">-</span>test.<span style="color: #006633;">mau</span>.<span style="color: #006633;">public_resources</span>
&nbsp;
Preparing flow<span style="color: #339933;">:</span> meandre<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//seasr.org/zigzag/1253813636945/4416962494019783033/flow/pull-test-mau/</span>
<span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span>09<span style="color: #339933;">-</span><span style="color: #cc66cc;">24</span> <span style="color: #cc66cc;">12</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">34</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">38.480</span><span style="color: #339933;">::</span>INFO<span style="color: #339933;">:</span>  jetty<span style="color: #339933;">-</span><span style="color: #cc66cc;">6.1</span>.<span style="color: #006633;">x</span>
<span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span>09<span style="color: #339933;">-</span><span style="color: #cc66cc;">24</span> <span style="color: #cc66cc;">12</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">34</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">38.495</span><span style="color: #339933;">::</span>INFO<span style="color: #339933;">:</span>  Started SocketConnector@0.0.0.0<span style="color: #339933;">:</span><span style="color: #cc66cc;">1715</span>
Preparation completed correctly
&nbsp;
Execution started at<span style="color: #339933;">:</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">-</span>09<span style="color: #339933;">-</span>24T12<span style="color: #339933;">:</span><span style="color: #cc66cc;">34</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">38</span>
<span style="color: #339933;">----------------------------------------------------------------------------</span>
<span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/a24b4a18-5483-47c6-9b62-0955210c7ebd&gt;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/&gt; , &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_1&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/about&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_2&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/path&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_3&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/description&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/description&gt;</span>
              <span style="color: #0000ff;">&quot;Object for the attribute test/Net::FluidDB-name-1253772095.82845-0.944567286499904&quot;</span><span style="color: #339933;">^^&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/2001/XMLSchema#string&gt; .</span>
&nbsp;
<span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/5ff74371-455b-4299-83f9-ba13ae898ad1&gt;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/&gt; , &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_1&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/about&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_2&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/path&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_3&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/description&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/description&gt;</span>
              <span style="color: #0000ff;">&quot;Object for the attribute test/Net::FluidDB-name-1253622685.3231461-0.437099602163897316&quot;</span><span style="color: #339933;">^^&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/2001/XMLSchema#string&gt; .</span>
&nbsp;
<span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/67e52346-527e-4bb7-b8f3-05fa8a8ae35b&gt;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/&gt; , &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_1&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/about&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_2&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/path&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_3&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/description&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/description&gt;</span>
              <span style="color: #0000ff;">&quot;Object for the attribute test/Net::FluidDB-name-1253620190.69175-0.861614257420541&quot;</span><span style="color: #339933;">^^&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/2001/XMLSchema#string&gt; .</span>
&nbsp;
<span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/8a65a184-03d9-4881-95df-02fa0561a86f&gt;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/&gt; , &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_1&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/about&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_2&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/path&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_3&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/description&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/description&gt;</span>
              <span style="color: #0000ff;">&quot;Object for the attribute fluiddb/namespaces/permission/update/exceptions&quot;</span><span style="color: #339933;">^^&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/2001/XMLSchema#string&gt; .</span>
&nbsp;
<span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/335b44e9-a72f-479d-ad60-3661a35231ba&gt;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/&gt; , &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_1&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/about&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_2&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/path&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_3&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/description&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/description&gt;</span>
              <span style="color: #0000ff;">&quot;Object for the attribute test/Net::FluidDB-name-1253776141.95577-0.284175700598524&quot;</span><span style="color: #339933;">^^&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/2001/XMLSchema#string&gt; .</span>
&nbsp;
<span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/3bbf1cc6-731c-4e56-a664-adeb5484334f&gt;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/&gt; , &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_1&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/about&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_2&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/path&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_3&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/description&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/description&gt;</span>
              <span style="color: #0000ff;">&quot;Object for the attribute fluiddb/namespaces/permission/delete/policy&quot;</span><span style="color: #339933;">^^&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/2001/XMLSchema#string&gt; .</span>
&nbsp;
<span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/aba5adcf-fd44-40ab-b702-9cc635650bc3&gt;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/&gt; , &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_1&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/about&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_2&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/path&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_3&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/description&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/description&gt;</span>
              <span style="color: #0000ff;">&quot;Object for the attribute test/Net::FluidDB-name-1253614713.757-0.604769721717702&quot;</span><span style="color: #339933;">^^&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/2001/XMLSchema#string&gt; .</span>
&nbsp;
<span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/f61ceb3b-33df-4356-8e7d-c56d3d0ae338&gt;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#type&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/objects/&gt; , &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_1&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/about&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_2&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/path&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/1999/02/22-rdf-syntax-ns#_3&gt;</span>
              <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//sandbox.fluidinfo.com/tags/fluiddb/tags/description&gt; ;</span>
      <span style="color: #339933;">&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//purl.org/dc/elements/1.1/description&gt;</span>
              <span style="color: #0000ff;">&quot;Object for the attribute test/Net::FluidDB-name-1253615887.80879-0.0437609496034099&quot;</span><span style="color: #339933;">^^&lt;</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.w3.org/2001/XMLSchema#string&gt; .</span>
&nbsp;
...</pre></div></div>

<p>That&#8217;s it! A first RDF dump of the query!</p>
<h2>The not so great news</h2>
<p>The current <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> API does not provide any method to be able to pull data from more than one object at once. That basically means, that for each <code>uuid</code> a call to the server needs to be process. That is a huge latency overhead. The <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> guys know about it and they are scratching their heads on how to provide a &#8220;multi get&#8221;. A full trace of the output can be found on this <a href='http://www.xavierllora.net/wp-content/uploads/2009/09/fluiddb.txt'>FluidDB RDF endpoint trace</a>.</p>
<p>This element is crucial for any RDF endpoint. Above I left out a basic element, the time measures. That part looks like:</p>
<pre>
Flow execution statistics

Flow unique execution ID : meandre://seasr.org/zigzag/1253813636945/4416962494019783033/flow/pull-test-mau/8D8E354A/1253813678323/1493255769/
Flow state               : ended
Started at               : Thu Sep 24 12:34:38 CDT 2009
Last update              : Thu Sep 24 12:37:28 CDT 2009
Total run time (ms)      : 170144
</pre>
<p>Basically 170s to pull only 238 objects, where all the time is spent round tripping to <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a>. </p>
<h2>Getting there</h2>
<p>This basically means that such high latency would not allow efficient interactive usage of the end point. However, this exercise was useful to prof that simple RDF endpoints for <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> are possible and would greatly boost the flexibility of interaction with <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> . The current form of the endpoint is may still have value if you are not in a hurry, allowing you to run <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a> queries against <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> data and get the best of both worlds.</p>
<h2>The code use</h2>
<p>If you are interested on running the code, you may need <a href="http://seasr.org/meandre">Meandre</a> and the components I put together for the experiment, that you can get from <a href="http://github.com/xllora/liquid">http://github.com/xllora/liquid</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.xavierllora.net/2009/08/25/liquid-rdf-meandering-in-fluiddb/' rel='bookmark' title='Liquid: RDF meandering in FluidDB'>Liquid: RDF meandering in FluidDB</a></li>
<li><a href='http://www.xavierllora.net/2009/09/29/temporary-storage-for-meandres-distribute-flow-execution/' rel='bookmark' title='Temporary storage for Meandre&#8217;s distributed flow execution'>Temporary storage for Meandre&#8217;s distributed flow execution</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xavierllora.net/2009/09/24/liquid-rdf-endpoint-for-fluiddb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liquid: RDF meandering in FluidDB</title>
		<link>http://www.xavierllora.net/2009/08/25/liquid-rdf-meandering-in-fluiddb/</link>
		<comments>http://www.xavierllora.net/2009/08/25/liquid-rdf-meandering-in-fluiddb/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 18:04:20 +0000</pubDate>
		<dc:creator>Xavier</dc:creator>
				<category><![CDATA[Data-Intensive Computing]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Social Networks]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[FluidDB]]></category>
		<category><![CDATA[meandre]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.xavierllora.net/?p=577</guid>
		<description><![CDATA[Meandre (NCSA pushed data-intensive computing infrastructure) relies on RDF to describe components, flows, locations and repositories. RDF has become the central piece that makes possible Meandre&#8216;s flexibility and reusability. However, one piece still remains largely sketchy and still has no clear optimal solution: How can we facilitate to anybody sharing, publishing and annotating flows, components, [...]
Related posts:<ol>
<li><a href='http://www.xavierllora.net/2009/09/24/liquid-rdf-endpoint-for-fluiddb/' rel='bookmark' title='Liquid: RDF endpoint for FluidDB'>Liquid: RDF endpoint for FluidDB</a></li>
<li><a href='http://www.xavierllora.net/2010/03/15/soaring-the-clouds-with-meandre/' rel='bookmark' title='Soaring the Clouds with Meandre'>Soaring the Clouds with Meandre</a></li>
<li><a href='http://www.xavierllora.net/2010/07/15/meandre-2-0-alpha-preview-scala-mongodb/' rel='bookmark' title='Meandre 2.0 Alpha Preview = Scala + MongoDB'>Meandre 2.0 Alpha Preview = Scala + MongoDB</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://seasr.org/meandre/">Meandre</a> (<a href="http://www.ncsa.illinois.edu">NCSA</a> pushed data-intensive computing infrastructure) relies on <a href="http://www.w3.org/RDF/">RDF</a> to describe components, flows, locations and repositories. <a href="http://www.w3.org/RDF/">RDF</a> has become the central piece that makes possible <a href="http://seasr.org/meandre/">Meandre</a>&#8216;s flexibility and reusability. However, one piece still remains largely sketchy and still has no clear optimal solution: How can we facilitate to anybody sharing, publishing and annotating flows, components, locations and repositories? More importantly, how can that be done in the cloud in an open-ended fashion and allow anybody to annotate and comment on each of the afore mentioned pieces?</p>
<h3>The FluidDB trip</h3>
<p>During my last summer trip to Europe, <a href="http://blogs.fluidinfo.com/terry/">Terry Jones</a> (CEO) invited me to visit <a href="http://www.fluidinfo.com/">FluidInfo</a> (based in Barcelona) where I also meet <a href="http://blogs.fluidinfo.com/esteve/">Esteve Fernandez</a> (CTO). I had a great opportunity to chat with the masterminds behind an intriguing concept I ran into after a short note I received from <a href="http://www.illigal.uiuc.edu/web/deg/vita/">David E. Goldberg</a>. <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a>, the main product being pushed by <a href="http://www.fluidinfo.com/">FluidInfo</a>, is an online collaborative &#8220;cloud&#8221;  database. On <a href="http://www.fluidinfo.com/">FluidInfo</a> words:</p>
<blockquote><p>
FluidDB lets data be social. It allows almost unlimited information personalization by individual users and applications, and also between them. This makes it simple to build a wide variety of applications that benefit from cooperation, and which are open to unanticipated future enhancements. Even more importantly, FluidDB facilitates and encourages the growth of applications that leave users in control of their own data.
</p></blockquote>
<p><a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> went live on a private alpha last week. The basic concept behind the scenes is simple. <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> stores objects. Objects do not belong to anybody. Objects may be &#8220;blank&#8221; or they may be about something (e.g. <a href="http://seasr.org/meandre">http://seasr.org/meandre</a>). You can create as many blank objects as you want. Creating an object with the same about always returns the same object (thus, there will only be one object about <a href="http://seasr.org/meandre">http://seasr.org/meandre</a>). Once objects exists, things start getting more interesting, you can go and tag any object with whatever tag you want. For instance I could tag the <a href="http://seasr.org/meandre">http://seasr.org/meandre</a> object <code>hosted_by</code> tag, and assign the tag the value <a href="http://www.ncsa.illinois.edu>&#8220;National Center for Supercomputing Applications&#8221;</a> value. Values can be anything you want, from text and numerals to blobs. Finally, <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> introduces one last trick: namespaces. For instance, I got xllora. that means that the above tag I mentioned would look like <code>/tag/xllora/hosted_by</code>. You can create as many nested namespaces under your main namespace as you want. <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> also provides mechanisms to control who can query and see the values of your created tags.</p>
<p>As you can see, the basic object model and mechanics is very simple. When the alpha went live, <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> only provide access via a simple REST-like HTTP API. In a few days a blossom of client libraries that wrap that API were develop by a dynamic community that gather on <code>#fluiddb</code> channel on <code>irc.freenode.net</code> where <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a and early adopters share experiences. </p>
<h3>You were saying something about RDF</h3>
<p>Back to the point. One thing I chatted with the <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> guys was what did they think about the similarities between <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a>&#8216;s object model and RDF. After playing with RDF for a while, the <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> model look awfully familiar, despite a much simplified and manageable model than <a href="http://www.w3.org/RDF/">RDF</a>. They did not have much to say about it, and the question got stuck in the back of my mind. So when I got access to the private alpha, I could not help it but get down the path of what would it mean to map <a href="http://www.w3.org/RDF/">RDF</a> on <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a>. Yes, the simple straight answer would be to stick serialized RDF into the value of a given tag (e.g. <code>xllora/rdf</code>). However, that option seemed poor, since I could not exploit the social aspect of collaborative annotations provided by <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a>. So back to the drawing board. What both models have in common: They are both descriptions about something. In RDF you can see those as the subjects of the triple predicates, whereas in <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> those are simple objects. <a href="http://www.w3.org/RDF/">RDF</a> use properties to qualify objects. <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> uses tags. Both enable you to add value to qualified objects. Mmh, there you go.</p>
<p>With this idea in mind, I started <a href="http://github.com/xllora/liquid/tree/master">Liquid</a>, a simple proof-of-concept library that maps <a href="http://www.w3.org/RDF/">RDF</a> on to <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> and then it gets it back. There was only one thing that needed a bit of patching. <a href="http://www.w3.org/RDF/">RDF</a> properties are arbitrary URIs. Those could not be easily map on the top of <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> tags, so I took a simple compromise route.</p>
<ul>
<li><a href="http://www.w3.org/RDF/">RDF</a>s subject URIs are mapped onto FluidDB qualified objects via the about tag</li>
<li>One <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> tag will contain all the properties for that object (basically a simple dictionary encoded in JSON)</li>
<li>Reference to other <a href="http://www.w3.org/RDF/">RDF</a> URIs will be mapped on to <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> object URIs, and vice versa</li>
</ul>
<p>Let&#8217;s make it a bit more chewable with a simple example.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rdf:RDF</span></span>
<span style="color: #009900;"><span style="color: #000066;">xmlns:rdf</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;</span></span>
<span style="color: #009900;"><span style="color: #000066;">xmlns:cd</span>=<span style="color: #ff0000;">&quot;http://www.recshop.fake/cd#&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rdf:Description</span></span>
<span style="color: #009900;"><span style="color: #000066;">rdf:about</span>=<span style="color: #ff0000;">&quot;http://www.recshop.fake/cd/Empire Burlesque&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cd:artist<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Bob Dylan<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cd:artist<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rdf:Description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rdf:RDF<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>The above <a href="http://www.w3.org/RDF/">RDF</a> represents a single triple</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">http://www.recshop.fake/cd/Empire Burlesque	http://www.recshop.fake/cd#artist	   &quot;Bob Dylan&quot;</pre></div></div>

<p>This triple could be map onto <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> by creating one qualified <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> object and adding the proper tags. The example below shows how to do so using <a href="http://github.com/njr0/fdb.py/tree/master">Python&#8217;s fdb.py client library</a> by <a href="http://StochasticSolutions.com/about.html">Nicholas J. Radcliffe</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> fdb,<span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">version_info</span> <span style="color: #66cc66;">&lt;</span> <span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">import</span> simplejson <span style="color: #ff7700;font-weight:bold;">as</span> json
<span style="color: #ff7700;font-weight:bold;">else</span>:
    <span style="color: #ff7700;font-weight:bold;">import</span> json
&nbsp;
__RDF_TAG__ = <span style="color: #483d8b;">'rdf'</span>
__RDF_TAG_PROPERTIES__  = <span style="color: #483d8b;">'rdf_properties'</span>
__RDF_TAG_MODEL_NAME__ = <span style="color: #483d8b;">'rdf_model_name'</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Initialize the FluidDB client library</span>
<span style="color: #808080; font-style: italic;">#</span>
f = fdb.<span style="color: black;">FluidDB</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Create the tags (if they exist, this won't hurt)</span>
<span style="color: #808080; font-style: italic;">#</span>
f.<span style="color: black;">create_abstract_tag</span><span style="color: black;">&#40;</span>__RDF_TAG__<span style="color: black;">&#41;</span>
f.<span style="color: black;">create_abstract_tag</span><span style="color: black;">&#40;</span>__RDF_TAG_PROPERTIES__<span style="color: black;">&#41;</span>
f.<span style="color: black;">create_abstract_tag</span><span style="color: black;">&#40;</span>__RDF_TAG_MODEL_NAME__<span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Create the subject object of the triple</span>
<span style="color: #808080; font-style: italic;">#	</span>
o = f.<span style="color: black;">create_object</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'http://www.recshop.fake/cd/Empire Burlesque'</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Map RDF properties</span>
<span style="color: #808080; font-style: italic;">#</span>
properties = <span style="color: black;">&#123;</span><span style="color: #483d8b;">'http://www.recshop.fake/cd#artist'</span>:<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Bob Dylan'</span><span style="color: black;">&#93;</span><span style="color: black;">&#125;</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Tag the object as RDF aware, properties available, and to which model/named graph </span>
<span style="color: #808080; font-style: italic;"># it belongs</span>
<span style="color: #808080; font-style: italic;">#</span>
f.<span style="color: black;">tag_object_by_id</span><span style="color: black;">&#40;</span>o.<span style="color: #008000;">id</span>, __RDF_TAG__<span style="color: black;">&#41;</span>
f.<span style="color: black;">tag_object_by_id</span><span style="color: black;">&#40;</span>o.<span style="color: #008000;">id</span>,__RDF_TAG_PROPERTIES__,value=json.<span style="color: black;">dumps</span><span style="color: black;">&#40;</span>properties<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
f.<span style="color: black;">tag_object_by_id</span><span style="color: black;">&#40;</span>o.<span style="color: #008000;">id</span>, __RDF_TAG_MODEL_NAME__,<span style="color: #483d8b;">'test_dummy'</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Running along with this basic idea, I quickly stitched <a href="http://github.com/xllora/liquid/tree/master">a simple library (Liquid)</a> that allows ingestion and retrieval of <a href="http://www.w3.org/RDF/">RDF</a> from <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a>. It is still very rudimentary and may not totally map properly all possible <a href="http://www.w3.org/RDF/">RDF</a>, but it is a working proof-of-concept implementation that it is possible to do so.</p>
<p>The Python code above just saves a triple. You can easy retrieve the triple by performing the following operation</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> fdb,<span style="color: #dc143c;">sys</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">version_info</span> <span style="color: #66cc66;">&lt;</span> <span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">6</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">import</span> simplejson <span style="color: #ff7700;font-weight:bold;">as</span> json
<span style="color: #ff7700;font-weight:bold;">else</span>:
    <span style="color: #ff7700;font-weight:bold;">import</span> json
&nbsp;
__RDF_TAG__ = <span style="color: #483d8b;">'rdf'</span>
__RDF_TAG_PROPERTIES__  = <span style="color: #483d8b;">'rdf_properties'</span>
__RDF_TAG_MODEL_NAME__ = <span style="color: #483d8b;">'rdf_model_name'</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Initialize the FluidDB client library</span>
<span style="color: #808080; font-style: italic;">#</span>
f = fdb.<span style="color: black;">FluidDB</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Retrieve the annotated objects</span>
<span style="color: #808080; font-style: italic;">#</span>
objs = f.<span style="color: black;">query</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'has xllora/%s'</span><span style="color: #66cc66;">%</span><span style="color: black;">&#40;</span>__RDF_TAG__<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Optionally you could retrieve the ones only belonging to a given model by</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># objs = fdb.query('has xllora/%s and xllora/%s matches &quot;%s&quot;'%(__RDF_TAG__,__RDF_TAG_MODEL_NAME__,modelname))</span>
<span style="color: #808080; font-style: italic;">#</span>
subs = <span style="color: black;">&#91;</span>f.<span style="color: black;">get_tag_value_by_id</span><span style="color: black;">&#40;</span>s,<span style="color: #483d8b;">'/tags/fluiddb/about'</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> s <span style="color: #ff7700;font-weight:bold;">in</span> objs<span style="color: black;">&#93;</span>
props_tmp = <span style="color: black;">&#91;</span>f.<span style="color: black;">get_tag_value_by_id</span><span style="color: black;">&#40;</span>s,<span style="color: #483d8b;">'/tags/xllora/'</span>+__RDF_TAG_PROPERTIES__<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> s <span style="color: #ff7700;font-weight:bold;">in</span> objs<span style="color: black;">&#93;</span>
props = <span style="color: black;">&#91;</span>json.<span style="color: black;">loads</span><span style="color: black;">&#40;</span>s<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">if</span> s<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>==<span style="color: #ff4500;">200</span> <span style="color: #ff7700;font-weight:bold;">else</span> <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span> <span style="color: #ff7700;font-weight:bold;">for</span> s <span style="color: #ff7700;font-weight:bold;">in</span> props_tmp<span style="color: black;">&#93;</span></pre></div></div>

<p>Now <code>subs</code> contains all the subject URIs for the predicates, and <code>props</code> all the dictionaries containing the properties.</p>
<h3>The bottom line</h3>
<p>OK. So, what is this mapping important? Basically, it will allow collaborative tagging of the created objects (subjects), allowing a collaborative and social gathering of information, besides them mapped <a href="http://www.w3.org/RDF/">RDF</a>. So, what does it all means?</p>
<p>It basically means, that if you do not have the need to ingest <a href="http://www.w3.org/RDF/">RDF</a> (where property URIs are not directly map and you need to Fluidify/reify), any data stored in <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> is already on some form of triplified RDF. Let me explain what I mean by that. Each <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> has a unique URI (e.g. <code>http://fluidDB.fluidinfo.com/objects/4fdf7ff4-f0da-4441-8e63-9b98ed26fc12</code>). Each tag is also uniquely identified by an URI (e.g. <code>http://fluidDB.fluidinfo.com/tags/xllora/rdf_model_name</code>). And finally each pair object/tag may have a value (e.g. a literal <code>'test_dummy'</code> or maybe another URI <code>http://fluidDB.fluidinfo.com/objects/a0dda173-9ee0-4799-a507-8710045d2b07</code>). If a object/tag does not have a value you can just point it to the no value URI (or some other convention you like). </p>
<p>Having said that, now you have all the pieces to express <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> data in plain shareable RDF. That would mean basically get all the tags for and object, query the values, and then just generate and <a href="http://www.w3.org/RDF/">RDF</a> model by adding the gathered triples. That&#8217;s easy. Also, if you align your properties to tags, the ingestion would also become that trivial. I will try to get that piece into <a href="http://github.com/xllora/liquid/tree/master">Liquid</a> as soon as other issues allow me to do so <img src='http://www.xavierllora.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Just to close, I would mention once again a key element of this picture. <a href="http://www.fluidinfo.com/fluiddb">FluidDB</a> opens the door to a truly cooperative, distributed, and online fluid semantic web.  It is one of the first examples of how annotations (a.k.a. metadata) can be easily gathered and used on the &#8220;cloud&#8221; for the masses. Great job guys!</p>
<p>Related posts:<ol>
<li><a href='http://www.xavierllora.net/2009/09/24/liquid-rdf-endpoint-for-fluiddb/' rel='bookmark' title='Liquid: RDF endpoint for FluidDB'>Liquid: RDF endpoint for FluidDB</a></li>
<li><a href='http://www.xavierllora.net/2010/03/15/soaring-the-clouds-with-meandre/' rel='bookmark' title='Soaring the Clouds with Meandre'>Soaring the Clouds with Meandre</a></li>
<li><a href='http://www.xavierllora.net/2010/07/15/meandre-2-0-alpha-preview-scala-mongodb/' rel='bookmark' title='Meandre 2.0 Alpha Preview = Scala + MongoDB'>Meandre 2.0 Alpha Preview = Scala + MongoDB</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.xavierllora.net/2009/08/25/liquid-rdf-meandering-in-fluiddb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

