Search code examples
workflowsemanticsrdfsemantic-markupowl

Workflow graph as RDF?


I am new to RDF and, perhaps, my question is too silly to be asked.

I have the following workflow, which I am trying to be represent as an RDF. I understand the theories behind RDF and its uses, but I am stuck at how to get started to creating an RDF for this graph. I would appreciate any help.

Thanks in advance.

~Codera

Network graph


Solution

  • To start, you'd want to model the edges are RDF properties like:

    :propose rdf:type rdf:Property;
        rdfs:label "propose".
    :accept rdf:type rdf:Property;
        rdfs:label "accept".
    

    Then you can use those to relate M(1..N):

    :M1 :propose :M2.
    :M2 :propose :M3.
    

    That will roughly form an RDF graph representing the diagram you have above. You can attach additional properties to each M(1..N) as required by your application, or you can model them as rdfs:Class objects and have your properties relate instances of those classes.

    If you have not read the primer that's a pretty decent place to start, it's got some examples that will look pretty close to what you're trying to model. For schema or ontology authoring, creating and maintaining a simple one by hand in a text editor is not too bad, but you might want to look at using Protege as the complexity grows, especially if you want to start using OWL.

    As far as tools to build your application, your best bet to start with are either the Sesame or Jena APIs. They provide all the bits you'll need for reading, writing, and using RDF. I recommend Sesame, I think it's easier to use, and has more database options available. If you're not a Java programmer, there are some options out there, rdflib for python and dotNetRdf for .Net are a couple examples.