Copyright © tutorialspoint.com

# UDDI Data Model

UDDI includes an XML Schema that describes four five data structures:

- businessEntity

- businessService

- bindingTemplate

- tModel

- publisherAssertion

## businessEntity data structure:

The business entity structure represents the provider of web services. Within the UDDI registry, this structure contains information about the company itself, including contact information, industry categories, business identifiers, and a list of services provided.

Here is an example of a fictitious business's UDDI registry entry:

    <businessEntity businessKey="uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40"
            operator="http://www.ibm.com"
            authorizedName="John Doe">
        <name>Acme Company</name>
        <description>
            We create cool Web services
        </description>
        <contacts>
            <contact useType="general info">
                <description>General Information</description>
                <personName>John Doe</personName>
                <phone>(123) 123-1234</phone>
                <email>jdoe@acme.com</email>
            </contact>
        </contacts>
      <businessServices>
      ...
      </businessServices>
      <identifierBag>
         <keyedReference
            tModelKey="UUID:8609C81E-EE1F-4D5A-B202-3EB13AD01823"
            name="D-U-N-S"
            value="123456789" />
      </identifierBag>
      <categoryBag>
         <keyedReference
            tModelKey="UUID:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2"
            name="NAICS"
            value="111336" />
       </categoryBag>
    </businessEntity>

## businessService data structure:

The business service structure represents an individual web service provided by the business entity. Its description includes information on how to bind to the web service, what type of web service it is, and what taxonomical categories it belongs to:

Here is an example of a business service structure for the Hello World web service

    <businessService serviceKey="uuid:D6F1B765-BDB3-4837-828D-8284301E5A2A"
            businessKey="uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40">
         <name>Hello World Web Service</name>
         <description>A friendly Web service</description>
         <bindingTemplates>
         ...
         </bindingTemplates>
         <categoryBag />
    </businessService

Notice the use of the Universally Unique Identifiers (UUIDs) in the businessKey and serviceKey attributes. Every business entity and business service is uniquely identified in all UDDI registries through the UUID assigned by the registry when the information is first entered.

## bindingTemplate data structure:

Binding templates are the technical descriptions of the web services represented by the business service structure. A single business service may have multiple binding templates. The binding template represents the actual implementation of the web service.

Here is an example of a binding template for Hello World

    <bindingTemplate serviceKey="uuid:D6F1B765-BDB3-4837-828D-8284301E5A2A"
             bindingKey="uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40">
         <description>Hello World SOAP Binding</description>
         <accessPoint URLType="http">
             http://localhost:8080
         </accessPoint>
         <tModelInstanceDetails>
             <tModelInstanceInfo
                   tModelKey="uuid:EB1B645F-CF2F-491f-811A-4868705F5904">
             <instanceDetails>
                  <overviewDoc>
                     <description>
                         references the description of the
                         WSDL service definition
                     </description>
                     <overviewURL>
                          http://localhost/helloworld.wsdl
                     </overviewURL>
                  </overviewDoc>
             </instanceDetails>
             </tModelInstanceInfo>
          </tModelInstanceDetails>
    </bindingTemplate>

Because a business service may have multiple binding templates, the service may specify different implementations of the same service, each bound to a different set of protocols or a different network address.

## tModel data structure:

The tModel is the last core data type, but potentially the most difficult to grasp. tModel stands for technical model.

A tModel is a way of describing the various business, service, and template structures stored within the UDDI registry. Any abstract concept can be registered within UDDI as a tModel. For instance, if you define a new WSDL port type, you can define a tModel that represents that port type within UDDI. Then, you can specify that a given business service implements that port type by associating the tModel with one of that business service's binding templates.

Here is an example of A tModel representing the HelloWorldInterface port type

    <tModel tModelKey="uuid:xyz987..."
               operator="http://www.ibm.com"
               authorizedName="John Doe">
        <name>HelloWorldInterface Port Type</name>
        <description>
               An interface for a friendly Web service
        </description>
        <overviewDoc>
               <overviewURL>
                    http://localhost/helloworld.wsdl
               </overviewURL>
         </overviewDoc>
    </tModel>

## publisherAssertion data structure:

This is a relationship structure putting into association two or more businessEntity structures according to a specific type of relationship, such as subsidiary or department.

The publisherAssertion structure consists of the three elements fromKey (the first businessKey), toKey (the second businessKey) and keyedReference.

The keyedReference designates the asserted relationship type in terms of a keyName keyValue pair within a tModel, uniquely referenced by a tModelKey.

    <element name="publisherAssertion" type="uddi:publisherAssertion" />
    <complexType name="publisherAssertion">
      <sequence>
        <element ref="uddi:fromKey" />
        <element ref="uddi:toKey" />
        <element ref="uddi:keyedReference" />
      </sequence>
    </complexType>

Copyright © tutorialspoint.com