Speaking with a colleague yesterday, he mentioned that he needs to create a LOD-based proof of concept in which two COTS products and a generic triplestore are linked together to provide a unified view of various enterprise-wide entities. The wrinkle in the problem is that we can’t build RDF Views to expose the data in one of the systems. It’s a real-time system that queries network elements on-demand and therefor we need to use their API in order to get that data.

Hum. So how can we (easily) make a proprietary API expose itself in a LOD friendly way?

My initial thinking is that we simply wrap objects returned from the API with a facade class. The Facade will be pretty dumb and will just delegate calls to the backing object. However, the methods of our facade will contain a number of annotations. For example, @Subject might indicate that this method represents the URI of the thing the object represents. @Predicate [some uri fragment] indicates that this methods return value will be a property of the object, using [some uri fragment] as it’s name.

public class NodeFacade extends Node {
@Subject
public String getUUID() {
return super.getUUID();
}

@Predicate #status
public String getStatus() {
return super.getStatus();
}

@Predicate #vendor
public String getVendor() {
return super.getVendor();
}
}
etc...

By introspecting the class and noting the annotations, we should be able to generate a set of triples for this object. We also note the server’s name and context path and include that as necessary.

<http://www.foo.com/node#7840-0932> <http://www.foo.com/node#vendor> "Cisco" .
<http://www.foo.com/node#7840-0932> <http://www.foo.com/node#status> "DOWN" .

Anyway, that’s my initial thoughts on how to do this. What have you or others done wrt this problem? I’d love to hear any feedback you have.

One Response to “Thoughts on Linked Data and Closed Source APIs”

  1. Kingsley Idehen Says:

    This is what RDFizers/Cartridges are all about. You use the proprietary system’s API to implement the interfaces provided by the RDFization Middleware.

    Virtuosos, which is an RDF Quad Store and RDF Views engine (a Virtual & Native Data Manager) offers you the following:

    1. RDFization plugin layer (you write a cartridge)
    2. Linked Data Deployment

    Links:
    1. http://virtuoso.openlinksw.com/presentations/Creating_Deploying_Exploiting_Linked_Data2/images/ldp4.png

    2. http://virtuoso.openlinksw.com/presentations/Virtuoso_Sponger_1/Virtuoso_Sponger_1.html

Leave a Reply