<?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-618562029744087015</id><updated>2011-11-28T00:31:47.330Z</updated><category term='Jena RDF library for .NET in C#'/><title type='text'>Lee M Davies</title><subtitle type='html'>Personal Blog on aspects of my I.T. work and personal research.  I am primarily interested in Semantic Web technologies and in particular exploring techniques for using graph thoeretic approaches to analyse RDF models.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-5443154555114117330</id><published>2009-04-09T16:05:00.005+01:00</published><updated>2009-04-09T16:26:07.332+01:00</updated><title type='text'>.NET HSBC XML API PAS Integration - code!</title><content type='html'>Hi All,&lt;br /&gt;&lt;br /&gt;Okay I have stripped out all the project specific code and created a project taht illustrates how to use the classes.&lt;br /&gt;&lt;br /&gt;There has been a slight divergence in how it works comared to how I explained in my previous post.  This has come about by my attempts to simplify the code a bit more to aid understanding.&lt;br /&gt;&lt;br /&gt;Basically a quick summary of how things now work.&lt;br /&gt;&lt;br /&gt;On the page that creates and submits the order for 3D secure verification:&lt;br /&gt;&lt;br /&gt;1. Create an object of type Order, set its members (amoutInPence, orderDescription).&lt;br /&gt;2. Create an object of type PaymentDetails and set its memebers&lt;br /&gt;3. Assign the payment details to the order by setting the Order.paymentDetails member to your 'PaymentDetails' instance&lt;br /&gt;4. Persit your order to a database by calling the persistToDatabase method on the order object&lt;br /&gt;5. Encrypt and persist the payment details to the database by calling the 'serializeEncryptAndStorePaymentDetails' method on the order object&lt;br /&gt;6. Get the HTML to create the PAS form by calling the 'renderPASForm' method of your order object&lt;br /&gt;7. Render that form to the page (using Response.Write or setting the .Text value of a literal control).&lt;br /&gt;&lt;br /&gt;You then need a page that will handle the reponse that the 3D secure site will return when the user is returned to your site.  I have called this pasReponseHandler, in this page you need to:&lt;br /&gt;&lt;br /&gt;8. Create an object of type PASInformation and set its members to the values returned by the PAS service&lt;br /&gt;9. Retrieve your order from your database by calling the 'retrieveOrderFromDatabase' method on the order class&lt;br /&gt;10. Retrieve the orders payment details from the database by calling the 'decryptAndDeserializePaymentDetails' method on your order object&lt;br /&gt;11. get an instance of an hsbcRequest object by calling the 'createPaymentRequest' method of the order object&lt;br /&gt;12. submit this request to HSBC by calling the 'submitForPayment' method of this hsbcRequest instance.  This method will return an hsbcResponse object&lt;br /&gt;13. Check the status of the hsbcResponse instance by examining it's members (in particular 'TransactionStatus') and then process your order according to whether the payment was accepted or not.&lt;br /&gt;&lt;br /&gt;Hopefully the code and comments should explain it all but please let me know if you have any problems.  I haven't tested this code live against HSBC as I haven't got a test account (and won't use our clients!).  The code should be fine though.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cid-212c16650b4dd649.skydrive.live.com/self.aspx/Public/HsbcLibrary.zip?ccr=2049&amp;amp;lc=2057"&gt;You can download it from here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you find it useful then I have added a 'donate' paypal button to this blog and any donation, no matter how small, would be appreciated to keep me in beer!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-5443154555114117330?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/5443154555114117330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=5443154555114117330' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/5443154555114117330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/5443154555114117330'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2009/04/net-hsbc-xml-api-pas-integration-code.html' title='.NET HSBC XML API PAS Integration - code!'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-6080927956298857536</id><published>2009-04-06T23:26:00.002+01:00</published><updated>2009-04-07T00:08:47.439+01:00</updated><title type='text'>.NET HSBC API PAS integration</title><content type='html'>Hi All,&lt;br /&gt;&lt;br /&gt;Sorry I haven't blogged for months, i have been snowed under with exciting projects at work. I have had a few emails asking for the PAS examples I promised so long ago.&lt;br /&gt;&lt;br /&gt;Well, it has been a while since I wrote the code and it is embedded into quite a sucesful project, however i have extracted the salient points herewhich shouldhelp  illustrate how i integrate with the PAS system provided by HSBC.&lt;br /&gt;&lt;br /&gt;Okay, first a quick over view of how the PAS process works (which I think is a daft way for reasons that will become clear). &lt;br /&gt;&lt;br /&gt;First you collect all the customers payment details (i do this by instantiating an object of type Order and setting the various properties, one of which is of type PaymentDetails).&lt;br /&gt;&lt;br /&gt;Then, we have to render a form to the users browser to submit the payment details off to the PAS server, for this I have a method called renderPASForm (which takes an Order object as an argument and returns a string containing the html form to be rendered to theclients browser).&lt;br /&gt;&lt;br /&gt;The user then submits this form (or we do it on thier behalf using some clientside javascript) and goes of to the 3d secure site. Once they finish there, they are redirected back to your site to a page that needs to handle the PAS response.&lt;br /&gt;&lt;br /&gt;Now the real gotcha is that before we sent the user off to the PAS site  we needed to persist the order somewhere, as all we get back from the PAS service is the relevant PAS info and not all of our order information.  So, before we can submit the actual order for processing by the HSBC api we must first retrieve it from whereever we persited it to, add in the additional PAS data we got back from the PAS server and pop it all into an XML object that we can then  POST to the HSBC gateway.&lt;br /&gt;&lt;br /&gt;Still following? good.&lt;br /&gt;&lt;br /&gt;Now at this point i am sure you will agree that having to send the user off to the 3d secure site AFTER we have collected thier payment details is bad because it means we have to PERSIST THIER PAYMENT DETAILS, which goes against the best security practices and puts you into a whole different category when it comes to PCI-DSS compliance.&lt;br /&gt;&lt;br /&gt;Okay, so anyway, from a programming perspective what I have is this;&lt;br /&gt;&lt;br /&gt;A class 'Order' which holds details of what a customer has ordered (line items, quantities, cost etc) and also holds the customers payment details by means of a member of type 'PaymentDetails', it also has a member of type 'PASInformation'to store the information we recieve from the pas server.&lt;br /&gt;&lt;br /&gt;I then have a class 'PaymentSystem' which has some members to hold all the config info (hsbcClientAlias, hsbcPASEndPointUrl, pasResponseHandlerUrl), and 2 methods; 'getPASFormHtml' and 'submitOrderForPayment', both of which take an object of type 'redr' as args.&lt;br /&gt;&lt;br /&gt;The method getPASFormHtml returns an HTML string containing the PAS submission form as metioned above.  The method submitOrderForPayment makes use of the 'hsbcApiRequest' and 'hsbcApiResponse' classes detailed in my previous posts but now augmented to use the PASInformation memen-ber of the Order class to set the relevant XML elements in the HSBC XML request.&lt;br /&gt;&lt;br /&gt;Stringing it all together in a web-app therefore simply requires you to do the following:&lt;br /&gt;&lt;br /&gt;Have a page that collects the order details and payment details. &lt;br /&gt;&lt;br /&gt;Create an object of type order and set these details in it. &lt;br /&gt;&lt;br /&gt;Call the static 'persistOrder' method of the Order class passing it your  Order object.&lt;br /&gt;&lt;br /&gt;Call the static method 'getPASFormHtml' of the PaymentSystem class passing it your Order object and Response.Write the resulting string (or use an asp:literal control to output the form to the page).&lt;br /&gt;&lt;br /&gt;Create a PAS Response handler aspx page and in the onload of this retrieve your order (using the factory method retrieveOrder of the Order class).&lt;br /&gt;&lt;br /&gt;Populate the properties of the PASDetails member of the order class with the values from the PAS Service site (i.e. via the Request.Form object).&lt;br /&gt;&lt;br /&gt;Call the static method 'submitOrderForPayment' of the PaymentSystem class passing it your order object.&lt;br /&gt;&lt;br /&gt;You can then use the order object as you see fit to alert you to the statusof theorder (e.g. generate an email, or display feedback to the user on the success or failure of thier payment).&lt;br /&gt;&lt;br /&gt;I hope this helps someone with thier integartion.  I will just tidy up the code and strip it downto the essentials (leaving out bits specific to my project) and post it here tomorrow.  If for any reasonI forget, please feel free to bug me at ssu96ld at live dot co dot uk.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;&lt;br /&gt;Lee.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-6080927956298857536?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/6080927956298857536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=6080927956298857536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/6080927956298857536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/6080927956298857536'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2009/04/net-hsbc-api-pas-integration.html' title='.NET HSBC API PAS integration'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-5694609188655465174</id><published>2008-06-09T15:41:00.006+01:00</published><updated>2008-06-09T16:08:52.867+01:00</updated><title type='text'>HSBC XML API c# classes for .NET</title><content type='html'>As per my last post I have now made a general version of my &lt;a href="http://cid-212c16650b4dd649.skydrive.live.com/self.aspx/Public/HSBCNET.zip"&gt;HSBC XML API c# classes for .NET&lt;/a&gt; that I had developed as part of a larger project.  I have simplified things to just 2 C# classes.  This stripped down version should be able to be used as a jumping off point for using the HSBC XML API from any of the .NET lanaguages.&lt;br /&gt;&lt;br /&gt;As you will see if you download the ZIP, I have incldued a sample ASP.NET page to show how the classes are to be used.    Basically the solution uses a template XML file that contains elements for the key data fields required by the HSBC XML API.  The classes I have created use this template to create an in memory XML document, populate the appropriate elements with the values you set and then submit the lot for processing (via the HSBC gateway).&lt;br /&gt;&lt;br /&gt;The process is rather straight forward but I thought I would just outline the steps required here.&lt;br /&gt;&lt;br /&gt;First off create an instance of the hsbcRequest class:&lt;br /&gt;&lt;br /&gt; hsbcRequest req = new hsbcRequest();&lt;br /&gt;&lt;br /&gt;This object has a number of publicly accessible properties that you can set which correspond to the data fields HSBC requires to process a transaction.  Set each of these as required, e.g. :&lt;br /&gt;&lt;br /&gt;     req.orderID = "TESTORDER1";&lt;br /&gt;     req.paymentCardCode = 123;&lt;br /&gt;     req.paymentCardExpiryMonth = 10;&lt;br /&gt;     req.paymentCardExpiryYear = 08;&lt;br /&gt;     req.paymentCardHoldersName = "MR T E STING";&lt;br /&gt;     req.paymentCardNumber = "123456789";&lt;br /&gt;     // etc ....&lt;br /&gt;&lt;br /&gt;Once you have set all of these and are ready to submit the request to the HSBC XML gateway you simply call the 'submitForPayment' which will submit the request and return an object of type 'hsbcResponse'&lt;br /&gt;&lt;br /&gt; hsbcResponse res = req.submitForPayment();&lt;br /&gt;&lt;br /&gt;this object liekwise has a number of properties corresponding to data sent back by HSBC in it's response, the most important of whcih is the 'TransactionStatus' whose possible values you will find defined in the HSBC documentation (e.g. 'A' for approved, 'F' for fraud, etc.).&lt;br /&gt;&lt;br /&gt;     string result = res.TransactionStatus;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Other than that the source code should be e self explanatory.&lt;br /&gt;&lt;br /&gt;You can download a &lt;a href="http://cid-212c16650b4dd649.skydrive.live.com/self.aspx/Public/HSBCNET.zip"&gt;ZIP archive of the files here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-5694609188655465174?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/5694609188655465174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=5694609188655465174' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/5694609188655465174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/5694609188655465174'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2008/06/as-per-my-last-post-i-have-now-made.html' title='HSBC XML API c# classes for .NET'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-3459183208093285693</id><published>2008-03-05T17:47:00.004Z</published><updated>2008-06-09T15:58:42.775+01:00</updated><title type='text'>E Commerce, WSE and the HSBC API on .NET using C#</title><content type='html'>It has been a fair few months since my last post and so I thought i'd better pop something up here.&lt;br /&gt;&lt;br /&gt;I have recently been working on an e-commerce site and I have been using microsofts web services extensions to implement message level security on the communications between the webapplication and a remote web service.   Setting up the WSE policies is extreemly straight forward and I have been pleasantly surprised.&lt;br /&gt;&lt;br /&gt;What was less simple was reading the documentation supplied by HSBC for thier XML API.  There are no decent example messages shown and the XML messages that you are required to post to thier payment geteway do not even have a schema against which you can validate before submitting them.  This  is particular has caused a lot of time to be wastes as if you submit a message that does not conform to thier (rather complex) document structure, you do not get any helpful error message back, rather you simply get no response from thier server at all!&lt;br /&gt;&lt;br /&gt;If anybody else needs to work with the HSBC payment XML API, I would be happy to supply some C# classes that I use to abstract away all the nastiness. (Please see my later post entitled  &lt;a href="http://lmdavies.blogspot.com/2008/06/"&gt;HSBC XML API c# classes for .NET&lt;/a&gt; that contains these files for you)&lt;br /&gt;&lt;br /&gt;On another subject I have also been working on a tool to allow a client to plot Polylines on Google Maps.  I was surprised that I could not find a robust enough tool available on the web already.  Most examples do not allow forcomplex editing of existing lines (such as chopping sections out of the middle of a line, etc).  Anyway I have almost completed this work and may make a public version available if anyone is interested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-3459183208093285693?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/3459183208093285693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=3459183208093285693' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/3459183208093285693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/3459183208093285693'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2008/03/e-commerce-wse-and-hsbc-api-on-net.html' title='E Commerce, WSE and the HSBC API on .NET using C#'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-2101651901364132329</id><published>2007-12-14T11:24:00.000Z</published><updated>2007-12-14T11:27:00.081Z</updated><title type='text'>Using Jena in C# .NET</title><content type='html'>I have just realsied that I hadn't actually posted the link to my files in my previous post on using the Jena RDF library in .NET.  I have now updated the article and the link to the files (in a single zip) is now there!&lt;br /&gt;&lt;br /&gt;If you can't be bothered to find the original post here is the link again:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cid-212c16650b4dd649.skydrive.live.com/self.aspx/Public/RDF/simpleJenaForDotNetExample.zip"&gt;Files and example for using the Jena RDF library in .NET&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-2101651901364132329?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/2101651901364132329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=2101651901364132329' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/2101651901364132329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/2101651901364132329'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2007/12/using-jena-in-c-net.html' title='Using Jena in C# .NET'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-5456152373555101364</id><published>2007-12-10T16:44:00.000Z</published><updated>2007-12-10T22:15:21.296Z</updated><title type='text'>RDF METADATA GENERATION - MSc Dissertation</title><content type='html'>Below is the abstract of my 2006 dissertation as well as a link to the full PDF.  Basically this was my first project aiming to apply a graph-centric to RDF models in order to glean additional information from them.  This project presents an algorithm for comparing resources based on attribute similarities and use measures of such similarities to order all resource and object veritices in an RDF model.  Such ordering of verticies allows for values of RDF properties to be ranked relative to a given Object and thus allow us to predict property values for said object.&lt;br /&gt;&lt;br /&gt;Link to full version:  &lt;a href="http://cid-212c16650b4dd649.skydrive.live.com/self.aspx/Public/RDF/formattedDissertation.pdf"&gt;RDF Metadata Generation Dissertation Project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;IDENTIFICATION, GENERATION AND PROPAGATION OF&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;RDF METADATA ACROSS ONLINE RESOURCES&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Abstract &lt;/span&gt;&lt;span style="font-family:arial;"&gt;- The Semantic Web project being advanced by the World Wide Web Consortium aims to augment the existing World Wide Web in order to make available resources more easily understandable by machines or computer programs. The Semantic Web as a concept relies upon &lt;/span&gt;&lt;span style="font-family:arial;"&gt;meaningful, machine comprehensible, metadata being assigned to the large volumes of resources &lt;/span&gt;&lt;span style="font-family:arial;"&gt;available on the web. The Resource Description Framework (RDF) has been developed to enable such metadata to be represented in the form of predicate relations between resources.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The present World Wide Web contains a vast quantity of information in the form of electronic &lt;/span&gt;&lt;span style="font-family:arial;"&gt;documents and files, ranging from semi-structured markup documents to various encoded image, sound and video files. In order that such existing resources may be included in the semantic web project a requirement exists for practical autonomous and semi-autonomous methods to be developed for the generation of metadata for such existing resources.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The Resource Description Framework’s data model is an inherently graph based structure, linking subject and object resources via resource predicates. This project explores a method of &lt;/span&gt;&lt;span style="font-family:arial;"&gt;predicting metadata property values that exploits the graph structure of the RDF model to rank &lt;/span&gt;&lt;span style="font-family:arial;"&gt;known property values relative to a given unseen resource. The method proposed and allows &lt;/span&gt;&lt;span style="font-family:arial;"&gt;RDF models that assert known metadata statements about a collection of resources, to be&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;used to predict property values for unknown resources.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The outcome of this project is the implementation of a suite of Java classes that can be used to &lt;/span&gt;&lt;span style="font-family:arial;"&gt;predict metadata property values for resources given any suitable RDF data model describing &lt;/span&gt;&lt;span style="font-family:arial;"&gt;similar resources. A Java application was developed that demonstrates the use of the implemented classes to predict keyword values and category classification of resources based upon an sample RDF model describing 100 image files available on the Web. The results of this project show that graph centric approaches to metadata value prediction can be successfully applied to the wider problem of automatic RDF metadata generation.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-5456152373555101364?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/5456152373555101364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=5456152373555101364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/5456152373555101364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/5456152373555101364'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2007/12/rdf-metadata-generation-msc.html' title='RDF METADATA GENERATION - MSc Dissertation'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-7915565233680672183</id><published>2007-12-10T16:10:00.000Z</published><updated>2007-12-14T11:23:55.993Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jena RDF library for .NET in C#'/><title type='text'>Jena RDF Library for .NET (C#)</title><content type='html'>Last year a friend of mine was completing his BSc degree in I.T and Business.  His dissertation project was an application that crawled webpages and generated RDF data via the application of XSL templates (applied to the tidied XHTML files downloaded).    The project was written in C# on the .NET framework.  When my friend asked me for a nice easy to use RDF framework I initially thought of my MSc disseration and it's use of the Jena framework.&lt;br /&gt;&lt;br /&gt;Jena for .NET&lt;br /&gt;&lt;br /&gt;A number of posts online (&lt;a href="http://seaborne.blogspot.com/2006/02/progress-with-jenanet.html"&gt;such as this one&lt;/a&gt;) showed how Jena could be used in a .NET project by using the &lt;a href="http://www.ikvm.net/"&gt;IKVM project&lt;/a&gt; that includes a .NET implementation of the Java Virtual Machine (JVM).  Basically this is what I did and then also wrote a very simple class that s you to easily create a Jena model in an MS SQL database (or MySQL if you prefer) and load RDF files into it and query it using SPARQL.&lt;br /&gt;&lt;br /&gt;It is now one year on and there still doesn't seem to be any good examples of using Jena from .NET.  As such I have &lt;a href="http://cid-212c16650b4dd649.skydrive.live.com/self.aspx/Public/RDF/simpleJenaForDotNetExample.zip"&gt;posted my original class here as well as all required DLL libraries&lt;/a&gt; in the hope that they may be of benefit to others&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-7915565233680672183?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/7915565233680672183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=7915565233680672183' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/7915565233680672183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/7915565233680672183'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2007/12/jena-rdf-library-for-net-c.html' title='Jena RDF Library for .NET (C#)'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-7369919598418225850</id><published>2007-12-10T13:22:00.001Z</published><updated>2007-12-10T13:27:36.983Z</updated><title type='text'>Times Article - Brighton New Media</title><content type='html'>I read an interesting article in yesterdays Sunday Times.  The priciple focus of the article was the 'Creative Industries' in teh Brighton Area.  The article points out that Brighton is second only to London in terms of creative industry representation and even suggests that for digital media it may soon outpace London.  Whether or not this is teh case remains to be seen.&lt;br /&gt;&lt;br /&gt;Brightoin does indeed have a large number of digital design agencies however I still feel that design in over-represented in digital (read 'web') media and the technical aspects under represented.  I believe this is also reflected in the distribution between Design agencies in Brighton and more technical development companies.&lt;br /&gt;&lt;br /&gt;You can view the &lt;a href="http://business.timesonline.co.uk/tol/business/related_reports/entrepreneurs/article2993280.ece"&gt;Sunday Times article online here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://business.timesonline.co.uk/tol/business/related_reports/entrepreneurs/article2993280.ece"&gt;http://business.timesonline.co.uk/tol/business/related_reports/entrepreneurs/article2993280.ece&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-7369919598418225850?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/7369919598418225850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=7369919598418225850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/7369919598418225850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/7369919598418225850'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2007/12/times-article-brighton-new-media.html' title='Times Article - Brighton New Media'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-618562029744087015.post-4507230307659141127</id><published>2007-12-07T14:29:00.000Z</published><updated>2007-12-07T14:36:42.541Z</updated><title type='text'>RDF Repository</title><content type='html'>As part of a project I completed last year I had a need to find large sample RDF datasets.  Some reasonablly thorough online research turned up a lot of 'toy-world' style sample datasets but not many useful 'real-world' collections.&lt;br /&gt;&lt;br /&gt;I am proposing to create an online web service to enable anyone to add RDF triples to a collection as well as access all other data within others collections.   The idea behind this would be to coallate some meaningful real life RDF and place it in a single online easy to access location.  Hopefully this will be of benefit to others for research purposes initially, however if enough high quiality data can be collected, discrete collections could be made available for use in novel intelliigent applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/618562029744087015-4507230307659141127?l=lmdavies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lmdavies.blogspot.com/feeds/4507230307659141127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=618562029744087015&amp;postID=4507230307659141127' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/4507230307659141127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/618562029744087015/posts/default/4507230307659141127'/><link rel='alternate' type='text/html' href='http://lmdavies.blogspot.com/2007/12/rdf-repository.html' title='RDF Repository'/><author><name>Lee Davies</name><uri>http://www.blogger.com/profile/11764595029391244255</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos-a.ak.facebook.com/photos-ak-sf2p/v98/3/117/642660078/n642660078_171368_196.jpg'/></author><thr:total>1</thr:total></entry></feed>
