<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4834836240946967525</id><updated>2011-11-22T16:07:15.357-08:00</updated><category term='lsid arguments'/><category term='&quot;semantic web&quot;'/><category term='client'/><category term='new_blog'/><category term='&quot;semantic web&quot; &quot;relational databases&quot;'/><category term='Web Services'/><category term='roomba &quot;roomba 540&quot; cleaning amusement'/><category term='iGoogle'/><category term='resolution'/><category term='Web 2.0'/><category term='mashups'/><category term='BioMoby'/><category term='URI URL stable &quot;semantic web&quot; identifiers'/><category term='lsid coolURIs'/><category term='lsid rdf client'/><category term='lsid'/><category term='hypotheses'/><category term='Semantic Web Services'/><category term='SWAN'/><category term='lsid client'/><category term='404'/><category term='mashup'/><category term='CPAN'/><category term='lsid &quot;hello world&quot; metadata authority &quot;metadata resolver&quot; resolver'/><category term='connotea'/><title type='text'>Semantic Musings</title><subtitle type='html'>A place where I publicly ponder, explore, and rant (mostly rant :-) ) about issues that come up during the course of my laboratory's research into the Semantic Web in Health Care and Life Sciences.  The thoughts here are sometimes very raw (a.k.a. half-baked), but reflect the current state of my thinking. The content of this site may irritate some readers... and sometimes it is meant to!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-3395495960867567400</id><published>2011-11-22T15:37:00.000-08:00</published><updated>2011-11-22T16:07:15.386-08:00</updated><title type='text'>Linked Data, Semantic Web, and Web 3.0</title><content type='html'>There are three "movements" in the community that seem to be synonymous in many discussions, but are becoming quite distinct in my own mind.  Linked Data, the Semantic Web, and "Web 3.0".  This is my current mindset regarding how these movements might be more precisely defined, and how the three movements differ.&lt;br /&gt;&lt;br /&gt;Linked-Data is a movement to get all data on the Web exposed as Triples.  There isn't much attention paid to the entity-types or relationship-types used to achieve this - the goal is just to get the data (a) published, and (b) published in a standard computationally-consumable "model".  This movement is being pushed by the W3C (in particular) and I can understand why!  Like HTML, publishing data in Triples is a pretty low barrier-to-entry and helps fulfill the objective of getting the maximum amount of buy-in from the global community.  The football of data integration is kicked down the road to solve at a later date, just as technologies were invented after the fact to (try to) integrate HTML-formatted data.&lt;br /&gt;&lt;br /&gt;The Semantic Web movement spends much more time thinking about what the entities ARE, and what the relationships between them ARE (and can be).  So far, this movement is being spearheaded by a relatively small number of ontology consortia; the global thought-leaders who are defining these entities and relationships are quite visible (and influential!) on various mailing lists and blogs.  This "concentration of power" in the hands of a few leaders is, I believe, the result of a much higher level of difficulty in deep and accurate semantic modeling.  Frankly, getting semantics right is hard!  I am certainly one of the masses in this regard - when I have a semantic representation problem, I generally defer to one of these thought-leaders to tell me how to do it properly (though amusingly, not all thought-leaders agree on "properly"...)&lt;br /&gt;&lt;br /&gt;"Web 3.0", however, in my opinion, is (should be) a completely different animal!  What distinguished Web 2.0 was that the content was user-generated.  Individuals could publish their own opinions and thoughts and information through straightforward interfaces, and this data ended-up (often) being produced in a form that could easily be consumed by other interfaces, and "mashed-up" into enormously useful applications.  So, given the analogous 3.0 moniker, I suggest that Web 3.0 should represent the combination of Semantic Web with Web 2.0 - a Web in which individuals are producing fragments of ontologies... INDIVIDUALIZED ontologies... which can be shared, compared, mashed-up, and utilized to interpret Linked Data.  Rather than the ontology being the product of consortium group-think, it is the product of an individual... perhaps representing the opinion of only the individual who published it!  &lt;br /&gt;&lt;br /&gt;This vision of Web 3.0 is what my group is pushing for, and we're trying to build the interfaces that make it (a) easy for an individual to create these personalized knowledge-fragments, (b) easy for others to use these artifacts to interpret their data "through the eyes of another" in order to promote crucial scientific discourse and disagreement, and (c) easy for anyone to compare and contrast the ideas and understand the foundation for the differences between them (and then hopefully conceive and conduct experiments to evaluate the "truth" behind these differences!)&lt;br /&gt;&lt;br /&gt;I realize that I am imposing definitions on existing words, but... I'm not satisfied with the current (loose) definitions of these words! So, this is how I define them, for myself, in order to keep them clear in my own head :-)  Certainly, I think "the holy grail" is Web 3.0, and it's the goal that I am devoting my research career to achieving!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-3395495960867567400?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/3395495960867567400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=3395495960867567400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/3395495960867567400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/3395495960867567400'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2011/11/linked-data-semantic-web-and-web-30.html' title='Linked Data, Semantic Web, and Web 3.0'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-4927434762909725500</id><published>2010-02-18T13:19:00.000-08:00</published><updated>2010-02-18T13:32:26.445-08:00</updated><title type='text'>No basis in "reality" from the get-GO?</title><content type='html'>I just read &lt;a href="http://www.nature.com/nbt/journal/v28/n2/full/nbt0210-128.html"&gt;THIS&lt;/a&gt; paper in Nature Biotechnology, concerning the manipulation of GO to enhance its utility for automated high-throughput annotation.  I found it quite... amusing...??  ...disturbing...??&lt;br /&gt;&lt;br /&gt;It speaks to what we have been &lt;a href="http://i9606.blogspot.com/2008/07/ontoloki-lives.html"&gt;saying for years&lt;/a&gt; - that one of the problems with GO is that the answer to the question 'why is this protein annotated into this node' is, and can only be, 'Because I Say So'.  There is no class-definition for any of the classes beyond a human readable description of what the class term means.  As a result, it's really hard to know if the GO represents 'reality' of any sort (biological or otherwise), and the fact that they can manipulate this 'reality' in order to maximize entropy strongly suggests to me that it doesn't represent 'reality' at all, but rather represents something different.  &lt;br /&gt;&lt;br /&gt;That isn't to say that it isn't USEFUL!!  There's &lt;span style="font-weight:bold;"&gt;no question at all&lt;/span&gt; about the utility and power of the GO!!  Whether or not it represents 'reality' is irrelevant if that's not what it is designed to represent :-)  (though I think the Barry Smith's of the world would be pretty choked if we were happily building ontologies that didn't attempt to represent reality LOL!)&lt;br /&gt;&lt;br /&gt;Nevertheless, I am increasingly convinced that we (in the Semantic Web community) need an alternative gene ontology that somehow classifies something... 'definable'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-4927434762909725500?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/4927434762909725500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=4927434762909725500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/4927434762909725500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/4927434762909725500'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2010/02/no-basis-in-reality-from-get-go.html' title='No basis in &quot;reality&quot; from the get-GO?'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-4554269110584434742</id><published>2009-03-03T18:42:00.002-08:00</published><updated>2009-03-04T08:44:12.263-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mashups'/><category scheme='http://www.blogger.com/atom/ns#' term='hypotheses'/><category scheme='http://www.blogger.com/atom/ns#' term='connotea'/><category scheme='http://www.blogger.com/atom/ns#' term='SWAN'/><title type='text'>Connotea + ED + SWAN</title><content type='html'>Anyone who is following this blog will notice that I stopped blogging some time ago.  I guess I'm old enough to be "old school", and I worry about putting half-baked ideas online because they become associated with my own reputation (such as it is!  LOL!).  Chances are, that isn't true!  I am probably looking at Blogs far too formally, and assuming that my peers read blogs in the mindset that they read peer-reviewed papers... and while I know that is not true, it's still difficult for me to get over that perception.&lt;br /&gt;&lt;br /&gt;Nevertheless!  This evening I was having a conversation with &lt;a href="http://i9606.blogspot.com/"&gt;Ben Good&lt;/a&gt; and he convinced me that I should put the content of that conversation up on my Blog so that he could run with it, create a killer-app, take-over the world, make a fortune, claim credit, and then acknowledge me in a footnote somewhere (He's gonna KILL me for saying it that way!  LOL!)&lt;br /&gt;&lt;br /&gt;So... here, verbatim, is the content of our email conversation... and I suspect that Ben and Eddie will, in a matter of days, create the said killer-app that brings these ideas to reality!&lt;br /&gt;&lt;br /&gt;___________________________________________&lt;br /&gt;&lt;br /&gt;Ben: What I see when I look hard is basically that the&lt;br /&gt;tags themselves are not of very high value - especially where lots of&lt;br /&gt;text is available.  What is likely higher value is the availability of&lt;br /&gt;a publicly accessible record of scientific attention - perhaps similar&lt;br /&gt;to the Pubmed query logs except that its very easily accessible to the&lt;br /&gt;public.  This data tells us what people think is important.  Its&lt;br /&gt;reminding me a lot of things I read a million years ago in cognitive&lt;br /&gt;science regarding human attention - we are generally very tightly&lt;br /&gt;focused on small sections of the incoming data while we also process&lt;br /&gt;the bits at the edges but to a much lower degree.  I suspect that if&lt;br /&gt;we could plot the amount of attention within, for example, the visual&lt;br /&gt;field, we might see something very similar to the plots of posts per&lt;br /&gt;paper (the power laws) from our data.  That could make a very&lt;br /&gt;interesting analogy if it worked out.  Social tagging repositories as&lt;br /&gt;the record of the hive mind's track of attention.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mark:  I don't disagree with you AT ALL!  to be honest, the greatest benefit that *I* get from Connotea is the ability to follow the literature that is being read by people I respect/trust!  i almost never use Connotea to re-discover stuff that I already have read, except in certain cases where I need to quote something, and then I find that Google finds that paper more easily than Connotea because I can remember enough of the sentence to discover it with a text search but not enough of the paper to remember what I would have tagged it with!! ...I suspect there's something to be learned in that... further to that thought... I think that &lt;a href="http://swan.mindinformatics.org/"&gt;SWAN&lt;/a&gt; does what Connotea desperately lacks!  I use Connotea to learn what I need to know, based on what others in my "peer group" are reading.  While Connotea has a "comments" field, it is almost never used... but that is the ONLY purpose of SWAN!  What I want to know is (a) what are you reading, but more importantly (b) what are you THINKING!  Connotea misses that mark... by a LONG shot... What has always bothered me about SWAN was that it is just another Silo {Tim, I don't mean that in a disparaging way!  I just mean that it isn't clear how to link-in to SWAN from other tools that I already use.  I &lt;b&gt;&lt;i&gt;LOVE&lt;/i&gt;&lt;/b&gt; SWAN!}.  But just now (in the toilet!) I realized that what we need is an &lt;a href="http://entitydescriber.org"&gt;ED2Connotea&lt;/a&gt;2SWAN!  We need to over-ride both the tagging interface AND the comment box, and connect the comment-box into the SWAN infrastructure.  We should look into this, and if it isn't obvious how to do it, talk to Tim about the idea...&lt;br /&gt;____________________________________________&lt;br /&gt;&lt;br /&gt;So... Ben... go rule the world!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-4554269110584434742?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/4554269110584434742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=4554269110584434742' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/4554269110584434742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/4554269110584434742'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2009/03/connotea-ed-swan.html' title='Connotea + ED + SWAN'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-5162330183036618011</id><published>2008-05-30T11:02:00.000-07:00</published><updated>2008-05-30T12:36:15.005-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='URI URL stable &quot;semantic web&quot; identifiers'/><title type='text'>Stable URIs</title><content type='html'>Since we published the "Creeps paper", Ben and I have received several queries asking us what we meant when we said "National Center for Biotechnology Information's (NCBI) current use of stable URLs for identifying much of its data".  Unfortunately, the reference we gave in the manuscript wasn't very useful - it takes you to the NCBI homepage!  Our apologies for that.&lt;br /&gt;&lt;br /&gt;So, for anyone who hasn't discovered this on their own, NCBI have made much of their data (and even queries) available through "stable" URIs, as discussed here: &lt;a href="http://view.ncbi.nlm.nih.gov/"&gt;http://view.ncbi.nlm.nih.gov/&lt;/a&gt;.  Unfortunately, the NCBI's stable links send you to an HTML representation of the record, including all of the various visual paraphernalia on the page, so it isn't particularly suited for automated retrieval/scraping (does anyone know if i'm missing something?  Is there a 'switch' I can throw in the URL that gives it back to me as a raw flatfile or as XML or as RDF?).  In any case, that's what we were referring to.  There is no indication on NCBI's page as to what they mean by "stable", so I can't comment on the &lt;span style="font-weight:bold;"&gt;actual&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt; stability of these URLs, but at least they're there and can be used in semantic-webby type applications to refer in a predictable and "clean" way to NCBI resources.&lt;br /&gt;&lt;br /&gt;Since we're on the topic, I'd be amiss if I didn't bring the UniProt efforts into the discussion, since these are (IMO) a model of how we should be approaching the task.  The reference for the UniProt work is here &lt;a href="http://dev.isb-sib.ch/projects/uniprot-rdf/intro.html"&gt;http://dev.isb-sib.ch/projects/uniprot-rdf/intro.html&lt;/a&gt;  (if anyone knows a better, more appropriate reference please let me know).  the UniProt data is available in a variety of formats from predictable URLs.  e.g. &lt;a href="http://beta.uniprot.org/uniprot/P04626.rdf"&gt;http://beta.uniprot.org/uniprot/P04626.rdf&lt;/a&gt; provides the RDF version of the record, while &lt;a href="http://beta.uniprot.org/uniprot/P04626"&gt;http://beta.uniprot.org/uniprot/P04626&lt;/a&gt; or &lt;a href="http://beta.uniprot.org/uniprot/P04626.html"&gt;http://beta.uniprot.org/uniprot/P04626.html&lt;/a&gt; provides the HTML version of the record and &lt;a href="http://beta.uniprot.org/uniprot/P04626.xml"&gt;http://beta.uniprot.org/uniprot/P04626.xml&lt;/a&gt; provides an XML version of the record.  All nice and predictable.  &lt;br /&gt;&lt;br /&gt;Anyway, all I wanted to do was put this out on my blog in case anyone is looking for the references and happens to stumble across this page.&lt;br /&gt;&lt;br /&gt;Cheers all!&lt;br /&gt;Mark&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-5162330183036618011?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/5162330183036618011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=5162330183036618011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/5162330183036618011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/5162330183036618011'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2008/05/stable-uris.html' title='Stable URIs'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-8536068340629945640</id><published>2008-01-07T18:44:00.000-08:00</published><updated>2008-01-07T19:12:17.255-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roomba &quot;roomba 540&quot; cleaning amusement'/><title type='text'>Adventures with a Roomba 540</title><content type='html'>Okay, Okay, I know this isn't REALLY about semantics, but I just bought a Roomba 540 on the weekend and it has been such a great adventure learning how it "thinks" that I want to share my adventures with everyone!&lt;br /&gt;&lt;br /&gt;I have a 650 sqft apartment. This should be a piece of cake for a little vacuum robot that is advertised as being capable of managing four rooms... let's see, shall we?&lt;br /&gt;&lt;br /&gt;Day 1:  I hit "start".  The little robot makes a "the robot is happy!" noise and starts to explore my apartment.  It first gets tangled in my television cable wire and spins itself around a few times, but is successful in getting itself untangled - this is as advertised, so well done!  It then gets tangled in the speaker wires that are (to my shagrin and frustration) laying across my living room floor because my landlord wont let me cut the carpet to bury them.  It, again, untangles itself perfectly and continues on its merry way.  It seems that it really does understand what's happening because even after getting twisted and self-rotated in these wires it still "anticipates" walls (if you have never seen these robots work, they clearly have a map of the room in their heads because they will slow-down as they approach a wall such that they nudge it ever-so-gently before turning around.  But alas, my Ikea furniture was the death of this little robot...  I have two Pella Chairs (http://www.ikea.com/PIAimages/38296_PE130209_S4.jpg) from Ikea.  The base of these chairs are, effectively, three wooden planks in a 3/4 square.  The robot climbed half-way over the plank, and then was helplessly unbalanced and couldn't get either wheel on the floor to extract itself.  It made the "I'm an unhappy little robot" noise, and died.   ...Recharge...&lt;br /&gt;&lt;br /&gt;Day 2:  Same story.  Same result.  my little robot was helplessly danging on the plank of an Ikea chair. so I lifted it up and moved it 6 inches so that it could get a grip and then restarted it.  It made the "happy little robot" sound and ran around cleaning my living room; however somehow it was unable to find its base-station again for charging.  It came oh so very close!  Within about 6 inches, amusingly...  Recharge...&lt;br /&gt;&lt;br /&gt;Day 3:  This time it seems that it decided to visit the bathroom before fully exploring the living room... and got hung-up on the 2'X3' shag shower mat... unhappy little robot.... Recharge...&lt;br /&gt;&lt;br /&gt;Day 4:  I decide to tip the Pella chairs over so that the planks are no longer on the floor.  THIS time it happily navigates around the chairs and cleans about half of the living room before deciding to wander off and explore the corridor.  The corridor leads to my bedroom.  It wandered into my bedroom and had a wonderful time in there dashing around under the bed cleaning all sorts of things that I really don't want to know... but it couldn't find it's way out again!  Every time it came close to the exit doorway, it hesitated (as if there were a wall there) and turned around and went back in.  I watched it do this 7 times!!  (my bedroom carpet is now cleaner than it has ever been!).  Finally I decided to teach it a lesson and I smaked it's nose every time it turned the wrong way.  After a good many smacks (it was absolutely DETERMINED not to go out of the exit!!  it would forcefully turn around even when it was half-way out the door!!) I finally got it back into the corridor. Once in the corridor it was happy again, and even anticipated the walls!  This surprised me since I must have totally buggered-up it's map my smacking it in the nose so often... nevertheless, it navigated it's way back down the corridor and into the living room.  It anticipated the overturned chairs, and then went on to re-program my digital cable box, which is sitting at ground level, and has all of it's buttons exposed to the little robot's bumble-bee-on-a-window bounces as it explores obsticles.  I was about to give-up hope when, suddenly, it started to move quite aggressively around a path and directly back to it's charger!!  It oriented itself and drove straight into it's charger - perfectly aligned - and stopped for the day!&lt;br /&gt;&lt;br /&gt;I suspect that my experience is very similar to what new parents feel when they have to child-proof their apartments... I now know that I have to overturn my chairs (oh, and I have to lift my computer table off of the ground, because it is just a half-centimeter higher than the edges of the robot, and when it hits the underside of the table at full-speed it becomes nicely jammed underneath!)&lt;br /&gt;&lt;br /&gt;So I have a half-clean carpet in my living room, a completely clean carpet in my bedroom, and a robot that finally navigated my house without making any "unhappy robot" noises.  I think I'm close to having a clean house every day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-8536068340629945640?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/8536068340629945640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=8536068340629945640' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/8536068340629945640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/8536068340629945640'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2008/01/adventures-with-roomba-540.html' title='Adventures with a Roomba 540'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-2918435688863342182</id><published>2007-11-22T14:36:00.000-08:00</published><updated>2009-04-30T10:24:31.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lsid rdf client'/><title type='text'>A more complex LSID client</title><content type='html'>This one merges metadata from multiple endpoints, and then parses it using RDF::Core.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;use strict;&lt;br /&gt;use LS::ID;&lt;br /&gt;use LS::Locator;&lt;br /&gt;use RDF::Core::Model::Parser;&lt;br /&gt;use RDF::Core::Storage::Memory;&lt;br /&gt;use RDF::Core::Model;&lt;br /&gt;use RDF::Core::Resource;&lt;br /&gt;use RDF::Core::Literal;&lt;br /&gt;use RDF::Core::Statement;&lt;br /&gt;&lt;br /&gt;my $storage = new RDF::Core::Storage::Memory;&lt;br /&gt;my $model = new RDF::Core::Model (Storage =&gt; $storage);&lt;br /&gt;my $id = 'urn:lsid:biomoby.org:serviceinstance:bioinfo.icapture.ubc.ca,FASTA2HighestGenericSequenceObject:2006-04-12T18-27-15Z';&lt;br /&gt;&lt;br /&gt;# the lines below convert the LSID into a URL since that's what BioMoby&lt;br /&gt;# currently returns in its metadata... sorry!&lt;br /&gt;my $r = 'http://biomoby.org/RESOURCES/MOBY-S/ServiceInstances#';&lt;br /&gt;$id =~ /urn:lsid:biomoby.org:serviceinstance:([^:]+)/;&lt;br /&gt;$r .= $1;&lt;br /&gt;&lt;br /&gt;my $lsid = LS::ID-&gt;new($id);&lt;br /&gt;&lt;br /&gt;my $locator = LS::Locator-&gt;new();&lt;br /&gt;my $authority = $locator-&gt;resolveAuthority($lsid);&lt;br /&gt;my $resource = $authority-&gt;getResource($lsid);&lt;br /&gt;my $locations = $resource-&gt;getMetadataLocations;&lt;br /&gt;&lt;br /&gt;foreach my $locs(keys %$locations){&lt;br /&gt;  foreach my $loc(@{$locations-&gt;{$locs}}){&lt;br /&gt;&lt;br /&gt;  my $data;&lt;br /&gt;  eval{$data = $resource-&gt;getMetadata(location =&gt; $loc);};&lt;br /&gt;  next if $@;&lt;br /&gt;&lt;br /&gt;  my $response_filehandle = $data-&gt;response;&lt;br /&gt;  my $RDF = join "", &lt;$response_filehandle&gt;;&lt;br /&gt;&lt;br /&gt;  my  %options = (Model =&gt; $model,&lt;br /&gt;     Source =&gt; $RDF,&lt;br /&gt;     SourceType =&gt; 'string',&lt;br /&gt;     BaseURI =&gt; "http://www.foo.com/",&lt;br /&gt;     BNodePrefix =&gt; "genid"&lt;br /&gt;  );&lt;br /&gt;  my $parser = new RDF::Core::Model::Parser(%options);&lt;br /&gt;  $parser-&gt;parse;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;print "model contains ", $model-&gt;countStmts, " statements\n\n";&lt;br /&gt;my $resource = RDF::Core::Resource-&gt;new($r);&lt;br /&gt;my $enumerator = $model-&gt;getStmts($resource);&lt;br /&gt;my $statement = $enumerator-&gt;getFirst;&lt;br /&gt;while (defined $statement) {&lt;br /&gt;    my $s= $statement-&gt;getSubject-&gt;getLocalValue;&lt;br /&gt;    my $o= $statement-&gt;getObject;&lt;br /&gt;    $o=($o-&gt;isLiteral?$o-&gt;getValue:$o-&gt;getLocalValue);&lt;br /&gt;    my $p= $statement-&gt;getPredicate-&gt;getLocalValue;&lt;br /&gt;    print "$s  $p  $o\n" unless $o =~ /genid/;&lt;br /&gt;    $statement = $enumerator-&gt;getNext&lt;br /&gt;}&lt;br /&gt;$enumerator-&gt;close;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-2918435688863342182?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/2918435688863342182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=2918435688863342182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/2918435688863342182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/2918435688863342182'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/11/more-complex-lsid-client.html' title='A more complex LSID client'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-7702993518214466545</id><published>2007-11-14T14:08:00.000-08:00</published><updated>2007-11-14T14:10:45.214-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CPAN'/><category scheme='http://www.blogger.com/atom/ns#' term='lsid'/><category scheme='http://www.blogger.com/atom/ns#' term='client'/><title type='text'>LSID Perl libraries submitted to CPAN</title><content type='html'>Just a quick note to announce that my lead developer, Eddie Kawas, has recently uploaded the Perl LSID stack to CPAN. As such, it is no longer necessary to get the code from the sourceforge Subversion repository.  Just start-up CPAN and say "install LS".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-7702993518214466545?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/7702993518214466545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=7702993518214466545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/7702993518214466545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/7702993518214466545'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/11/lsid-perl-libraries-submitted-to-cpan.html' title='LSID Perl libraries submitted to CPAN'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-5533823974078807008</id><published>2007-11-14T13:52:00.002-08:00</published><updated>2007-11-14T14:07:19.384-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BioMoby'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Semantic Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;semantic web&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup'/><category scheme='http://www.blogger.com/atom/ns#' term='iGoogle'/><title type='text'>Google Gadgets for BioMoby</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FNedpe105Wk/RztxRAXy37I/AAAAAAAAAAM/nv2V6mp3HUY/s1600-h/iGoogleMoby.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_FNedpe105Wk/RztxRAXy37I/AAAAAAAAAAM/nv2V6mp3HUY/s200/iGoogleMoby.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5132820737290330034" /&gt;&lt;/a&gt;&lt;br /&gt;I love it when a bunch of open APIs come together into something greater than the sum of the parts :-)&lt;br /&gt;&lt;br /&gt;Thanks to the good folks at &lt;a href="http://google.com"&gt;Google&lt;/a&gt; and their &lt;a href="http://www.google.com/ig/directory?synd=open"&gt;Google Gadgets&lt;/a&gt; for making things so darn simple!  It only took an hour or so to write a script that wrapped every &lt;a href="http://biomoby.org"&gt;BioMoby&lt;/a&gt; Web service (more than 1400 of them!) with a Google Gadget.  Now it is an absolute a no-brainer to create an amazing mashup of bioinformatics data by simply selecting the various services you are interested in and dropping their Gadgets on your &lt;a href="http://www.google.com/ig"&gt;iGoogle&lt;/a&gt; page.  You might even make a variety of different Gadget tabs with different combinations of services to provide different views.&lt;br /&gt;&lt;br /&gt;I'm still working on getting the rendering to be more size-appropriate (currently I am using the same rendering engine as I used in &lt;a href="http://www.scfbm.org/content/1/1/4"&gt;Gbrowse_moby&lt;/a&gt;) but I think it's pretty good for a first-pass!&lt;br /&gt;&lt;br /&gt;Try them for yourself:  &lt;a href="http://mobycentral.icapture.ubc.ca/Gadgets"&gt;http://mobycentral.icapture.ubc.ca/Gadgets&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-5533823974078807008?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/5533823974078807008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=5533823974078807008' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/5533823974078807008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/5533823974078807008'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/11/google-gadgets-for-biomoby.html' title='Google Gadgets for BioMoby'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FNedpe105Wk/RztxRAXy37I/AAAAAAAAAAM/nv2V6mp3HUY/s72-c/iGoogleMoby.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-2970965655693332512</id><published>2007-08-30T15:36:00.000-07:00</published><updated>2007-11-22T12:42:24.179-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lsid client'/><title type='text'>An LSID client</title><content type='html'>The last post was on how to build a resolver.  This post is on how to build a client.  The simple Perl client below retrieves metadata only (but I think it's fairly obvious which line needs to be changed to retrieve data ;-) )&lt;br /&gt;&lt;br /&gt;Here we go!&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;use LS::ID;&lt;br /&gt;use LS::Locator;&lt;br /&gt;&lt;br /&gt;$lsid = LS::ID-&gt;new(&lt;br /&gt;'urn:lsid:biomoby.org:servicetype:Retrieval:2001-09-21T16-00-00Z'&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;$locator = LS::Locator-&gt;new();&lt;br /&gt;$authority = $locator-&gt;resolveAuthority($lsid);&lt;br /&gt;$resource = $authority-&gt;getResource($lsid);&lt;br /&gt;$data = $resource-&gt;getMetadata();&lt;br /&gt;$response_filehandle = $data-&gt;response;&lt;br /&gt;print &lt;$response_filehandle&gt;;&lt;br /&gt;print "\n";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Voila!  You hopefully have a bunch of RDF on your screen right now.  Sure, that's a couple more lines than LWP::Simple, but some of that could be better encapsulated, so it really is only one or two lines more code than trying to do a GET... and with all sorts of benefits!&lt;br /&gt;&lt;br /&gt;Oh!  And here's how you get the LSID code from sourceforge.  Get yourself a copy of &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt;, then cleck-out the code using subversion as so:&lt;br /&gt;&lt;br /&gt;svn co http://lsids.svn.sourceforge.net/svnroot/lsids/trunk/lsid-perl lsids&lt;br /&gt;&lt;br /&gt;(windows users will have a nice GUI for this)&lt;br /&gt;&lt;br /&gt;Note that the sourceforge site indicates that it should be https://, but it works just as well as http, so you don't have to re-install Subversion to make it SSL compliant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-2970965655693332512?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/2970965655693332512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=2970965655693332512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/2970965655693332512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/2970965655693332512'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/08/lsid-client.html' title='An LSID client'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-7122329609547935031</id><published>2007-08-29T14:46:00.001-07:00</published><updated>2007-08-30T15:35:35.079-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lsid &quot;hello world&quot; metadata authority &quot;metadata resolver&quot; resolver'/><title type='text'>The Hello World LSID authority and metadata server</title><content type='html'>Since I'm out there advocating for LSIDs, and since the documentaton for LSIDs is hard to find and hard to work-through, I thought I'd take a stab at doing a "Hello World" LSID authority and metadata resolution server.&lt;br /&gt;&lt;br /&gt;This is "as easy as it gets", but the process can be much more complex if needed.  This solution requires &lt;span style="font-weight:bold;"&gt;no&lt;/span&gt; modification of the DNS/SRV records, and runs as a simple HTTP GET CGI service for metadata resolution.&lt;br /&gt;&lt;br /&gt;Here we go!  :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;***  A HELLO WORLD LSID AUTHORITY ***&lt;br /&gt;***  authority.pl ***&lt;br /&gt;&lt;pre&gt;&lt;font size="-2"&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;use LS::Service::Authority;&lt;br /&gt;use LS::Service::DataService;&lt;br /&gt;use LS::HTTP::Service;&lt;br /&gt;use LS::SOAP::Service transport=&gt; 'HTTP::CGI';&lt;br /&gt;&lt;br /&gt;my $location = 'http://';&lt;br /&gt;if($ENV{'HTTP_HOST'} ) {&lt;br /&gt;        $location .= $ENV{'HTTP_HOST'};&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;        $location .= 'localhost:8080';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# FIRST create the authority service&lt;br /&gt;&lt;br /&gt;my $authority_service = LS::Service::Authority-&gt;new(&lt;br /&gt;        name=&gt; 'Hello_World', &lt;br /&gt;        authority=&gt; 'bioinfo.icapture.ubc.ca', &lt;br /&gt;        location=&gt; $location);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# SECOND create an HTTP GET metadata port&lt;br /&gt;# what comes in here will be:&lt;br /&gt;# $location/authority/metadata?lsid=URN:LSID:blah.blah:nspace:id:version&lt;br /&gt;&lt;br /&gt;my $metadata_port = &lt;br /&gt;     LS::Authority::WSDL::Simple::MetadataPort-&gt;newMetadata(&lt;br /&gt;      portName=&gt; 'Hello_there_World',&lt;br /&gt;      endpoint=&gt; "$location/authority/metadata",&lt;br /&gt;      protocol=&gt; $LS::Authority::WSDL::Constants::Protocols::HTTP,&lt;br /&gt;  );&lt;br /&gt;$authority_service-&gt;addPort(&lt;br /&gt;    serviceName=&gt; 'Hello_World', &lt;br /&gt;    port=&gt; $metadata_port);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;my $authority_server = LS::SOAP::Service-&gt;new();&lt;br /&gt;$authority_server-&gt;authorityService($authority_service);&lt;br /&gt;&lt;br /&gt;my $http_authority = LS::HTTP::Service-&gt;new();&lt;br /&gt;$http_authority-&gt;dispatch_authority_to($authority_service);&lt;br /&gt;&lt;br /&gt;$authority_server-&gt;httpServer($http_authority);&lt;br /&gt;$authority_server-&gt;dispatch();&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*****  HELLO WORLD LSID METADATA SERVER  *****&lt;br /&gt;*****   metadata.pl   ******&lt;br /&gt;&lt;pre&gt;&lt;font size="-2"&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;use CGI qw/:all/;&lt;br /&gt;my $C = CGI-&gt;new;&lt;br /&gt;&lt;br /&gt;use strict;&lt;br /&gt;use warnings;&lt;br /&gt;&lt;br /&gt;use LS::ID;&lt;br /&gt;use LS::Service::Response;&lt;br /&gt;use LS::Service::Fault;&lt;br /&gt;use LS::RDF::SimpleDocument;&lt;br /&gt;&lt;br /&gt;my $lsid = param('lsid');&lt;br /&gt;my $format = param('format') || "text/xml";&lt;br /&gt;&lt;br /&gt;print header(-type =&gt; $format);&lt;br /&gt;print getMetadata($lsid)-&gt;response;&lt;br /&gt;&lt;br /&gt;sub getMetadata {&lt;br /&gt;        my ($lsid, $format) = @_;&lt;br /&gt;        $lsid = LS::ID-&gt;new($lsid);&lt;br /&gt;        $lsid = $lsid-&gt;canonical();&lt;br /&gt;&lt;br /&gt;        my $id = $lsid-&gt;object();&lt;br /&gt;        $id .= ':' . $lsid-&gt;revision() if($lsid-&gt;revision());&lt;br /&gt;&lt;br /&gt;        return LS::Service::Fault-&gt;serverFault(&lt;br /&gt;                'Can not do what I cannot do', 500)&lt;br /&gt;                unless($id);&lt;br /&gt;&lt;br /&gt;        # Create a new RDF Document to add triples&lt;br /&gt;&lt;br /&gt;        my $rdfDoc = LS::RDF::SimpleDocument-&gt;new();&lt;br /&gt;&lt;br /&gt;        return LS::Service::Fault-&gt;serverFault(&lt;br /&gt;           'Internal error, unable to initialize RDF document', 500) &lt;br /&gt;            unless($rdfDoc);&lt;br /&gt;&lt;br /&gt;        return LS::Service::Fault-&gt;fault('Unknown LSID')&lt;br /&gt;        unless(1);  # whatever conditions you want...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        $rdfDoc-&gt;addTripleLiteral(&lt;br /&gt;            $lsid-&gt;as_string(), &lt;br /&gt;            'http://purl.org/dc/elements/1.1/#title', &lt;br /&gt;            "Hello World"); &lt;br /&gt;&lt;br /&gt;        $rdfDoc-&gt;addTripleResource(&lt;br /&gt;              $lsid-&gt;as_string(), &lt;br /&gt;              'urn:lsid:example.com:predicates:another_lsid', &lt;br /&gt;              'urn:lsid:biomoby.org:objectclass:DNASequence');&lt;br /&gt;  &lt;br /&gt;        $format = 'application/xml' if(!$format);&lt;br /&gt;        return LS::Service::Response-&gt;new(&lt;br /&gt;            response=&gt; '&lt;?xml version="1.0"?&gt;' . &lt;br /&gt;            $rdfDoc-&gt;output(),&lt;br /&gt;            format=&gt; $format);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;*****   APACHE Server Config  ******&lt;br /&gt;*****    add these lines to your httpd.conf file  ****&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;font size="-2"&gt;&lt;br /&gt;ScriptAlias /authority/metadata "/usr/local/apache2/LSID/metadata.pl"&lt;br /&gt;ScriptAlias /authority "/usr/local/apache2/LSID/authority.pl"&lt;br /&gt;&lt;br /&gt;    &amp;lt;Directory /usr/local/apache2/LSID&gt;&lt;br /&gt;        Options ExecCGI&lt;br /&gt;        Order allow,deny&lt;br /&gt;        Allow from all&lt;br /&gt;    &amp;lt;/Directory&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;***  now put your files in the right place&lt;br /&gt;&lt;br /&gt;Create a folder /usr/local/apache2/LSID/&lt;br /&gt;save authority.pl to that folder&lt;br /&gt;save metadata.pl to that folder&lt;br /&gt;(get the permissions right!)&lt;br /&gt;&lt;br /&gt;DONE!&lt;br /&gt;&lt;br /&gt;You now have an LSID authority and metadata resolver!  Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-7122329609547935031?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/7122329609547935031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=7122329609547935031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/7122329609547935031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/7122329609547935031'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/08/hello-world-lsid-authority-and-metadata.html' title='The Hello World LSID authority and metadata server'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-1648368926936574206</id><published>2007-07-07T23:08:00.000-07:00</published><updated>2009-04-30T10:25:00.922-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lsid coolURIs'/><title type='text'>More arguments for the LSID</title><content type='html'>I just realized that I forgot to mention the other way that the BioMoby project utilizes LSIDs.&lt;br /&gt;&lt;br /&gt;The LSID spec includes versioning!&lt;br /&gt;&lt;br /&gt;Our client software can, simply by string-comparison of LSIDs, detect when a BioMoby service has changed!  The time-stamp that is appended to the LSID representing a service is updated for every change that the service-provider makes.  This time-stamp is included in the "version" field of every LSID, so that every client program knows if it is looking at the same Web Service, or a modified one.&lt;br /&gt;&lt;br /&gt;Again... let's see you do THAT using URLs!  (without contorting yourself like a rubber-band man)&lt;br /&gt;&lt;br /&gt;I state once more, that URLs are NOT the solution to the semantic web!&lt;br /&gt;&lt;br /&gt;Let's get over it and move on!&lt;br /&gt;&lt;br /&gt;Mark&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-1648368926936574206?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/1648368926936574206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=1648368926936574206' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/1648368926936574206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/1648368926936574206'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/07/more-arguments-for-lsid.html' title='More arguments for the LSID'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-2069830843808255828</id><published>2007-06-29T23:27:00.000-07:00</published><updated>2007-06-30T08:20:41.302-07:00</updated><title type='text'>The Dodo, The Turanian Tiger, and The Browser</title><content type='html'>One day I hope to see the Web Browser included in the &lt;a href="http://www.50birds.com/extan/gextanimals1.htm"&gt;web page of extinct animals&lt;/a&gt;.  I want to re-iterate my opinion that The Web Browser should be an extinct technology in the near future.&lt;br /&gt;&lt;br /&gt;No... let me correct that.  The existence of a text-entry box where you type a URL will (should) become extinct.  I keep going back to the conversation that Cartik and I had in the pub a few nights ago, that he captured in &lt;a href="http://cartiksplace.blogspot.com/2007/06/battle-for-lsids-and-obsession-with.html"&gt;his blog entry&lt;/a&gt;.  We were talking about AOL keywords, but also about bookmarks.  The reason that we have bookmarks is not only so that we can re-find a resource that we want, but also so that we don't have to remember, or type-in, its URI.  The Browser interface design has already shown us that people really don't want to have to deal with URIs, nor should they have to.  &lt;br /&gt;&lt;br /&gt;One of the things we are "promising" from the Semantic Web is that it will be more "human friendly" - able to locate information in a more intuitive and "human" way.  Well, clearly, the first step to that end is that we do not expect our "humans" to type-in URIs.&lt;br /&gt;&lt;br /&gt;So, I say again, and explicitly, that we should not be designing Semantic Web architectures with the constraint that typing-in a URI should cause information to be displayed in a browser.  That's like designing a cell-phone system specifically to support a morse-code tapper!  Old technologies should not be dictating the behaviours/architecture of new technologies.&lt;br /&gt;&lt;br /&gt;Please, everyone... let's move on!  Embedding Semantic Web inside of task-specific, non-browser applications is surely the future... or?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-2069830843808255828?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/2069830843808255828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=2069830843808255828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/2069830843808255828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/2069830843808255828'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/06/dodo-turanian-tiger-and-browser.html' title='The Dodo, The Turanian Tiger, and The Browser'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-3251957325788062481</id><published>2007-06-29T22:59:00.000-07:00</published><updated>2009-04-30T10:25:16.213-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lsid arguments'/><title type='text'>The argument for LSIDs</title><content type='html'>I posted this as a &lt;a href="http://i9606.blogspot.com/2007/06/main-problem-with-lsids.html"&gt;comment to Ben's blog&lt;/a&gt; post about &lt;a href="http://lsid.sourceforge.net/"&gt;LSIDs&lt;/a&gt;, but I want to re-post it here because it sounds like the working group is &lt;a href="http://www.w3.org/2007/06/25-BioRDF-irc"&gt;planning to contact me and Carole to discuss our use of LSIDs&lt;/a&gt; so I might as well make my arguments more visible and explicit.  Cartik Kothari, a Post-Doc in my lab has also &lt;a href="http://cartiksplace.blogspot.com/2007/06/battle-for-lsids-and-obsession-with.html"&gt;waded into the fray&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;here was my response to Ben's assertion that LSIDs should be abandoned:&lt;br /&gt;&lt;br /&gt;I agree with only a part of what &lt;a href="http://i9606.blogspot.com/2007/06/main-problem-with-lsids.html"&gt;you [Ben] say&lt;/a&gt;, but think you aren't being ambitious enough. What we should be pushing for is that the LSID spec (or something very very similar to it) is re-branded and ADOPTED BY THE W3C!!&lt;br /&gt;&lt;br /&gt;What worries me about NOT adopting a new identifier system as we move into the Semantic Web is that we start to hack and kludge our way to full functionality by adding novel behaiours on top of URLs, or start putting the "intelligence" of where to find data/metadata into redirects, purl URLs, or other nasty, centralized, and IMO unsustainable architectures. &lt;br /&gt;&lt;br /&gt;LSIDs solve a very distinct set of problems - separation of identity from location; separation of data from metadata; and multiple end-points/protocols for both data and metadata retrieval. As far as I can tell, NONE of the solutions that have been proposed in the discussions within the HCLS community have come close to addressing these three issues in anywhere near as elegant a way as the LSID spec does, and some of the proposals have been a bit worrisome (e.g. "just add a ? to the end of your URL if you want metadata"... where is THAT in the HTTP spec??). Even more odd, to me, is that all of this contorting and hand-wringing is only because people want to be able to stick a URI in their browser and see something at the end of it. Frankly, I just don't see the point of designing architectures around browsers!  (I quite liked &lt;a href="http://cartiksplace.blogspot.com/2007/06/battle-for-lsids-and-obsession-with.html"&gt;Cartik's argument&lt;/a&gt; that, in the hey-day of AOL, you simply typed a keyword into your browser!  **NOBODY** wants to type URLs (URIs) into their browser!  Good Lord!  The sooner we move the end-user away from the "guts" of the Web architecture the better!)&lt;br /&gt;&lt;br /&gt;One of the keynote talks at the WWW2007 meeting was from a Microsoft fellow (can't remember his name) who reminded us that, within the next 10 years, the interfaces into the Web will become ubiquitous in our lives. "The Browser" is going the way of the Dodo! Why are we so concerned about designing next-generation architectures around last-generation interfaces?&lt;br /&gt;&lt;br /&gt;In the BioMoby project we use LSIDs extensively (and by the way, I have almost never found the need to plug one of them into my browser...). Here's one of the uses we have for them:&lt;br /&gt;&lt;br /&gt;A Web Service is identified by an LSID. The Moby Central registry knows certain things about that service (its inputs, its outputs, its semantic type, its authorship), and through an hourly "ping" it knows if that service is visible/available or not. This information is available as getMetadata from Moby Central. In addition, however, the service provider knows things about their own service. They know what example inputs and outputs might be, they know system maintenance schedules, etc. All of these things can be provided as getMetadata from the service provider. As a consumer, I want to know about a service, so I go to the LSID authority and say "where can I get information about this service?", the authority says "you can go here (Moby) and here (provider)", I do so, and I can combine the knowledge both resources have about that service. THIS IS ALL PART OF THE LSID SPEC! No hacks, no kludges, no new consensus was required within the community.&lt;br /&gt;&lt;br /&gt;I don't know about you, but as for me and my family, we are going to continue using LSIDs until someone comes up with a BETTER alternative!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-3251957325788062481?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/3251957325788062481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=3251957325788062481' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/3251957325788062481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/3251957325788062481'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/06/argument-for-lsids.html' title='The argument for LSIDs'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-6436688558904226855</id><published>2007-06-29T22:40:00.000-07:00</published><updated>2007-06-29T22:41:07.130-07:00</updated><title type='text'>The semantic web in Haiku...</title><content type='html'>&lt;p&gt;I stumbled over this site today while looking at the new interface to &lt;a href="http://ask.com"&gt;Ask.com&lt;/a&gt; (which is really quite appealing, but does not seem to have translated into additional market share...)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here is &lt;a href="http://infomesh.net/2002/swhaiku/"&gt;the semantic web explained in Haiku&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;It made me chuckle :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-6436688558904226855?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/6436688558904226855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=6436688558904226855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/6436688558904226855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/6436688558904226855'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/06/semantic-web-in-haiku.html' title='The semantic web in Haiku...'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-5430927028082683874</id><published>2007-06-29T22:26:00.000-07:00</published><updated>2007-06-29T22:37:48.324-07:00</updated><title type='text'>re-post:  The Wilkinson Lab Semantic Web Declaration of Independence</title><content type='html'>This was the most controversial of all the posts I put up on my last blog.  I screwed-up and I lost the comments that were made to it (Sorry Chris!  This really wasn't on purpose!).  Chris Mungall objected vehemently to this post.  His arguments were (I am paraphrasing, but Chris, please re-iterate your arguments here if I get them wrong) that (a) the GO *is* an ontology, and to say it isn't an ontology is complete crap, and (b) that an ontology should be as big as it needs to be, and that to put artificial limitations on the size of an ontology is absurd and narrow-minded.  I responded that we were using different definitions of "ontology" - that I was talking about the narrow definition of an OWL-DL perspective where all classes are precisely defined as restrictions on their properties, but I conceed that he is absolutely correct that this is, as he points out, a *very* narrow definition.  &lt;br /&gt;&lt;br /&gt;Having said all that, I have re-read this post over and over again, and I still believe most/all of what I said, so... here it is in all it's glory:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As most of you readers will know, my lab is somewhat obsessed with ontologies.  It has become apparent over the past year, however, that we have views that are not shared by a large portion of the Semantic Web in Life Science community.  I've made several of my more contentious viewpoints clear in &lt;a href="http://bioinfo.icapture.ubc.ca/Presentations"&gt;presentations&lt;/a&gt; and &lt;a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=pubmed&amp;amp;cmd=Retrieve&amp;amp;list_uids=16899496"&gt;papers&lt;/a&gt;, and these have been variously refered to as "inflammatory", "simplistic", or even "showing a lack of understanding about what the Semantic Web is".&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Well, I'm in the mood to "put a stake in the ground" today and make some additional statements that I've been pussyfooting around for the past year.  In part, I want to say these things because I honestly believe them and I hope that  they might be interesting perspectives for others to think about; In part, it's because I think some of these ideas are quite novel, but not sufficiently well-supported for me to put into a publication or a position paper; and in part because I simply enjoy rocking the boat from time to time :-)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So... here goes!  &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The Wilkinson Lab Declaration of Semantic Web Independence&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;We hold these truths to be self-evident&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;1. Ontologies are a path to a goal, not the goal itself.&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;  Though I do think that &lt;em&gt;some&lt;/em&gt; ontologies (e.g. upper ontologies) should be well-engineered and static, I think that the majority of ontologies that we are building today are simply too "heavy".  Just follow the is-a hierarchy below...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;  &lt;br /&gt;&lt;li&gt;Ontologies are World Views&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://www.shirky.com/writings/ontology_overrated.html"&gt;Clay Shirky said it best&lt;/a&gt;.  Ontologies embody the bias of the belief of the moment, and moreover try to predict the future according to that view.  Views change.  The world changes.  Legacy is a huge problem! (The fact that we tend to use these transient world views to annotate our ~permanent data stores makes me nervous, but the solution to that belongs in another post).&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;World Views are Hypotheses&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;...with apologies to the "Ontology of Biolocal Reality" ;-)&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Hypotheses are Queries&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;This comes as no surprise, since the idea that a database query represents a hypothesis has been around for years!  (e.g. &lt;a href="http://www-kdd.isti.cnr.it/kdid05/invited.html"&gt;query based data mining&lt;/a&gt; and Ben's comment below points &lt;a href="http://www.sciencemag.org/cgi/content/full/293/5537/2040"&gt;here&lt;/a&gt; as another example).  However, about a year ago I made the transitive closure of the above three statements in a presentation to the National Heart Lung and Blood Institute in Bethesda - "Ontologies are queries" - and was very nearly laughed off the podium by the mega-ontology audience.  &lt;strong&gt;Now, I'm not saying that &lt;em&gt;all&lt;/em&gt; ontologies are queries&lt;/strong&gt;, but I think we need to start perceiving them increasingly as such.  Interestingly, this sweeping statement necessarily excludes ontology-like hierarchical vacabularies such as the &lt;a href="http://geneontology.org"&gt;Gene Ontology&lt;/a&gt; since its "classes" are not defined; Strictly speaking, the GO &lt;a href="http://ir.ohsu.edu/genomics/trec-04-genomics.pdf"&gt;is not&lt;/a&gt; an ontology, and was only intended to be a &lt;a href="http://www.nature.com/ng/journal/v25/n1/abs/ng0500_25.html"&gt;"dynamic, controlled vocabulary that can be applied to all eukaryotes"&lt;/a&gt;.  As such, I think my "rule" stil holds - that formal ontologies are, by and large, just queries.  Interestingly, &lt;a href="http://www.biomedcentral.com/1471-2105/8/S3/S3"&gt;Luciano and Stevens recently made the same assertion&lt;/a&gt; in their paper on the semantics of biological pathways, though I don't think they quite made enough song and dance about it.  It's an idea that I think needs to be emphasized more than it is... &lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Queries are Disposable&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;I can count on one hand the number of queries I have ever saved and re-used, other than those that are embedded in my code&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Therefore Ontologies are (should be) Disposable!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;We really need to move to a point where the ontology is simply a transient tool that is used to discover appropriate data somewhere in the universe, rather than the ontology being the end-point in itself.  Ontologies have got to be cheap, lightweight, and disposable.  Let's put a number on it... say... $10K.  I'll stick my neck out and say that if an ontology costs more than $10K to produce, then it has cost too much, since this is about how much it costs to do a simple biological pilot study and there's no reason that a computational hypothesis should cost more to develop than a biological one.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;2.  Reasoning is your problem, not mine!&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;To the mega-ontology crowd I'd like to say "take that!" and hand them one of my instances.  If you're going to build an ontology with 50,000 classes and 10,000 relationships please don't expect me to download it and reason over it.  It's just not practical, and I cannot see the semantic web functioning that way in the long-run.  It seems to me that, as the provider of an ontology, it could/should be your responsibility to provide a reasoning service that consumes my individuals and adds the rdf:type tag to them.  Not only would the semantic web work better (IMO) this way, but it would make people think twice about building mega-ontologies ;-) &lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;3.  &lt;a href="http://lsid.sourceforge.net/"&gt;LSIDs&lt;/a&gt; provide a great way of solving the ontology-segmentation problem&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;In the meantime, while we still have mega-ontologies and still need to download and reason over them, &lt;a href="http://www.co-ode.org/resources/papers/seidenberg-www2006.pdf"&gt;ontology segmentation&lt;/a&gt; keeps coming into my mind as a possible solution.  But how does it fit into the semantic web vision?  Well, we'd need a way of naming individual nodes in an ontology without using #document_fragments (since those are interpreted client-side).  One possibility is to &lt;a href="http://myontology.org/refer/to/nodes/like/this"&gt;http://myontology.org/refer/to/nodes/like/this&lt;/a&gt; however I'm a bit concerned that we will be tempted to put the isa hierarchy into the path and then use it in "casual reasoning", which would be nasty.  What I really like is the idea of naming nodes by &lt;a href="http://lsid.sourceforge.net/"&gt;LSID&lt;/a&gt;, and having the LSID metadata resolution return only the portion of the ontology that is relevant to the interpretation of that node.  I should probably write an entire post on this issue, since there are all sorts of additional reasons that I have come to this conclusion...&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;4.  Ontological predicates can be thought of as, and mapped to, Web Services.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;This is the core of the &lt;a href="http://cardioshare.icapture.ubc.ca"&gt;CardioSHARE&lt;/a&gt; architecture.  It stemmed from the observation that, if we "surf" through &lt;a href="http://biomoby.org"&gt;BioMoby&lt;/a&gt; services and generate an RDF document of the data that goes into and out of a service, the predicates that join the input and output have a relationship to the Web Service that generated them... so why not just turn this on its head and say that the Subject of the SPO triple represents the input, the Predicate of the SPO triple represents a Web Service, and the Object of the SPO triple represents the output.  In that case, OWL individuals of the Subject class can be fed into a Web Service identified by the OWL predicate and the output of that Web Service should be individuals of the Object OWL class.  Moreover, knowing the type of input, and the type of service (the subject and predicate) is precisely a BioMoby registry query, so the process of discovering and transacting that service could be automated.  A little wrapper around DIG and we're off to the races, having merged the disparate worlds of the Semantic Web and Web Services!!  Hopefully I'll be able to post a link to the prototype of this architecture within the next couple of months...&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Right, that's enough spouting-off for one day.  Let the flames begin!!!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-5430927028082683874?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/5430927028082683874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=5430927028082683874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/5430927028082683874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/5430927028082683874'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/06/re-post-wilkinson-lab-semantic-web.html' title='re-post:  The Wilkinson Lab Semantic Web Declaration of Independence'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-1376526238452383790</id><published>2007-06-29T22:24:00.000-07:00</published><updated>2007-06-29T22:26:34.249-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='resolution'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;semantic web&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='404'/><title type='text'>re-post:  The Semantic 404</title><content type='html'>A re-post of the same text that was on my previous blog... unfortunately, the links are scraped out of it... if I get ambitious I will edit this post and put them back in:&lt;br /&gt;&lt;br /&gt;Hello from the Banff WWW2007 post-mortem.&lt;br /&gt;&lt;br /&gt;I'm befuddled! A couple of days ago a significant member of the SWHCLS community indicated that it didn't matter if URI's resolved or not, and that we could build the SW without resolution. &lt;br /&gt;&lt;br /&gt;...My brain hurts!&lt;br /&gt;&lt;br /&gt;What confuses me is why so many people perceive the Semantic Web to be such a different animal from the World Wide Web. Is there anyone on earth who would have said "who cares if your hyperlinks don't resolve, build the Web anyway!" Of course not! Ben and I have been harping on about this for ages, but even those who cite our Creeps paper still don't seem to "get it"... or at least, don't seem to care.&lt;br /&gt;&lt;br /&gt;The Semantic Web is, first and foremost, a Web based technology. The problem is that the community leaders seem to be focusing on "Semantic" rather than on "Web", and that (IMO) spells death for the SWHCLS initiative. Sure, we can get Semantic Web-like behaviours by building local semantically-enabled data warehouses, but that isn't the Semantic Web. Would the Web ever have come into being if none of the URLs resolved? Of course not. And neither will the Semantic Web. &lt;br /&gt;&lt;br /&gt;Until then, all we have created is the "Semantic 404", and that's not much good to anyone is it, be honest :-)&lt;br /&gt;&lt;br /&gt;Apparently there's going to be a special meeting of the SWHCLS working group at noon today... fingers crossed that something great comes out of this meeting - perhaps the SWHCLS will begin today!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-1376526238452383790?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/1376526238452383790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=1376526238452383790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/1376526238452383790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/1376526238452383790'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/06/re-post-semantic-404.html' title='re-post:  The Semantic 404'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-7542672840891735883</id><published>2007-06-29T22:22:00.000-07:00</published><updated>2007-06-29T22:23:57.423-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='&quot;semantic web&quot; &quot;relational databases&quot;'/><title type='text'>re-post: Relational databases on the Semantic Web</title><content type='html'>this is a re-post of the rant I had on my old blog now re-posted here:&lt;br /&gt;&lt;br /&gt;Greetings from WWW 2007!&lt;br /&gt;&lt;br /&gt;I've been "hit" several times in the past couple of weeks with a recurring idea that seems to be gaining momentum with a wide variety of groups - the idea of exposing "traditional" relational databases through an OWL-mapping layer. To name just a few, we have:&lt;br /&gt;&lt;br /&gt;Bio2RDF DartGrid ComparaGrid and an offering from SMI&lt;br /&gt;&lt;br /&gt;Now, don't get me wrong! I am not criticizing any of these projects in any way, and am in fact extremely excited about their successes! But it does make me wonder... &lt;br /&gt;&lt;br /&gt;The Semantic Web, IMO, is something more than just the exposure of relational databases on the Web (even with the hidden semantics of their relational model fully explicit and exposed). I would argue that, because we have never had the ability to express the kinds of semantics that we can express with OWL, we have never captured the kinds of semantically rich data that we are going to want when the Semantic Web is finally established. My own experience in leading the SIRS DB project (a component of the CardioSHARE project, where we are attempting to build an RDF/OWL datastore that truly behaves in the way we envision the Semantic Web could behave) I have noticed that we are collecting far more data in this semantic database than we would ever have attempted to store in a more traditional RDB... simply because the pain of building a relational model to hold this extra data is somewhat higher than sticking a few extra triples into a triple store. &lt;br /&gt;&lt;br /&gt;I understand that, from the perspective of the W3C, OWL isn't a necessary part of the Semantic Web (and I'm not entirely convinced that OWL will survive in the long-term either!); however I do think that, if the SW is going to live-up to it's promises... or more importantly, not disappoint the funding agencies so badly that they cut their investments after we have built-up their expectations... we are going to have to do more than just expose our databases on the Web in RDF. &lt;br /&gt;&lt;br /&gt;As Eric Neumann argued when I asked this question of the HCLS Workshop panel yesterday, this is a necessary first-step, and I agree with him that it might succeed in bootstrapping a somewhat lackluster (IMO) start to the entire SWHCLS enterprise... but I hope that we aren't thinking of it as anything more than the low-hanging fruit. I fear that, if we don't go the next step and start focusing on data/metadata capture and modelling in a "true" SW manner, and encouraging others to do so by example, we may unnecessarily delay our achievement of the high expectations that we, and our funding agencies, have for the Semantic Web in Health Care and Life Sciences.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-7542672840891735883?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/7542672840891735883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=7542672840891735883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/7542672840891735883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/7542672840891735883'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/06/re-post-relational-databases-on.html' title='re-post: Relational databases on the Semantic Web'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-882875832209705764</id><published>2007-06-27T13:03:00.000-07:00</published><updated>2007-06-28T13:27:02.080-07:00</updated><title type='text'>Scientific Web Communities - a "missed opportunity"</title><content type='html'>&lt;blockquote&gt;&lt;i&gt;"The lack of scientific web communities represents a significant missed opportunity."&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Man, you can say that again!&lt;br /&gt;&lt;br /&gt;I had the distinct pleasure this morning of reading a scientific paper that made me feel good!  ...actually, that's an under-statement... it literally made my heart soar!&lt;br /&gt;&lt;br /&gt;In their paper &lt;a href="http://dx.doi.org/10.1093/bib/bbm012"&gt;Alzforum and SWAN: the present and future of scientific web communities&lt;/a&gt; Tim Clark and June Kinoshita describe their success in building a functional community of health researchers in the domain of Alzheimers research; a group of scientists interacting, debating, sharing knowledge and ideas via the SWAN Semantically-enabled infrastructure.&lt;br /&gt;&lt;br /&gt;Now, I have to admit my personal bias.  I'm a big fan of Tim Clark from the get-go.  I like the way he thinks, and have for many years!  For those who can remember back that far, he was one of the original authors of the &lt;a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=pubmed&amp;dopt=Abstract&amp;list_uids=15153306&amp;query_hl=7&amp;itool=pubmed_DocSum"&gt;LSID specification&lt;/a&gt;... and anyone who knows me knows what a &lt;a href="http://i9606.blogspot.com/2007/06/main-problem-with-lsids.html"&gt;big fan I am&lt;/a&gt; of that!  When he first told me about his SWAN project a couple of years ago, I laughed at how similar our "visions" were for how the Semantic Web should (must!) work, and what it might look like for a community of biologist-end-users.&lt;br /&gt;&lt;br /&gt;In my "second life" as the IT/Data manager for a large (~300-person) &lt;a href="http://www.icapture.ubc.ca"&gt;health sciences research institute&lt;/a&gt; I have been fighting what seems at times to be an uphill battle.  No, I'm not trying to cure cancer or find a miracle drug to prevent heart attacks (at least, not in my "second life" ;-) ).  All I'm trying to do is get the resident researchers to share their data with one another.&lt;br /&gt;&lt;br /&gt;Granted, there are ethics issues involved in clinical data, but that's really not where the problem lies.  There's also issues around "simplicity" - perhaps we're not making it quite easy enough for them to contribute their data, but I don't really think that's the issue either.  Based on the first question that comes up whenever I give a presentation on the institutional database, I think it's  "siloism".  The first question, invariably, is "Can others see my data??".&lt;br /&gt;&lt;br /&gt;As Carole Goble said, &lt;a href="http://www.gridtoday.com/grid/963514.html"&gt;"Scientists would rather share their toothbrush than their data!"&lt;/a&gt;.  Researchers within a single institute, sharing a common purpose, even sharing common equipment, are nevertheless loathe to let their neighbours casually browse their results, or integrate their data into a common database for fear of somehow losing control or giving away hidden gems of knowledge.&lt;br /&gt;&lt;br /&gt;"...it is possible for a scientist to develop [&lt;i&gt;and contribute to.  MW&lt;/i&gt;] a valuable community resource without sacrificing professional advancement." - these words from Tim Clark were music to my ears!  He goes on to describe the keys to creating a successful scientific community as "... neutrality, inclusiveness, &lt;i&gt;&lt;strong&gt;&lt;span&gt;trust&lt;/span&gt;&lt;/strong&gt;&lt;/i&gt; &lt;span&gt;(emphasis added)&lt;/span&gt;, high quality, timeliness, proactive solicitation of community participation and value."&lt;br /&gt;&lt;br /&gt;It was heartwarming... THRILLING!!... to see his vision (and mine!) become a reality.  I am going to keep that manuscript close-at-hand and read it every time I get depressed about interoperability in health care research :-)&lt;br /&gt;&lt;br /&gt;thanks Tim!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-882875832209705764?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/882875832209705764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=882875832209705764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/882875832209705764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/882875832209705764'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/06/scientific-web-communities-missed.html' title='Scientific Web Communities - a &quot;missed opportunity&quot;'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4834836240946967525.post-6091905169718721015</id><published>2007-06-27T12:55:00.000-07:00</published><updated>2007-06-27T12:58:23.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new_blog'/><title type='text'>New blog host... hopefully less spam!</title><content type='html'>For anyone who was reading my blog in its former location (biordf.com) I apoligize for unceremoniously shutting-down that site; however spam-management was getting out of control!  I made copies of the most interesting posts/responses and will re-post them in their entirety here over the next few days.&lt;br /&gt;&lt;br /&gt;I don't want anyone to think it was a matter of "censorship" or anything like that...&lt;br /&gt;&lt;br /&gt;So, welcome to my new blog!&lt;br /&gt;&lt;br /&gt;Mark&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4834836240946967525-6091905169718721015?l=semanticmusings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://semanticmusings.blogspot.com/feeds/6091905169718721015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4834836240946967525&amp;postID=6091905169718721015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/6091905169718721015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4834836240946967525/posts/default/6091905169718721015'/><link rel='alternate' type='text/html' href='http://semanticmusings.blogspot.com/2007/06/new-blog-host-hopefully-less-spam.html' title='New blog host... hopefully less spam!'/><author><name>Mark Wilkinson</name><uri>http://www.blogger.com/profile/14456116798336412520</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
