<?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>Cyberborean Chronicles &#187; Semantic Web</title>
	<atom:link href="http://blog.cyberborean.org/tag/semantic-web/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.cyberborean.org</link>
	<description>by Alex Alishevskikh</description>
	<lastBuildDate>Wed, 18 Jan 2012 07:52:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>RDFBeans 2.0</title>
		<link>http://blog.cyberborean.org/2011/04/07/rdfbeans-2-0</link>
		<comments>http://blog.cyberborean.org/2011/04/07/rdfbeans-2-0#comments</comments>
		<pubDate>Thu, 07 Apr 2011 05:46:56 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Howtos]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[RDFBeans]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://blog.cyberborean.org/?p=695</guid>
		<description><![CDATA[The second edition of RDFBeans Java-to-RDF databinding framework is finally out. In 2.0 version the library underwent major refactoring to clean and enhance the API and provide new databinding techniques. RDFBeans is an open-source object-RDF databinding and persistence library for the Semantic Web development with Java language. It provides a framework for mapping an object-oriented [...]]]></description>
			<content:encoded><![CDATA[<p>The second edition of <a href="http://rdfbeans.sourceforge.net">RDFBeans</a> Java-to-RDF databinding framework is finally out. In 2.0 version the library underwent major refactoring to clean and enhance the API and provide new databinding techniques.</p>
<div class="excerpt fullwidth">
RDFBeans is an open-source object-RDF databinding and persistence library for the Semantic Web development with Java language. It provides a framework for mapping an object-oriented domain model to RDF resource descriptions. </p>
<p>For more information, see:</p>
<ul>
<li><a href="http://rdfbeans.sf.net">The project web-site</a></li>
<li><a href="http://rdfbeans.sourceforge.net/apidocs/index.html">Javadocs</a></li>
<li><a href="http://rdfbeans.sourceforge.net/download.html">How to get the sourcecode or configure Maven dependency</a></li>
</ul>
</div>
<p><span id="more-695"></span></p>
<h2>RDFBean interfaces and dynamic proxying</h2>
<p>Along with <a href="http://rdfbeans.sourceforge.net/usage.html#Working_with_RDFBean_classes">traditional JavaBean-like persisting technique</a> using RDFBean classes, the version 2.0 introduces new approach to object-RDF mapping: <a href="http://rdfbeans.sourceforge.net/usage.html#Working_with_RDFBean_interfaces">RDFBean interfaces</a>.</p>
<p>It works simply: you define an interface of your domain model object and annotate it just like an RDFBean class:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@RDFNamespaces<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf = http://xmlns.com/foaf/0.1/&quot;</span><span style="color: #009900;">&#41;</span>
@RDFBean<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf:Person&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> IPerson <span style="color: #009900;">&#123;</span>
&nbsp;
    @RDFSubject
    <span style="color: #003399;">String</span> getId<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    @RDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf:name&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #003399;">String</span> getName<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">void</span> setName<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    @RDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf:mbox&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #003399;">String</span> getEmail<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">void</span> setEmail<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Then you instantiate the <code>RDFBeanManager</code> (was <code>RDFBinding</code> in RDFBeans 1.x) upon an RDF2Go Model and create a <em>dynamic proxy object</em> with your interface:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">ModelFactory modelFactory <span style="color: #339933;">=</span> RDF2Go.<span style="color: #006633;">getModelFactory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Model model <span style="color: #339933;">=</span> modelFactory.<span style="color: #006633;">createModel</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
model.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        
RDFBeanManager manager <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RDFBeanManager<span style="color: #009900;">&#40;</span>model<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
IPerson person <span style="color: #339933;">=</span> manager.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://example.com/persons/jdoe&quot;</span>, IPerson.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>The methods of this proxy object are directed immediately to the underlying RDF triples, so that</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">person.<span style="color: #006633;">setName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;John Doe&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
person.<span style="color: #006633;">setEmail</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;john@example.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>will cause adding the statements to the model:</p>
<pre>
&lt;http://example.com/persons/jdoe&gt; a &lt;http://xmlns.com/foaf/0.1/Person&gt; ;
	&lt;http://xmlns.com/foaf/0.1/name&gt; "John Doe" ;
	&lt;http://xmlns.com/foaf/0.1/mbox&gt; "john@example.com" ;
</pre>
<p>Similarly, the getter methods will return values retrieved directly from these statements.</p>
<h2>RDFBean annotations</h2>
<p>The <a href="http://rdfbeans.sourceforge.net/rdfbean.html">annotations scheme</a> has changed, so the old classes will be incompatible with RDFBeans 2.0. As you can see in the example above, <code>@RDF</code> annotation is now applied to the getter methods but not to the field declaration like in the previous versions.</p>
<p>You also can notice new annotation, <code>@RDFNamespaces</code>, which defines a list of URI prefixes to be used in other RDFBean annotations declared in a given class or interface. This includes class and property URIs, as well as RDFBean identifiers:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@RDFNamespaces<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> 
	<span style="color: #0000ff;">&quot;foaf = http://xmlns.com/foaf/0.1/&quot;</span>,
	<span style="color: #0000ff;">&quot;persons = http://example.com/persons/&quot;</span> 
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
@RDFBean<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf:Person&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> IPerson <span style="color: #009900;">&#123;</span>
&nbsp;
	@RDFSubject<span style="color: #009900;">&#40;</span>prefix <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;persons:&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #003399;">String</span> getId<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
...</pre></div></div>

<p>Annotations are now inherited from superclasses and interfaces that makes the RDFBeans markup compatible with complex domain-specific object models. See how the <code>Thing</code>, <code>Agent</code> and <code>Person</code> classes of the <a href="http://rdfbeans.svn.sourceforge.net/viewvc/rdfbeans/tags/2.0/src/test/java/com/viceversatech/rdfbeans/test/foafexample/entities/">FOAF example</a> are organized to mimic the <code>owl:Thing → foaf:Agent → foaf:Person</code> subclassing in RDF-Schema.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2011/04/07/rdfbeans-2-0/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nepomuk-KDE with the Sesame backend</title>
		<link>http://blog.cyberborean.org/2009/10/07/nepomuk-kde-with-the-sesame-backend</link>
		<comments>http://blog.cyberborean.org/2009/10/07/nepomuk-kde-with-the-sesame-backend#comments</comments>
		<pubDate>Wed, 07 Oct 2009 22:10:31 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Howtos]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[tagging]]></category>

		<guid isPermaLink="false">http://blog.cyberborean.org/?p=487</guid>
		<description><![CDATA[There is a helpful article on how to make Nepomuk a lot faster by switching its default storage backend to Sesame2: Pimp my Nepomuk Being both a really old KDE user and a semantic desktop partisan at the same time, I am, of course, keeping my eye on the progress in Nepomuk project.  It was [...]]]></description>
			<content:encoded><![CDATA[<p>There is a helpful article on how to make <a href="http://nepomuk.kde.org/">Nepomuk</a> a lot faster by switching its default storage backend to <a href="http://openrdf.org">Sesame2</a>:</p>
<p class="hand"><a href="http://tokoe-kde.blogspot.com/2009/09/pimp-my-nepomuk.html">Pimp my Nepomuk </a></p>
<p><span id="more-487"></span>Being both a really old KDE user and a semantic desktop partisan at the same time, I am, of course, keeping my eye on the progress in Nepomuk project.  It was apparently close to my old dream of a tagging framework supported natively and consistently across the whole desktop environment, so I highly appreciated this effort and it was nice to hear that Nepomuk would be officially included into KDE &#8211; my desktop of choice for many years.</p>
<p>Unfortunately, the experience was rather disappointing. It&#8217;s turned out to be painfully slow, not only slow by itself, but being a brake for overall desktop navigation. Even hovering the cursor over files and folders in Dolphin made Nepomuk process to eat above 50% of CPU time and caused annoying delays. The simple operations like assigning a tag to a file took seconds, the responsiveness which is obviously inappropriate for a real-world desktop system. It thus was turned off in a hope that the things would be improved in future versions (I was confused a bit by how it might appear in the production release, but, frankly, early KDE 4 was full of much more disastrous things). Since then, I checked it after every KDE version upgrade, but there was no visible progress in performance, alas.</p>
<p>It was really good news &#8211; the author of the post above argues that the performance issues are in fact, caused by a storage backend which <a href="http://soprano.sourceforge.net/">Soprano</a>, an RDF framework underlying to Nepomuk, uses to keep RDF data. By default, it&#8217;s shipped with <a href="http://librdf.org">Redland</a> (aka librdf), an RDF database library written in C. Luckily, the backend is easily replaceable and it&#8217;s worth to try to install a faster alternative seeking for a better performance. The author recommends <a href="http://openrdf.org">Sesame2</a> &#8211; a 100% pure Java RDF framework which works (surprisingly for many, I think &#8211; but not for me!) much faster than it&#8217;s native code counterpart.</p>
<p>I tested Nepomuk with Sesame and convinced that now it works really faster &#8211; as it should, in fact. There is of course, a room for improvements in Nepomuk to be a real end-user tool &#8211; e.g. a tag navigation interface without which the tags are rather useless, but its another story. At least, the performance is not a blocker anymore, so Nepomuk now is enabled in my KDE all the time.</p>
<h3>For Kubuntu users: How-to</h3>
<p>I tested the Sesame2 backend for Nepomuk on Kubuntu 9.04 Jaunty Jackalope, KDE 4.3.0 and Sun JRE 6 (I have no idea if it works with GNU Java, but you can give it a try).</p>
<ol>
<li>Install <strong>soprano-backend-sesame</strong> package (<code>sudo apt-get install soprano-backend-sesame</code>)</li>
<li>Make a symlink from <code>$JAVA_HOME/jre/lib/i386/client/libjvm.so</code> in the <code>/usr/lib</code> directory</li>
<li>Restart Nepomuk server</li>
</ol>
<p>Check if Sesame2 backend is used now:</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">qdbus org.kde.NepomukStorage /nepomukstorage usedSopranoBackend</pre></div></div>

<p>It should answer &#8220;<code>sesame2</code>&#8220;. If it still answers &#8220;<code>redland</code>&#8220;, something was wrong. You may need also to replace the value &#8220;<code>redland</code>&#8221; to &#8220;<code>sesame2</code>&#8221; in <code>~/.kde/share/config/nepomukserverrc</code> file manually and restart Nepomuk again.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2009/10/07/nepomuk-kde-with-the-sesame-backend/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RDFBeans: Now on Sourceforge</title>
		<link>http://blog.cyberborean.org/2009/08/04/rdfbeans-now-on-sourceforge</link>
		<comments>http://blog.cyberborean.org/2009/08/04/rdfbeans-now-on-sourceforge#comments</comments>
		<pubDate>Tue, 04 Aug 2009 10:44:07 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[RDFBeans]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://blog.cyberborean.org/?p=471</guid>
		<description><![CDATA[RDFBeans framework (see &#8220;Simple RDF data binding&#8220;) is a Sourceforge project now: http://rdfbeans.sourceforge.net]]></description>
			<content:encoded><![CDATA[<p>RDFBeans framework (see &#8220;<a rel="bookmark" href="../2009/02/06/simple-rdf-data-binding">Simple RDF data binding</a>&#8220;) is a Sourceforge project now:</p>
<p class="hand"><a href="http://rdfbeans.sourceforge.net">http://rdfbeans.sourceforge.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2009/08/04/rdfbeans-now-on-sourceforge/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PCN Beta is out</title>
		<link>http://blog.cyberborean.org/2009/07/01/pcn-beta-announce</link>
		<comments>http://blog.cyberborean.org/2009/07/01/pcn-beta-announce#comments</comments>
		<pubDate>Wed, 01 Jul 2009 10:00:27 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Laboranova]]></category>
		<category><![CDATA[PCN]]></category>
		<category><![CDATA[SCAN]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[socialnetworks]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.cyberborean.org/?p=435</guid>
		<description><![CDATA[Laboranova People-Concepts Networking Server is opened for beta-testing since today, Jul 1, 2009. What&#8217;s this It&#8217;s a prototype of a social network service where people are connected automatically via shared topics of interests extracted from their texts. You can find more on the PCN theory in this post. If you&#8217;re interested to play with it, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://laboranova.com">Laboranova</a> <a href="http://128.243.93.142/pcn-server/">People-Concepts Networking Server</a> is opened for beta-testing since today, Jul 1, 2009.</p>
<h2><span id="more-435"></span>What&#8217;s this</h2>
<p>It&#8217;s a prototype of a social network service where people are connected automatically via shared topics of interests extracted from their texts. You can find more on the PCN theory in <a href="http://blog.cyberborean.org/2009/04/07/people-concept-networking">this post</a>.</p>
<p>If you&#8217;re interested to play with it, we are glad to invite you to join the testing.</p>
<h2>How to join</h2>
<p>1. Request a personal invitation code by filling <a href="http://blog.cyberborean.org/feedback/pcnserver-reg">this form</a>. The code will be sent to the provided email address.</p>
<p>2. <a href="http://128.243.93.142/pcn-server/register">Register</a> on PCN with your invitation code. Your username must be the same you used in the request above.</p>
<p>3. Download, install and configure the PCN client (Conex) as proposed by the system.</p>
<p>To run the client, an installed <a href="http://java.sun.com/javase/downloads/">Java Runtime Environment</a> is required. You also may need the <a href="http://java.com/">Java plugin</a> installed into your browser for visualisation of the network in your server profile.</p>
<h2>The PCN Client</h2>
<p>The PCN client software (Conex, from &#8220;CONcept EXtraction&#8221;) is a desktop content aggregator collecting pieces of content from different locations (local folders, webs, email, RSS feeds, <a href="http://del.icio.us">Del.icio.us</a>, SharePoint servers &#8230;). The content is analyzed to extract valuable terms from the texts and assign them as the document tags (manual tagging is possible also). A user can browse her content collections with the tag cloud or  metadata facets, edit document metadata, annotate documents, search in the content collections and do a lot of other things. Those who are interested into details of client functionality and in a underlying technology, can check <a href="http://scan.sf.net">this site</a>.</p>
<p>To configure PCN connection, select  &#8220;PCN Client → Configure PCN Client&#8221; menu. At the first time, it will ask your username/password on the server and offer to create one or more <em>contexts</em> for your data. The contexts serves as navigation facets to browse the content collection and are useful to organize the content resources depending on your activities. After the contexts are defined, you can assign existing Conex content locations to them.</p>
<p><img class="aligncenter" title="pcnconfig" src="http://blog.cyberborean.org/wp-content/uploads/2009/07/pcnconfig.png" alt="pcnconfig" width="363" height="328" /></p>
<p>Autotagging is applied to individual documents by selecting them and choosing &#8220;Autotagging&#8230;&#8221; in the context menu. This operation can also be automated for all documents in a specific location, if &#8220;Apply autotagging for new documents&#8221; option is set in the location properties (&#8220;Settings&#8221; tab of the location dialog box). You can edit the results of autotagging or add new tags for selected documents using &#8220;Edit tags&#8221; option of the context menu.</p>
<p>As the content is tagged, Conex sends the tagging data and resource descriptions to the server, where a profile of user&#8217;s interests is created. All updates in the monitored locations are also sent to the server (in the specified time interval) to keep the user profile up-to-date.</p>
<p>By default, Conex works with the files in your local folders. To enable other types of content locations, you need to install the plugins. A plugin is installed with a single click in the Plugin Management console (&#8220;Tools → Manage plugins&#8230;&#8221; menu) and will be activated after restart.</p>
<p>PDF, MS Office, OpenOffice, HTML, XML and plain text documents are supported out of the box.</p>
<h3>For SCAN users</h3>
<p>To clarify the things, Conex is neither a proprietary fork, nor a new version of SCAN. It&#8217;s basically a rebranded distribution bundled with the common document <a href="http://scan.sourceforge.net/?page_id=6">plugins</a> and integrated into the PCN solution. There is a plugin providing connectivity with the PCN Server and it&#8217;s possible to install this plugin into &#8220;native&#8221; SCAN to use it as a full-featured PCN client. This likely won&#8217;t work with the released version, but should be ok with a SVN snapshot. Anyway, new SCAN version enabling the PCN plugin will be released soon, so stay tuned.</p>
<h2>The PCN Server</h2>
<p>The server receives data from the clients and builds the socio-semantic network of users connected via the tags they have in common. After you&#8217;ve submitted some data from Conex, you can check your profile on the server to see your tags and  people appeared in your personal network:</p>
<p><img class="size-full wp-image-448 aligncenter" title="pcnprofile" src="http://blog.cyberborean.org/wp-content/uploads/2009/07/pcnprofile.png" alt="pcnprofile" width="600" height="293" /></p>
<p>The people listed in your network are the users who have the similar interests. On their profile pages, you can see a detailed information on compatibility between you and a profile owner:</p>
<p><img class="size-full wp-image-446 aligncenter" title="pcncompat" src="http://blog.cyberborean.org/wp-content/uploads/2009/07/pcncompat.png" alt="pcncompat" width="236" height="400" /></p>
<p>The Network view displays a visualization of your complete network as a map of the overlapping clusters of tags you share with the members of your network:</p>
<p><img class="size-full wp-image-447 aligncenter" title="pcnnetwork" src="http://blog.cyberborean.org/wp-content/uploads/2009/07/pcnnetwork.png" alt="pcnnetwork" width="600" height="532" /></p>
<p>The map is interactive — double-clicking an element will navigate to a user profile or to a tag page.</p>
<p>The people search is also implemented. You can find users by their names, other profile data or by the tags:</p>
<p><img class="size-full wp-image-449 aligncenter" title="pcnsearch1" src="http://blog.cyberborean.org/wp-content/uploads/2009/07/pcnsearch1.png" alt="pcnsearch1" width="600" height="138" /></p>
<p><img class="aligncenter size-full wp-image-450" title="pcnsearch2" src="http://blog.cyberborean.org/wp-content/uploads/2009/07/pcnsearch2.png" alt="pcnsearch2" width="600" height="191" /></p>
<p>And finally, you can explore the content collections of the network members using faceted navigation with tags and contexts (supplemental metadata facets, such as document authors and  creation dates are also available).</p>
<p><img class="aligncenter size-full wp-image-445" title="pcncollection" src="http://blog.cyberborean.org/wp-content/uploads/2009/07/pcncollection.png" alt="pcncollection" width="600" height="497" /></p>
<h2>Your privacy</h2>
<p>⚠ The full text of the documents is not submitted to the server, however, Conex can use excerpts from the documents to fill the title and description metadata (if it is not defined explicitly). So, if your documents contain some sensitive information, parts of it may appear on the public. Please check and make sure that there are no private documents in the Conex locations you are about to assign to the PCN contexts. Well, you&#8217;ve been warned.</p>
<h2>Report issues</h2>
<p>It&#8217;s a beta, so  the bugs are likely to be there. Feel free to report the bugs, either in the Server or the Client,  to the <a href="http://pcn.cyberborean.org/issues">bug tracker</a> (registration is needed). Any other <a href="http://blog.cyberborean.org/feedback">feedback</a>, of course, is also more than welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2009/07/01/pcn-beta-announce/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>People-Concepts Networking</title>
		<link>http://blog.cyberborean.org/2009/04/07/people-concept-networking</link>
		<comments>http://blog.cyberborean.org/2009/04/07/people-concept-networking#comments</comments>
		<pubDate>Tue, 07 Apr 2009 15:55:59 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Essays]]></category>
		<category><![CDATA[Laboranova]]></category>
		<category><![CDATA[PCN]]></category>
		<category><![CDATA[SCAN]]></category>
		<category><![CDATA[SCOT]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[SIOC]]></category>
		<category><![CDATA[socialnetworks]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.cyberborean.org/?p=372</guid>
		<description><![CDATA[Today at University of Nottingham, we deployed an alpha of the People-Concept Networking platform prototype. It&#8217;s the alpha, so it doesn&#8217;t do a lot as yet and is released only for internal overview and testing of the basic infrastructure. It is however, an occasion to disclose what I am working at now, along with an [...]]]></description>
			<content:encoded><![CDATA[<p>Today at <a href="http://www.nottingham.ac.uk/business/index.html">University of Nottingham</a>, we deployed an alpha of the People-Concept Networking platform prototype. It&#8217;s the alpha, so it doesn&#8217;t do a lot as yet and is released only for internal overview and testing of the basic infrastructure. It is however, an occasion to disclose what I am working at now, along with an introduction to some PCN theory.</p>
<p><span id="more-372"></span><strong>Disclaimer:</strong> Like it says on the <a href="http://blog.cyberborean.org/author">author page</a>, I work for UoN and Laboranova project, but I cannot speak for it officially in this blog. These are my own views as a project insider and the other&#8217;s may differ.</p>
<h2>Back story</h2>
<div class="zemanta-img zemanta-action-dragged alignright">
<div>
<dl class="wp-caption alignright" style="width: 212px;">
<dt class="wp-caption-dt"><a href="http://commons.wikipedia.org/wiki/Image:Nottingham_University_Business_School.JPG"><img title="Nottingham University Business School, Jubilee..." src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Nottingham_University_Business_School.JPG/202px-Nottingham_University_Business_School.JPG" alt="Nottingham University Business School, Jubilee..." height="152" width="202"></a></dt>
<dd class="wp-caption-dd zemanta-img-attribution" style="font-size: 0.8em;">Nottingham University Business School, Jubilee campus<br />
(via <a href="http://commons.wikipedia.org/wiki/Image:Nottingham_University_Business_School.JPG">Wikipedia</a>)</dd>
</dl>
</div>
</div>
<p>As far back as in early 2008, I&#8217;ve been introduced into PCN proposal and invited for collaboration on a R&amp;D for its prototype implementation. It was very interesting for me and we developed a vision and basic design principles of the PCN solution to start the prototype development at the beginning of 2009.</p>
<p>This work is <a href="http://laboranova.com/tools/profile-system">a part</a> of <a href="http://laboranova.com">Laboranova</a> — a large EU project aimed at new ways of collaboration between knowledge workers and sharing ideas and competencies. Apart from PCN, there are lots of other interesting thngs the project partners do there.</p>
<h2>PCN basics</h2>
<p>The idea is a social networking where the members were connected via shared areas of expertise. These areas are identified by the topics of interests, discovered at user&#8217;s content.</p>
<p>Like other social network services connect people via shared professional activities, schools, hobbies or music tastes, PCN approach employs the shared semantics of texts the people read or write. There is an optimistic assumption that such semantics, expressed as sets of the weighted keywords (or, tag clouds), may reflect an area of user&#8217;s expertise and constitute a  profile of his professional interests.</p>
<p>Multiple user profiles are aggregated to create expertise information and form a socio-semantic network of people and concepts. Comparing profiles of different users, we can evaluate a similarity of their expertises and thus, estimate their social distance in the network. We also can take a specific area of expertise to find who are the best experts relevant to it, and explore the related overlapping areas. With this network analysis, it is possible to generate a variety of individual recommendations to help people to discover new collaboration opportunities and areas of knowledge.</p>
<h2>The Platform</h2>
<p>There is a client-server architecture including a central PCN server and a number of clients connected to it. The PCN client software is installed locally and analyses content from different locations specified by its owner: file folders, webs, email, RSS, delicious accounts, SharePoint servers and so on.</p>
<p>A user can let the software extract the keywords from the content automatically, edit the results or choose to tag the content manually. Then he chooses what locations should be submitted to the server and assigns them to one or more named <em>contexts </em>which help to organize the concepts within the user profile. Document metadata and tagging information is uploaded to the server where an individual profile of tags is created and published. As a location is submitted to the server, it is monitored for changes to synchronize the profile with the actual state of the content (by sending incremental updates at a specified time interval).</p>
<h2>The Client</h2>
<p>The&nbsp; client part is based on <a href="http://scan.sf.net">SCAN</a>, so there is a zero barrier to start working with it for SCAN users. Actually, from a SCAN user perspective, there is no difference from usual everyday work — you can enjoy a full set of features one can find in native &#8220;offline&#8221; SCAN, but also use it for populating your public profile of interests at the PCN server.</p>
<p>Also, variety of location types and document formats are supported by the client thanks to the plugins from the <a href="http://scan.sourceforge.net/?page_id=6">SCAN repository</a>.</p>
<h2>The Ontology</h2>
<p>The server receives metadata about content resources as <a href="http://sioc-project.org/">SIOC</a> RDF, so in theory, it may work with any SIOC provider, apart from the default PCN client. The server augments resource metadata with relationships to the user profile, concepts and contexts, thus forming the quadripartite PCN ontology model:</p>
<div id="attachment_380" class="wp-caption aligncenter" style="width: 385px"><img class="size-full wp-image-380" title="pcnmodel" src="http://blog.cyberborean.org/wp-content/uploads/2009/04/pcnmodel.png" alt="PCN quadripartite model" height="296" width="375"><p class="wp-caption-text">PCN quadripartite model</p></div>
<p>To describe the PCN model, we adopted <a href="http://scot-project.org/scot/">SCOT</a> (Semantic Clouds Of Tags) ontology aimed at conceptualization of the structure and&nbsp; semantics of tagging data with strong focus on social interoperability. It is an extension and further development of the <a href="http://www.holygoat.co.uk/projects/tags/">Tag Ontology</a> project that describes the relationship between an agent, an arbitrary resource, and one or more tags.</p>
<p>The SCOT (Tag) ontology is based on a tripartite (User—Tag—Resource) model. These three core concepts are connected together via a central concept  of <em>Tagging</em> representing the tagging activity. Every <em>Tagging</em> instance can be considered as a result of a single tagging action defining a user who performed it, the tagged resource and what tags have been used. It also can carry auxiliary information about the action, such as the time of tagging.</p>
<p>For users and resources, SCOT relies upon concepts from SIOC — specifically, <em>sioc:User</em> and <em>sioc:Item</em> classes. For our PCN ontology, we extended the SCOT model with the notion of&nbsp; context by adding another class of entities and a property to relate them with the <em>Tagging</em> instances.</p>
<div id="attachment_383" class="wp-caption aligncenter" style="width: 382px"><img class="size-full wp-image-383" title="pcnmodel2" src="http://blog.cyberborean.org/wp-content/uploads/2009/04/pcnmodel2.png" alt="SCOT Tagging as a skeleton of PCN model" height="298" width="372"><p class="wp-caption-text">Extended SCOT Tagging as a skeleton of the PCN model</p></div>
<p>Using SCOT Tagging model, it is possible to avoid excessive verbosity in the PCN ontology, as the relationships between core PCN classes (the edges of the tetrahedron) are inferable from their relationships with the central <em>Tagging</em> class (the skeleton). In the diagram below, the implicit relations are shown as dashed.</p>
<div id="attachment_385" class="wp-caption aligncenter" style="width: 448px"><img class="size-full wp-image-385" title="pcnontology" src="http://blog.cyberborean.org/wp-content/uploads/2009/04/pcnontology.png" alt="PCN Ontology" height="337" width="438"><p class="wp-caption-text">PCN Ontology</p></div>
<p>An interesting possibilities comes from the fact that the <em>scot:Tag</em> is actually a subclass of the <a href="http://www.w3.org/TR/swbp-skos-core-guide">SKOS</a> <em>Concept</em>, so all kinds of SKOS reasonings about the concepts are possible in the future. Moreover, <a href="http://moat-project.org/ontology">MOAT</a> features incorporated in SCOT open a way to integrate the tag descriptions with the <a href="http://linkeddata.org/">Linked Data web</a>.</p>
<h2>The API</h2>
<p>The client talks to the server via a simple RESTful API for adding and modifying the users metadata. As said above, the metadata is described with SIOC, so it is theoretically possible to use that API and integrate the PCN server with any system which can provide SIOC metadata about the content.</p>
<p>An endpoint for SPARQL queries is planned also.</p>
<h2>For more information:</h2>
<ul>
<li><a href="http://laboranova.com/tools/profile-system">An early description of the work package</a> (Laboranova Profile System) on Laboranova web-site.</li>
<li><span class="extiw">Marc Pallot et al, &#8220;</span><a class="extiw" title="bscw:d169898/050622_PA_A11_Future_Workplaces_towards_the_Collaborative_Web.pdf" href="http://www.ami-communities.net/bscw/bscw.cgi/d169898/050622%20PA%20A11%20Future%20Workplaces%20towards%20the%20Collaborative%20Web.pdf">Future Workplaces, towards the &#8216;Collaborative&#8217; Web</a>&#8220;</li>
<li>Peter Mika, &#8220;<a href="http://portal.acm.org/citation.cfm?id=1229195">Ontologies are us : A unified model of social networks and semantics</a>&#8220;</li>
<li><span class="taggedlink">Hak-Lae Kim et al, &#8220;</span><a class="taggedlink" rel="nofollow" href="http://scot-project.org/pubs/kim_ReviewAlignmentTag.pdf">Review and Alignment of Tag Ontologies for Semantically-Linked Data in Collaborative Tagging Spaces</a><span class="taggedlink">&#8220;</span><span class="taggedlink"> , &#8220;</span><a class="taggedlink" rel="nofollow" href="http://scot-project.org/pubs/Kim_TagOnt.pdf">The State of the Art in Tag Ontologies: A Semantic Model for Tagging and Folksonomies</a><span class="taggedlink">&#8220;</span></li>
<li><a href="http://scot-project.org/scot/">SCOT</a></li>
<li><a href="http://sioc-project.org/">SIOC</a></li>
</ul>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/c4cb9714-6625-40ef-8cdc-174171e7b3a5/" title="Reblog this post [with Zemanta]"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=c4cb9714-6625-40ef-8cdc-174171e7b3a5" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2009/04/07/people-concept-networking/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple RDF data binding</title>
		<link>http://blog.cyberborean.org/2009/02/06/simple-rdf-data-binding</link>
		<comments>http://blog.cyberborean.org/2009/02/06/simple-rdf-data-binding#comments</comments>
		<pubDate>Fri, 06 Feb 2009 19:52:45 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Howtos]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[RDFBeans]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://blog.cyberborean.org/?p=315</guid>
		<description><![CDATA[A large part of SW development is representing the information as RDF for persistence and interoperability. It&#8217;s usually done with lots of the glue code to map the programming object model to RDF triples and vice versa. Update: RDFBeans is an open-source object-RDF databinding and persistence library for the Semantic Web development with Java language. [...]]]></description>
			<content:encoded><![CDATA[<p>A large part of SW development is representing the information as RDF for persistence and interoperability. It&#8217;s usually done with lots of the glue code to map the programming object model to RDF triples and vice versa.</p>
<p><span id="more-315"></span></p>
<div class="excerpt">
<p><span class="upd"><strong>Update:</strong></span> RDFBeans is an open-source object-RDF databinding and persistence library for the Semantic Web development with Java language. It provides a framework for mapping an object-oriented domain model to RDF resource descriptions. </p>
<p>Information on this page is likely outdated. Please refer to:</p>
<ul>
<li><a href="http://rdfbeans.sf.net">The project web-site</a></li>
<li><a href="http://rdfbeans.sourceforge.net/apidocs/index.html">Javadocs</a></li>
<li><a href="http://rdfbeans.sourceforge.net/download.html">How to get the sourcecode or configure Maven dependency</a></li>
</ul>
<p>All posts about RDFBeans framework are <a href="/tag/rdfbeans">here</a>.
</div>
<p>Working on my current project, I had to deal with a rich object model  which is persisted into a RDF triple-store, so quickly I stuck in writing the object-triples translation code. I thought it would be a good idea to automate this by providing a simple data binding framework for transparent mapping of the Java objects to RDF (like <a href="http://www.hibernate.org/">Hibernate</a> and other tools does so for SQL or XML) with the following requirements in mind:</p>
<ul>
<li>It should be easy to make existing classes compatible with the framework with minimum modifications. This should not affect the business object model (no special interfaces and superclasses) and should not interfere with common <a class="zem_slink" title="JavaBean" rel="wikipedia" href="http://en.wikipedia.org/wiki/JavaBean">JavaBeans</a>-oriented frameworks (like Spring, etc.). Any <a class="zem_slink" title="JavaBean" rel="wikipedia" href="http://en.wikipedia.org/wiki/JavaBean">JavaBean</a>-like <a class="zem_slink" title="Plain Old Java Object" rel="wikipedia" href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object">POJO</a> class can be  RDF-serializable just with few <a class="zem_slink" title="Java annotation" rel="wikipedia" href="http://en.wikipedia.org/wiki/Java_annotation">Java annotations</a> added.</li>
<li>No predefined ontologies and RDF-schemas are required.</li>
<li>Class information is stored in the RDF model for transparent instantiation of the objects.</li>
<li>Cascade binding for related objects should be supported.</li>
<li>Basic Java Collection types should be supported.</li>
</ul>
<p>This framework is implemented using Java annotations and Reflection APIs and works with major RDF triple-stores  (via <a href="http://semanticweb.org/wiki/RDF2Go">RDF2GO</a> abstraction layer).</p>
<h2>RDF Beans</h2>
<p>In order to be mapped to an RDF resource, a Java class must obey certain conventions:</p>
<ul>
<li>The class must have a public default (no-argument) constructor.</li>
<li>The class declaration must have a <code>@RDFBean</code> annotation to associate it with appropriate <a class="zem_slink" title="RDF Schema" rel="wikipedia" href="http://en.wikipedia.org/wiki/RDF_Schema">RDFS</a> class:

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;">@RDFBean<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://xmlns.com/foaf/0.1/Person&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Person <span style="color: #009900;">&#123;</span> ...</pre></div></div>

</li>
</ul>
<p>See also: <a href="http://cyberborean.org/files/rdfbeans/1.0/examples/Person.java">A RDFBean class example</a>.</p>
<h3>Properties</h3>
<p>The class properties must be accessible using standard getter and setter methods. The properties are mapped to their RDF counterparts with <code>@RDF</code> annotations:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@RDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://xmlns.com/foaf/0.1/name&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #003399;">String</span> name<span style="color: #339933;">;</span>
&nbsp;
@RDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://xmlns.com/foaf/0.1/mbox&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #003399;">String</span> email<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getName<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">return</span> name<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setName<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">name</span> <span style="color: #339933;">=</span> name<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getEmail<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">return</span> email<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setEmail<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">email</span> <span style="color: #339933;">=</span> email<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span></pre></div></div>

<p>The argument of <code>@RDF</code> is a valid URI of a RDF property (predicate) in a domain of the specified RDFS class.  The following types of properties are permitted:</p>
<ul>
<li>A Literal (<code>String, Boolean, Date, Integer, Float, Double, Long, Short, Byte, java.net.URI</code>)</li>
<li>Another RDFBean class</li>
<li>A Java Collection (List or Set) of Literals or RDFBeans</li>
</ul>
<p>Literal values are represented in RDF with corresponding <a class="zem_slink" title="XML schema" rel="wikipedia" href="http://en.wikipedia.org/wiki/XML_schema">XML-Schema</a> datatypes and Collections with RDF Containers (<a href="http://www.w3.org/TR/rdf-schema/#ch_bag">rdf:Bag</a> or <a href="http://www.w3.org/TR/rdf-schema/#ch_seq">rdf:Seq</a> depending on a Collection type). References to other RDFBean objects will be kept as RDF object properties and the values will be represented as separate RDF resources.</p>
<h3>RDF subject</h3>
<p>There must be a special String property to hold an unique URI value to identify the RDF resource (the subject URI). It must be accessible with getter and setter methods and be marked with <code>@RDFSubject</code> annotation:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@RDFSubject
<span style="color: #003399;">String</span> id<span style="color: #339933;">;</span></pre></div></div>

<p>The property value must be a valid absolute URI, otherwise you can use the <code>prefix</code> argument for a common prefix to construct URIs from arbitrary String identifiers:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@RDFSubject<span style="color: #009900;">&#40;</span>prefix<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;http://example.com/persons#&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #003399;">String</span> id<span style="color: #339933;">;</span></pre></div></div>

<h2>Data Binding</h2>
<p>RDFBeans data binding framework is based on <a href="http://semanticweb.org/wiki/RDF2Go">RDF2Go API</a> which creates an abstraction layer above physical RDF storages. It makes an RDF model independent from specific RDF frameworks (such as <a class="zem_slink" title="Sesame (framework)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Sesame_%28framework%29">Sesame</a> and <a class="zem_slink" title="Jena (framework)" rel="homepage" href="http://jena.sourceforge.net/">Jena</a>), thus it can work with any, if a RDF2Go adapter is implemented.  The data binding is performed using single <code>RDFBinding</code> class, which is initialized with existing RDF2Go model:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.cyberborean.rdfbeans.RDFBinding</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.ontoware.rdf2go.RDF2Go</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.ontoware.rdf2go.model.Model</span><span style="color: #339933;">;</span>
...
<span style="color: #006633;">Model</span> model <span style="color: #339933;">=</span> RDF2Go.<span style="color: #006633;">getModelFactory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">createModel</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
model.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
RDFBinding binding <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RDFBinding<span style="color: #009900;">&#40;</span>model<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The <code>marshal</code> method converts a Java object into a RDF resource in the model:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Person person <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Person<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
person.<span style="color: #006633;">setId</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://example.com/staff#johndoe&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
person.<span style="color: #006633;">setName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;John Doe&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
person.<span style="color: #006633;">setEmail</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;johndoe@example.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
...
<span style="color: #006633;">binding</span>.<span style="color: #006633;">marshal</span><span style="color: #009900;">&#40;</span>person<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>This code will create a set of RDF statements representing the properties of the given object in the model:</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">&lt;http://example.com/staff#johndoe&gt; &lt;http://www.w3.org/<span style="">1999</span>/02/<span style="">22</span>-rdf-syntax-ns#type&gt; &lt;http://xmlns.com/foaf/<span style="">0.1</span>/Person&gt; .
&lt;http://example.com/staff#johndoe&gt; &lt;http://xmlns.com/foaf/<span style="">0.1</span>/name&gt; &quot;John Doe&quot;^^&lt;http://www.w3.org/<span style="">2001</span>/XMLSchema#string&gt; .
&lt;http://example.com/staff#johndoe&gt; &lt;http://xmlns.com/foaf/<span style="">0.1</span>/mbox&gt; &quot;johndoe@example.com&quot;^^&lt;http://www.w3.org/<span style="">2001</span>/XMLSchema#string&gt; .</pre></div></div>

<p>Additionally, it adds a special statement to associate the RDFS class with Java:</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">&lt;http://xmlns.com/foaf/<span style="">0.1</span>/Person&gt; &lt;http://cyberborean.org/rdfbeans/<span style="">1.0</span>/bindingClass&gt; &quot;com.example.Person&quot; .</pre></div></div>

<p>The <code>marshal</code> method inspects the properties which link the object with other RDFBeans and initiates their cascade binding to the RDF model, thus simplifying the development and ensuring referential integrity of the RDFBeans.</p>
<p>To reconstruct a Java object from RDF model, there is <code>unmarshal</code> method:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.ontoware.rdf2go.model.node.URI</span><span style="color: #339933;">;</span>
...
<span style="color: #006633;">URI</span> subject <span style="color: #339933;">=</span> model.<span style="color: #006633;">createURI</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://example.com/staff#johndoe&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Person person <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Person<span style="color: #009900;">&#41;</span> binding.<span style="color: #006633;">unmarshal</span><span style="color: #009900;">&#40;</span>subject<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The method creates new instance of the Java class (defined by <code>http://cyberborean.org/rdfbeans/1.0/bindingClass</code> property) and fill the properties with data from the RDF model. If a property holds a reference to another RDFBean, it results into cascade unmarshalling of related objects, thus restoring the original object model.</p>
<h2>Code</h2>
<ul>
<li><a href="http://cyberborean.org/files/rdfbeans/1.0/">RDFBeans JAR and source code</a></li>
<li><a href="http://cyberborean.org/files/rdfbeans/1.0/apidocs/">Javadocs</a></li>
</ul>
<p><strong>[Update: 2009-08-04]</strong></p>
<p>RDFBeans framework is released on SourceForge: <a href="http://rdfbeans.sourceforge.net/">http://rdfbeans.sourceforge.net</a>. The API has been changed, please check the <a href="http://rdfbeans.sourceforge.net/usage.html">documentation</a> and <a href="http://rdfbeans.sourceforge.net/apidocs/index.html">Javadocs</a> for details.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2009/02/06/simple-rdf-data-binding/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Disturbing news from Kowari</title>
		<link>http://blog.cyberborean.org/2006/01/09/disturbing-news-from-kowari</link>
		<comments>http://blog.cyberborean.org/2006/01/09/disturbing-news-from-kowari#comments</comments>
		<pubDate>Mon, 09 Jan 2006 12:06:29 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Ongoing]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2006/01/09/disturbing-news-from-kowari/</guid>
		<description><![CDATA[[Updated at Jan,11] David Wood, one of the key persons behind Kowari Metastore open source project had resigned himself as project administrator and developer because of haughty and proprietaristic policy of the Northrop Grumman corp, a major Kowari sponsor. From David&#8217;s post to the Kowari mailing list: This action follows receipt of a letter from [...]]]></description>
			<content:encoded><![CDATA[<p>[<a href="http://cyberborean.wordpress.com/2006/01/09/disturbing-news-from-kowari#add">Updated at Jan,11</a>]</p>
<p><a href="http://prototypo.blogspot.com">David Wood</a>, one of the key persons behind <a href="http://www.kowari.org">Kowari Metastore</a> open source project had resigned himself as project administrator and developer because of haughty and proprietaristic policy of the <a href="http://www.northropgrumman.com">Northrop Grumman corp</a>, a major Kowari sponsor.<br />
<span id="more-38"></span><br />
From David&#8217;s post to the <a href="http://sourceforge.net/mailarchive/message.php?msg_id=14414625">Kowari mailing list</a>:</p>
<blockquote><p>This action follows receipt of a letter from Northrop Grumman advising me that any attempt to release Kowari version 1.1 could  cause &#8220;irreparable harm&#8221; to their company.  I received the letter on  Friday, 6 January 2006 and took no action on the project after that time.</p>
<p>Northrop Grumman&#8217;s position seems to be that they &#8220;purchased all rights associated with the Kowari software&#8221;, a position not reconcilable with their continued release of the software under the Mozilla Public License, version 1.1.</p></blockquote>
<p>A little of history: Kowari had been started by Tucana Technologies as an open-source base for their commercial solution, Tucana Knowledge Server (TKS). After collapsing Tucana in June 2005, Northrop Grumman bought its legacy, including TKS.</p>
<p>Now NGC claimed that they also have &#8220;all rights&#8221; to Kowari, despite the fact that they <a href="http://tucana.es.northropgrumman.com/background.htm">stated</a>:</p>
<blockquote><p>Northrop Grumman Corp. (NYSE: NOC) purchased the rights to proprietary software developed by Tucana Technologies &#8230;</p></blockquote>
<p>But Kowari was <em>not</em> a proprietary software, it is a free software under MPL and a volunteer project at Sourceforge. I&#8217;m sure NGC has no rights, neither moral nor legal to oppress the Kowari community. I think, it is a suspicious precedent for all open source world.</p>
<p>Kowari was the first project who had recognized my <a href="http://sofa.semanticweb.org">SOFA</a> software and developed integration of SOFA API with their product. I acknowledged Kowari as a brother project and had my own contribution to it. So, I&#8217;m worried of all these things.</p>
<p>I will follow the events anyway.</p>
<p><strong>Added later:</strong></p>
<p>I feel my responsibility to claim the position of the SOFA project in this conflict so I wrote the mailing list post in support of Kowari team. An excerpt:</p>
<blockquote><p>If any of Northrop Grumman&#8217;s representatives will read this, we let you know that if one day NGC would change Kowari&#8217;s license and try to turn it to a proprietary software, we will break Kowari/JRDF support in SOFA API and will insist for removing any SOFA-related code from Kowari.</p></blockquote>
<p>The full text of the letter is <a href="http://sourceforge.net/mailarchive/message.php?msg_id=14420914">here</a>.</p>
<p><strong>Added [Jan,10 14:28]:</strong></p>
<p>Few bloggers have responded to the situation around resigning the Kowari admin:</p>
<ul>
<li><a href="http://clarkparsia.com/weblog/2006/01/09/is-northrup-grumman-smushing-kowari/">Is Northrup Grumman Smushing Kowari?</a></li>
<li><a href="http://etymon.blogspot.com/2006/01/trouble-in-kowari-land.html">Trouble in Kowari-land</a></li>
<li><a href="http://morenews.blogspot.com/2006/01/northrop-grumman-killing-kowari.html">Northrop Grumman Killing Kowari?</a></li>
<li><a href="http://gearon.blogspot.com/2006/01/speculation-blogosphere-has-started.html">Speculation Blogosphere has started</a></li>
</ul>
<p>The opinions are rather different: from comparing Kowari with <em>&#8220;a dog that Northrup Grumman seems determined to publicly beat to death&#8221;</em> to <em>&#8220;Since NGC are not aware of how an Open Source project works, it is conceivable that they would try to interfere with users&#8217; ability to continue to use and extend Kowari&#8221;</em>. The last one sounds like an attempt of NGC advocacy  but it is a bit strange: David received the legal letter from a corporate lawyer and if he (I mean the lawyer) was <em>not aware of</em> (that is, has never read) the text of <em>their software license</em> &#8211; then what does he do in a software company? He should be immediately fired out by his employer!</p>
<p>I don&#8217;t believe in that &#8220;incompetency&#8221;. IMHO, they (NGC) are fully aware of what they are doing.</p>
<p>AFAIK, three of four blog authors above are the project members. But we Kowari users would like also to hear the NGC official position.</p>
<p><strong>Added [Jan,11 11:31]</strong><br />
David has posted  a <a href="http://prototypo.blogspot.com/2006/01/northrop-grummans-position-on-kowari.html">Northrop Grumman&#8217;s Position on Kowari</a> article where he has published the NGC officer&#8217;s letter which caused a conflict and his response to it. So, everyone can make her own conclusions.</p>
<p><strong>Added [Jan,11 12:50]</strong><a title="add" name="add"></a><br />
<a href="http://etymon.blogspot.com">Andrae Muys</a>, another Kowari administrator, has <a href="http://sourceforge.net/mailarchive/forum.php?thread_id=9438791&amp;forum_id=38668">send a letter</a> to the Northrop Grumman&#8217;s director of the Tucana project where he notifying about revoking admin privileges of a NGC representative and about <strong>releasing Kowari 1.1 on the evening of the 18th of January AEST</strong>. Quote:</p>
<blockquote><p>What ever you purchased from Tucana you did not purchase us.</p></blockquote>
<p>Bravo, Andrae!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2006/01/09/disturbing-news-from-kowari/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

