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.
Consider a DOORS Repository with structure:

Cars_Hierarchy.bmp

  • 1) Report of all pollen filter tenders for Model1
  • 2) Report of all pollen filter tenders for Family Cars
  • 3) Report of all pollen filter tenders.

Assume a well known base Service Provider Catalog Resource URL - e.g. http://www.example.com/catalog

- - - - - - - - - - -

To retrieve the top level Service Provider Catalog:

GET http://www.example.com/catalog

Returns:

<?xml version="1.0"?>
<oslc_disc:ServiceProviderCatalog
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dc="http://purl.org/dc/terms/"  
     xmlns:oslc_disc="http://open-services.net/xmlns/discovery/1.0/"
     rdf:about="http://www.example.com/catalog.xml">

  <dc:title>Top Level Vehicle Catalog</dc:title>

  <oslc_disc:entry>
     <oslc_disc:ServiceProviderCatalog rdf:about="http://www.example.com/carcatalog.xml" >
        <dc:title>Car Catalog</dc:title>
     </oslc_disc:ServiceProviderCatalog>
  </oslc_disc:entry>

   ... Maybe more catalogs e.g. Aircraft etc. ...

</oslc_disc:ServiceProviderCatalog> 

- - - - - - - - - - -

To retrieve the Car Catalog GET the nested Service Provider Catalog resource:

GET http://www.example.com/carcatalog.xml

Returns

<?xml version="1.0"?>
<oslc_disc:ServiceProviderCatalog
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dc="http://purl.org/dc/terms/"  
     xmlns:oslc_disc="http://open-services.net/xmlns/discovery/1.0/"
     rdf:about="http://www.example.com/carcatalog.xml">

  <dc:title>Car Catalog</dc:title>

  <oslc_disc:entry>
     <oslc_disc:ServiceProviderCatalog rdf:about="http://www.example.com/familycarcatalog.xml" >
        <dc:title>Family Car Catalog</dc:title>
     </oslc_disc:ServiceProviderCatalog>
  </oslc_disc:entry>

  <oslc_disc:entry>
     <oslc_disc:ServiceProviderCatalog rdf:about="http://www.example.com/performancecarcatalog.xml" >
        <dc:title>Performance Car Catalog</dc:title>
     </oslc_disc:ServiceProviderCatalog>
  </oslc_disc:entry>

  <oslc_disc:entry>
     <oslc_disc:ServiceProvider>
        <dc:title>Generic Car Requirements</dc:title>
        <oslc_disc:details rdf:resource="http://www.example.com/jazz/98gJH77897sdfJ" />
        <oslc_disc:services rdf:resource="http://www.example.com/jazz/requirements/contexts/9JHiyh756hJHtyu78jh/services.xml" />
     </oslc_disc:ServiceProvider>
  </oslc_disc:entry>

</oslc_disc:ServiceProviderCatalog>

- - - - - - - - - - -

To retrieve the Family Car Catalog GET the nested Service Provider Catalog resource:

GET http://www.example.com/familycarcatalog.xml

Returns

<?xml version="1.0"?>
<oslc_disc:ServiceProviderCatalog
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dc="http://purl.org/dc/terms/"  
     xmlns:oslc_disc="http://open-services.net/xmlns/discovery/1.0/"
     rdf:about="http://www.example.com/familycarcatalog.xml">

  <dc:title>Family Car Catalog</dc:title>

  <oslc_disc:entry>
     <oslc_disc:ServiceProvider>
        <dc:title>Model 1</dc:title>
        <oslc_disc:details rdf:resource="http://www.example.com/jazz/Cgch234Hg78SD897FS" />
        <oslc_disc:services rdf:resource="http://www.example.com/jazz/requirements/contexts/Kgh7896dsgkg7sdfhi/services.xml" />
     </oslc_disc:ServiceProvider>
  </oslc_disc:entry>

  <oslc_disc:entry>
     <oslc_disc:ServiceProvider>
        <dc:title>Model 2</dc:title>
        <oslc_disc:details rdf:resource="http://www.example.com/jazz/8sdfkjUI7fsjk8fGGx" />
        <oslc_disc:services rdf:resource="http://www.example.com/jazz/requirements/contexts/j2c4498uKJ098LFJ90/services.xml" />
     </oslc_disc:ServiceProvider>
  </oslc_disc:entry>

</oslc_disc:ServiceProviderCatalog> 

- - - - - - - - - - -

To retrieve the Model 1 Car Services Document GET the nested Service Provider services resource:

GET http://www.example.com/jazz/requirements/contexts/Kgh7896dsgkg7sdfhi/services.xml

Returns:

<?xml version="1.0" encoding="UTF-8"?>
<oslc_sd:ServiceDescriptor
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/terms/"
  xmlns:oslc_sd="http://open-services.net/xmlns/commons/servicedescription/1.0/"
  xmlns:oslc_report="http://open-services.net/xmlns/reporting/1.0/"
  xmlns:oslc_query="http://open-services.net/xmlns/query/1.0/"
  rdf:about="http://www.example.com/jazz/requirements/contexts/Kgh7896dsgkg7sdfhi/services.xml">

    <dc:title xml:lang="en-GB">Components for Model 1 Family Car</dc:title>
    <dc:description xml:lang="en-GB">DOORS OSLC Reporting 1.0 provider for Model 1 Family Car</dc:description>
    <dc:contributor>
      <oslc_sd:Contributor>
        <dc:title>IBM Rational DOORS</dc:title>
        <dc:identifier>com.ibm.rdm.doors</dc:identifier>
        <oslc_sd:icon rdf:resource="https://www.example.com/resources/doorsicon.ico"/>
        <oslc_sd:home>
          <oslc_sd:Home>
            <dc:title>IBM Rational DOORS</dc:title>
            <oslc_sd:application rdf:resource="doors://www.example.com/invokedoors"/>
          </oslc_sd:Home>
        </oslc_sd:home>
      </oslc_sd:Contributor>
    </dc:contributor>

    <oslc_report:schemaEnquiry>
      <oslc_query:Query>
        <dc:title>Service to explore schema of Model 1 Family Car reporting context.</dc:title>
        <oslc_query:query rdf:resource="http://www.example.com/jazz/requirements/contexts/j2c4498uKJ098LFJ90?schema=yes"/>
      </oslc_query:Query>
    </oslc_report:schemaEnquiry>

    <oslc_report:queryEvaluation >
      <oslc_query:Query>
        <dc:title>Service to evaluate query within Model 1 Family Car reporting context.</dc:title>
        <oslc_query:query rdf:resource="http://www.example.com/jazz/requirements/contexts/j2c4498uKJ098LFJ90"/>
      </oslc_query:Query>
    </oslc_report:queryEvaluation >

</oslc_sd:ServiceDescriptor>

- - - - - - - - - - -

To retrieve the schema from the Model 1 Family Car context GET the nested Schema Enquiry query resource:

GET http://www.example.com/jazz/requirements/contexts/j2c4498uKJ098LFJ90?schema=yes

Returns:

<rdfs:Class rdf:about="http://open-services.net/xmlns/rm/1.0/Requirement"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"  
  xmlns:oslc_report="http://open-services.net/xmlns/reporting/1.0/">

  <oslc_report:hasInterestingProperty rdf:resource="dc:title" />
  <oslc_report:hasInterestingProperty rdf:resource="dc:description" />
  <oslc_report:hasInterestingProperty rdf:resource="dc:creator" />

  ...

  <oslc_report:hasInterestingProperty rdf:resource="http://www.example.com/rm/types/pollenfilter" />

</rdfs:Class>

- - - - - - - - - - -

To query the Model 1 Family Car context GET the nested Query Evaluation query resource (with the required query parameters):

GET http://www.example.com/jazz/requirements/contexts/j2c4498uKJ098LFJ90?oslc_query=example:pollenfilter=”*&rdquo;;;;;;;;;;;

which would satisfy scenario 1) described above.



To satisfy scenarios 2) and 3) there would need to be Service Documents associated with the relevant Service Provider Catalogues (Cars and Family Cars). Currently the Service Catalog specification does not provide a specific facility to enable this – a node can contain a mix of Service Providers and Service Provider Catalogs, but we would need to define a mechanism to determine whether a Service Provider referred to a generic context (i.e. all the resources below it in the hierarchy) or a specific context (i.e. a requirement document located at that point in the hierarchy).

One possibility would be for the Reporting Service Implementer to provide a service within a Catalog that reports over the whole subtree, so retrieving the Car Catalog by a GET on the Service Provider Catalog resource:

GET http://www.example.com/carcatalog.xml

Returns

<?xml version="1.0"?>
<oslc_disc:ServiceProviderCatalog
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:dc="http://purl.org/dc/terms/"  
     xmlns:oslc_disc="http://open-services.net/xmlns/discovery/1.0/"
     rdf:about="http://www.example.com/carcatalog.xml">

  <dc:title>Car Catalog</dc:title>

  <oslc_disc:entry>
     <oslc_disc:ServiceProviderCatalog rdf:about="http://www.example.com/familycarcatalog.xml" >
        <dc:title>Family Car Catalog</dc:title>
     </oslc_disc:ServiceProviderCatalog>
  </oslc_disc:entry>

  <oslc_disc:entry>
     <oslc_disc:ServiceProviderCatalog rdf:about="http://www.example.com/performancecarcatalog.xml" >
        <dc:title>Performance Car Catalog</dc:title>
     </oslc_disc:ServiceProviderCatalog>
  </oslc_disc:entry>

  <oslc_disc:entry>
     <oslc_disc:ServiceProvider>
        <dc:title>Car Catalog Schema Services</dc:title>
        <oslc_disc:details rdf:resource="http://www.example.com/jazz/is8fgJH098FSJ" />
        <oslc_disc:services rdf:resource="http://www.example.com/jazz/requirements/contexts/h88SFDhj8hkd9/services.xml" />
     </oslc_disc:ServiceProvider>
  </oslc_disc:entry>

  <oslc_disc:entry>
     <oslc_disc:ServiceProvider>
        <dc:title>Generic Car Requirements</dc:title>
        <oslc_disc:details rdf:resource="http://www.example.com/jazz/98gJH77897sdfJ" />
        <oslc_disc:services rdf:resource="http://www.example.com/jazz/requirements/contexts/9JHiyh756hJHtyu78jh/services.xml" />
     </oslc_disc:ServiceProvider>
  </oslc_disc:entry>

</oslc_disc:ServiceProviderCatalog>


The human user would use the textual description to distinguish between a Service Provider that relates to a concrete requirement document, and a Service Provider that provides an abbreviated view of the schema of the entire subtree.

Using this mechanism, retrieving the schema from a generic context would return a schema that may not contain the pollenfilter property (since I assume that pollen filters are a feature associated with Family Cars only).

-- SebRose - 14 Dec 2009

Topic attachments
I Attachment Action Size Date Who Comment
bmpbmp Cars_Hierarchy.bmp manage 71.3 K 14 Dec 2009 - 10:13 SebRose Example Doors Repository
Topic revision: r3 - 29 Dec 2009 - 15:08:37 - SebRose
Main.ReportingServiceDiscoveryRmExample moved from Main.ResportingServiceDiscoveryRmExample on 14 Dec 2009 - 10:53 by SebRose - put it back
 
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