This wiki is locked. Future workgroup activity and specification development must take place at our new wiki. For more information, see this blog post about the new governance model and this post about changes to the website.

Introduction

This is a simple example that shows how different resource representations can be defined and linked using RDFS, and how to use RDF to create and link instances of those resources. The example follows a traditional metamodel approach that is typical of MOF, UML and UML XMI models.

  • RDFS is used as the meta-metamodel language, playing the same role as MOF to define modeling languages
  • RDFS is used to define metamodels for specific modeling languages or vocabularies
  • RDF is used to capture models using those vocabularies

The example starts with a metamodel of OMG Business Motivation Model (BMM). It then creates a metamodel for Requirements based on the OSLC Requirements Specification. It then creates a separate RDFS metamodel that defines a means of linking requirements to the business tactics that realize them. this metamodel is defined separately from BMM or Requirements, providing an extension to those vocabularies without changing either one. This shows how any tool could define any links it wishes between two metamodels without changing either metamodel.

This also alows the resource representations to be persisted independently in three different data sources. Requirements resources for example could be created in a relational database with a converter able to read and write RDF representations from and to the data source. BMM models might be stored as XMI files using a standard MOF2RDF? or XMI2RDF? converter to provide the RDF resource representation. Finally, the linking between BMM and Requirements could be stored natively in the Jazz Team Server.

Some guiding principles that influenced the development of this example:

  1. All resources are identified by a URI and accessed through RESTful Web Services using a URL
  2. Resources may be opaque and may be the subject or object of RDF properties representing links between resources
  3. Each resource owner can decide what level of content it chooses to expose as "open content"
    • none - the resource is a single opaque blob
    • some - the resource is partially converted to open content to make finer grained resources available for query, linking and extension
    • all - the resource is completely exposed as LOD using a defined vocabulary for its related content (e.g., a Model)
  4. The open content of each resource is exchanged using RDF/XML
    • Supports Linked Open Data
    • Resources data sources and stored data formats are independent of the exchanged resource representation
    • Converters are used to GET and PUT RDF resource representations from/to
  5. Any tool can access, extend, or link to any open content
    • The tool can define a vocabulary for its purposes that bridges other vocabularies - extending them and linking them as needed
    • A tool can use the JTS to persist information to enable direct linking and querying
    • Links are a kind of RDF predicate or property with an associated subject and object. Reified and asserted RDF statements can be used to provide properties for links.

1. A small part of BMM

This is a small subset of BMM in RDFS just to show what the metamodel might look like. This RDFS file was created using TopBraid? Composer Standard Edition (TBC). TBC provide a forms-based GUI for creating RDF and OWL documents and can render the vocabularies in a number of was including RDF/XML, n3, RDF graphs and UML diagrams.

The BMM subset focuses on ends and means and the relationships between them.The UML diagram and RDFS file for the subset are included below.

BMM UML Diagram

<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns="http://www.omg.org/specs/BMM#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xml:base="http://www.omg.org/specs/BMM">
  <owl:Ontology rdf:about="">
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Created with TopBraid Composer</owl:versionInfo>
  </owl:Ontology>
  <rdfs:Class rdf:ID="End">
    <rdfs:subClassOf>
      <rdfs:Class rdf:ID="MotivationElement"/>
    </rdfs:subClassOf>
  </rdfs:Class>
  <rdfs:Class rdf:ID="Mission">
    <rdfs:subClassOf>
      <rdfs:Class rdf:ID="Means"/>
    </rdfs:subClassOf>
  </rdfs:Class>
  <rdfs:Class rdf:ID="Goal">
    <rdfs:subClassOf>
      <rdfs:Class rdf:ID="DesiredResult"/>
    </rdfs:subClassOf>
  </rdfs:Class>
  <rdfs:Class rdf:ID="Objective">
    <rdfs:subClassOf>
      <rdfs:Class rdf:about="#DesiredResult"/>
    </rdfs:subClassOf>
  </rdfs:Class>
  <rdfs:Class rdf:ID="Tactic">
    <rdfs:subClassOf>
      <rdfs:Class rdf:ID="CourseOfAction"/>
    </rdfs:subClassOf>
  </rdfs:Class>
  <rdfs:Class rdf:ID="Strategy">
    <rdfs:subClassOf>
      <rdfs:Class rdf:about="#CourseOfAction"/>
    </rdfs:subClassOf>
  </rdfs:Class>
  <rdfs:Class rdf:ID="Vision">
    <rdfs:subClassOf rdf:resource="#End"/>
  </rdfs:Class>
  <rdfs:Class rdf:about="#Means">
    <rdfs:subClassOf>
      <rdfs:Class rdf:about="#MotivationElement"/>
    </rdfs:subClassOf>
  </rdfs:Class>
  <rdfs:Class rdf:about="#DesiredResult">
    <rdfs:subClassOf rdf:resource="#End"/>
  </rdfs:Class>
  <rdfs:Class rdf:about="#CourseOfAction">
    <rdfs:subClassOf rdf:resource="#Means"/>
  </rdfs:Class>
  <rdfs:Class rdf:about="#MotivationElement">
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
  </rdfs:Class>
  <rdf:Property rdf:ID="amplifies">
    <rdfs:domain rdf:resource="#Goal"/>
    <rdfs:range rdf:resource="#Vision"/>
  </rdf:Property>
  <rdf:Property rdf:ID="isAComponentOfThePlanFor">
    <rdfs:range rdf:resource="#Mission"/>
    <rdfs:domain rdf:resource="#Strategy"/>
  </rdf:Property>
  <rdf:Property rdf:ID="implements">
    <rdfs:range rdf:resource="#Strategy"/>
    <rdfs:domain rdf:resource="#Tactic"/>
  </rdf:Property>
  <rdf:Property rdf:ID="quantifies">
    <rdfs:domain rdf:resource="#Objective"/>
    <rdfs:range rdf:resource="#Goal"/>
  </rdf:Property>
  <rdf:Property rdf:ID="description">
    <rdfs:domain rdf:resource="#MotivationElement"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
  </rdf:Property>
  <rdf:Property rdf:ID="makesOperative">
    <rdfs:domain rdf:resource="#Mission"/>
    <rdfs:range rdf:resource="#Vision"/>
  </rdf:Property>
  <rdf:Property rdf:ID="channelsEffortsTowards">
    <rdfs:range rdf:resource="#DesiredResult"/>
    <rdfs:domain rdf:resource="#CourseOfAction"/>
  </rdf:Property>
  <rdf:Property rdf:ID="name">
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    <rdfs:domain rdf:resource="#MotivationElement"/>
  </rdf:Property>
</rdf:RDF>

2. A Simple Requirements Resource

OSLC defines a simple resource representation for requirements. Below is the UML diagram and RDFS file for that OSLC resource.

Resource UML Diagram

<?xml version="1.0"?>

<rdf:RDF

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:owl="http://www.w3.org/2002/07/owl#"

xmlns="http://open-services.net/xmlns/rm/1.0/Requirements#"

xmlns:dc="http://purl.org/dc/terms/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema#"

xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

xml:base="http://open-services.net/xmlns/rm/1.0/Requirements">

<owl:Ontology rdf:about="">

<owl:imports rdf:resource="http://purl.org/dc/dcam/"/>

<owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string"

>Created with TopBraid Composer</owl:versionInfo>

<owl:imports rdf:resource="http://purl.org/dc/elements/1.1/"/>

<owl:imports rdf:resource="http://purl.org/dc/terms/"/>

</owl:Ontology>

<rdfs:Class rdf:ID="Requirement">

<rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>

</rdfs:Class>

<rdf:Description rdf:about="http://purl.org/dc/terms/title">

<rdfs:domain rdf:resource="#Requirement"/>

</rdf:Description>

<rdf:Description rdf:about="http://purl.org/dc/terms/modified">

<rdfs:domain rdf:resource="#Requirement"/>

</rdf:Description>

<rdf:Description rdf:about="http://purl.org/dc/terms/created">

<rdfs:domain rdf:resource="#Requirement"/>

</rdf:Description>

<rdf:Description rdf:about="http://purl.org/dc/terms/creator">

<rdfs:domain rdf:resource="#Requirement"/>

</rdf:Description>

<rdf:Description rdf:about="http://purl.org/dc/terms/description">

<rdfs:domain rdf:resource="#Requirement"/>

</rdf:Description>

</rdf:RDF>

 

3. Linking Requirements to BMM

This RDFS document defines a link between a Requirement and a BMM Tactic that realizes it. This vocabulary is defined separately from BMM or Requirements and has no effect on those schemas. Such a schema is sometimes called a "bridging ontology" because it creates a vocabulary that bridges between different vocabularies, extending them for different purposes. Different users could create different bridging ontologies for different purposes. These can be defined independently, or one could extend another. The bridging ontologies not only define links between resources, but would use owl:sameAs to indicate subjects that are the same in the different ontologies.

Notice that this schema imports both the Requirements and BMM schemas in order to reference Requirement and Means. Any BMM Means is able to realize a requirement, not just a Tactic. Other parts of the BMM model are show in this diagram by reference to the BMM schema just to make the meaning of the meansRealizesRequirement property clearer.

Link Requirement to BMM Tactic

This is only one way that Requirements could be linked to BMM. It is a very simple approach that simply introduces a new rdf:Property into the vocabulary that links BMM subject to a requirements object. This may not always be the best approach. In this case, a new linking mechanism is being introduced that looks quite a lot like the channelsEffortsTowards property already defined in BMM. Two other approaches that could be use are:

  1. Have Requirement be a subclass of BMM DesiredResult? .
    • This could result in some overlapping properties; for example description.
    • It also raises the question about the relationship between Requirement, Goal and Objective, something BMM doesn't address. There's also nothing parallel to Requirement on the means side related to strategy and tactic.
    • But a Requirement would only be a subclass of BMM DesiredResult? in the particular context in which these vocabularies are integrated. Other tools that extend Requirement in different ways would be unaware of this unless they imported BMM into the context as well.
    • This is the primary benefit of Linked Open Data (LOD). It allows independent extensions to be created for any purpose without changing the underlying schemas.
  2. Another possibility would be for meansRealizesRequirement to be a sub-property of channelsEffortsTowards.
    • This provides more flexible linking of the domains and ranges of the properties
    • It would be possible for example to say a Strategy channelsEffortsTorwards a Requirement which would be meaningful.

These different approaches aren't included in this example to keep things simple, and to be more consistent with the OSLC approach to linking. But note that different tools could take different approaches if it meets their needs - it is not necessary to choose one over the other. In fact, the same tool could even support all three approaches and they would not conflict. Inference engines can infer triples from any of these approaches that capture information similar to the other approaches providing a great deal of flexibility.

<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://open-services.net/xmlns/rm/1.0/LinkReqAndBMM#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:Requirements="http://open-services.net/xmlns/rm/1.0/Requirements#"
    xmlns:dcterms="http://purl.org/dc/terms/"
    xmlns:BMM="http://www.omg.org/specs/BMM#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xml:base="http://open-services.net/xmlns/rm/1.0/LinkReqAndBMM">
  <owl:Ontology rdf:about="">
    <owl:imports rdf:resource="http://open-services.net/xmlns/rm/1.0/Requirements"/>
    <owl:imports rdf:resource="http://www.omg.org/specs/BMM"/>
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Created with TopBraid Composer</owl:versionInfo>
    <owl:imports rdf:resource="http://purl.org/dc/dcam/"/>
  </owl:Ontology>
  <rdf:Property rdf:ID="assertedBy">
    <rdfs:domain rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#isDefinedBy"/>
  </rdf:Property>
  <rdf:Property rdf:ID="meansRealizesRequirement">
    <rdfs:range rdf:resource="http://open-services.net/xmlns/rm/1.0/Requirements#Requirement"/>
    <rdfs:domain rdf:resource="http://www.omg.org/specs/BMM#Means"/>
  </rdf:Property>
</rdf:RDF>
 

4. Sales Improvement Initiative

This is a simple example of a BMM model and a Requirement, showing how the two can be linked together. These RDF files are instances of the previous RDF schemas. Each resource could be persisted in a different data source as long as they can be exchanged using RDF/XML and the URI are preserved.

The diagram below is a TBC graph that looks remarkably like a UML instance diagram. You can see the instances, their property values, and their type (classifier in UML).

Sales Initiative Instance Diagram

Even though the resources could be stored in separate data sources and converted in different ways to RDF/XML, when the resources are actually used, they would be in once graph representing the specific context the tool is providing for its user. The RDF/XML for that context would contain the following:

<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:LinkReqAndBMM="http://open-services.net/xmlns/rm/1.0/LinkReqAndBMM#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:Requirements="http://open-services.net/xmlns/rm/1.0/Requirements#"
    xmlns:dcterms="http://purl.org/dc/terms/"
    xmlns:BMM="http://www.omg.org/specs/BMM#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns="http://open-services.net/xmlns/rm/1.0/SalesImprovementInitiative#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xml:base="http://open-services.net/xmlns/rm/1.0/SalesImprovementInitiative">
  <owl:Ontology rdf:about="">
    <owl:imports rdf:resource="http://open-services.net/xmlns/rm/1.0/LinkReqAndBMM"/>
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Created with TopBraid Composer</owl:versionInfo>
  </owl:Ontology>
  <BMM:Tactic rdf:ID="Expand_RSx_Sales_Team">
    <BMM:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Use am expanded sales force to introduce RSx with other products</BMM:description>
  </BMM:Tactic>
  <Requirements:Requirement rdf:ID="Increase_RSx_Sales">
    <dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Need to increase RSx sales by 9%</dcterms:description>
  </Requirements:Requirement>
  <BMM:Tactic rdf:ID="Repackage_RSA">
    <BMM:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Improve Sales in the NE region</BMM:description>
    <LinkReqAndBMM:meansRealizesRequirement>
      <Requirements:Requirement rdf:ID="Improve_Sales">
        <dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
        >A requirement to improve sales</dcterms:description>
        <dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
        >Imporve Sales</dcterms:title>
        <dcterms:abstract rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
        >Improve sales figures</dcterms:abstract>
      </Requirements:Requirement>
    </LinkReqAndBMM:meansRealizesRequirement>
  </BMM:Tactic>
  <rdf:Description rdf:about="http://open-services.net/xmlns/rm/1.0/Expand_RSx_Sales_Team">
    <LinkReqAndBMM:meansRealizesRequirement rdf:resource="http://open-services.net/xmlns/rm/1.0/Increase_RSx_Sales"/>
  </rdf:Description>
  <Requirements:Requirement rdf:ID="Increase_RAD_Sales">
    <dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Need to increase RAD sales by 22%</dcterms:description>
  </Requirements:Requirement>
  <BMM:Tactic rdf:ID="Dedicated_RAD_Sales_Team">
    <BMM:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Use a dedicated sales force to focus on effective use of specific products</BMM:description>
  </BMM:Tactic>
  <rdf:Statement rdf:ID="about_improving_rad_sales">
    <LinkReqAndBMM:assertedBy rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Jim Amsden</LinkReqAndBMM:assertedBy>
    <rdf:subject rdf:resource="#Increase_RAD_Sales"/>
    <rdf:object rdf:resource="#Dedicated_RAD_Sales_Team"/>
    <rdf:predicate rdf:resource="http://open-services.net/xmlns/rm/1.0/LinkReqAndBMM#meansRealizesRequirement"/>
  </rdf:Statement>
</rdf:RDF>
 

-- JimAmsden - 16 Nov 2009

Topic attachments
I Attachment Action Size Date Who Comment
pngpng BMM.png manage 159.9 K 16 Nov 2009 - 14:39 JimAmsden  
pngtiff BMM.tiff manage 186.4 K 16 Nov 2009 - 14:17 JimAmsden  
pngpng LinkReqToBMM.png manage 158.1 K 16 Nov 2009 - 14:54 JimAmsden  
pngpng Resource.png manage 99.2 K 16 Nov 2009 - 14:50 JimAmsden  
pngpng SalesInitiative.png manage 84.9 K 16 Nov 2009 - 14:58 JimAmsden  
Topic revision: r3 - 17 Nov 2009 - 15:24:30 - JimAmsden
 
This site is powered by the TWiki collaboration platform Copyright � by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Contributions are governed by our Terms of Use
Ideas, requests, problems regarding this site? Send feedback