Carp Version 0.2
Hot on the heels of SemPlan RdfLib 0.2 is Carp 0.2, our Mono/.NET RDF API. As I mentioned earlier, we've refactored the two projects and pulled a lot of stuff out of Carp down into RdfLib. This leaves Carp leaner, but still as easy to use. Because of this, if you're using Carp and you want to upgrade RdfLib then you need to upgrade Carp too. Carp is now under the less restrictive MIT license too.
The introduction of non-memory based triple stores in RdfLib has meant that we've had to rethink the way ResourceDescriptions work. There are some (slightly out of date) design notes on the wiki which help describe the problem. The summary is that because each ResourceDescription needs access to the complete subgraph relating to a Resource the old implementation took a copy of the relevant triples. Modifications to the ResourceDescription never affected the underlying KnowledgeBase so was always safe to get a Foaf.Agent, add a weblog and some knows properties and then add it to another KnowledgeBase. You'd never change your original data by manipulating a ResourceDescription. However, when it comes to database backed triple stores, it's dangerous to assume that a ResourceDescription could fit into memory. Therefore we had to devise a new model that preserved the consistency we had before, but didn't require a complete copy of all the data. So now, each ResourceDescription is read-only by default which allows it to read triples on demand from it's underlying triple store without side effects occuring. We call this an "attached" read-only ResourceDescription. You can get a writeable copy of the ResourceDescription by invoking the copy() method - you get a complete copy of the subgraph as before so you'd better be sure you know how much memory you need. This is a "detached" writeable ResourceDescription. Finally, you can specify that you want a writeable object when you query the KnowledgeBase. getDescriptionOf now takes an isWriteable parameter. When you do this you get an "attached" writeable ResourceDescription. Changes to the object will affect the underlying triple store so you need to be careful passing this thing around your application unless you like dealing with non-local side-effects. It's not an ideal solution, but it is a convenient one, in the spirit of Carp.
There have been some other small API changes, mainly because we've clarified the resource/node relationships in RdfLib. There shouldn't be anything that breaks existing code though. Let me know if you have any problems.
The main new feature is full RDFS entailment. This utilises the new query and rule capabilities in RdfLib and is triggered by calling think on a KnowledgeBase. Now your foaf:Persons are foaf:Agents and the rel:fatherOf someone really does foaf:know them too!
Direct downloads: binaries, source, docs, license
2 Comments
Leave a comment
Sorry, the comment form is closed at this time.

[…] eems to be a bit more movement around creating semantic web tools for .net. In particular carp and semplan. Good […]
Pingback by Bird's Eye View Blog — 23 Dec 2004 @ 11:35 pm
I think the binarys for the CARP downloads are missing. Anychance we can have a link to these. Thanks
Andy
Comment by Andy — 23 Aug 2005 @ 7:58 am