Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 -...

32
1 SINTEF Architectural Patterns in Open GIS Web Services Problem: Interoperability of GIS – through standards Open GIS: OGC and ISO/TC211 standards Architectural patterns: ISO/OGC Service Architecture OGC Web Services architecture Pattern – Service binding template OGC, ISO/TC211 and OMG MDA Conclusion Rob Atkinson, Social Change Online, Australia ([email protected] ) www. isotc211.org www. isotc211.org www. www. opengis opengis .org .org Arne J. Berre, SINTEF, Norway ([email protected])

Transcript of Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 -...

Page 1: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

1Arne J. Berre 1SINTEF

Architectural Patterns in Open GIS Web ServicesArchitectural Patterns in Open GIS Web Services

• Problem: Interoperability of GIS – through standards• Open GIS: OGC and ISO/TC211 standards• Architectural patterns: ISO/OGC Service Architecture• OGC Web Services architecture• Pattern – Service binding template• OGC, ISO/TC211 and OMG MDA• Conclusion

Rob Atkinson, Social Change Online, Australia ([email protected] )

www. isotc211.orgwww. isotc211.orgwww. www. opengisopengis.org.org

Arne J. Berre, SINTEF, Norway ([email protected])

Page 2: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

2Arne J. Berre 2SINTEF

Architectural Patterns in Open GIS Web ServicesArchitectural Patterns in Open GIS Web Services

OGC (Open Geodata Consortium) and ISO/TC211 is involved in the creation of standards and recommendations for geospatial information and services.

OGC Web Services provide a vendor-neutral, interoperable framework for web-based discovery, access, integration, analysis, exploitation and visualization of multiple online geodata sources, sensor-derived information, and geoprocessing capabilities. The current UDDI and ebXML registry models provide a basis for business and service descriptions in the OWS registry model. The strong information- and content-oriented focus of GIS web services has led to a further development of architectural patterns for flexible information search and retrieval for general content-oriented web services, based on a dynamic binding template. The relationship to the OMG MDA approach and the ISO 19119 service specification standard of ISO/TC211 will be discussed.

Page 3: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

3Arne J. Berre 3SINTEF

Problem Goal: Transparent Access to Heterogeneous Geodata and Geoprocessing Services

Non-traditional

DBMS

File FormatFile FormatFile Format

File Format

Real-TimeData Feed

File FormatTraditional

DBMS

File Format File Format

NETWORKS AND CLIENT/SERVER TECHNOLOGY

File FormatFileFormat

File Format

File Format

Page 4: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

4Arne J. Berre 4SINTEF

ISO/TC211 & OGC “Roadmap”ISO/TC211 & OGC “Roadmap”

19921993199419951996

1997

1998

1999

2000

2001

2002CEN/TC287

(Europe)ISO/TC211established ISO 19103

ISO 19118

ISO 19109ISO 19119 IP2000WMT 2Kickoff

GFSKickoff

USL Demo

UMLAdopted

SimpleFeaturesAdopted

GridCoveragesAdopted

CatalogServicesAdopted

Web MapServer

Adopted

CoordinateTransformation

Adopted

GML Recommendation

Paper Adopted

GFSGazetteerWFS, WCSGeoLink, LOFGeoparse, GeocodeGML XML SchemaThesaurusType Dictionary

WMS-2Legend,Style Sheet &S.S.CatalogSLD, Symbol LibraryGML Extensions:IML, Coverage,

Basic Service ModelFilter

ISO/TC211 Stds

OGC Specifications

Page 5: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

5Arne J. Berre 5SINTEF

2001/2002 Initiatives2001/2002 Initiatives

2001

2002

IP2001Decision Support4DInfo Community EnableLocation ServicesMilitary Pilot ProjectWMT-3 — GFS-2

GFSGazetteerWFS, WCSGeoLink, LOFGeoparse, GeocodeGML XML SchemaThesaurusType Dictionary

WMS-2Legend,Style Sheet &S.S.CatalogSLD, Symbol LibraryGML Extensions:IML, Coverage,

Basic Service ModelFilter

2003

2001 BusinessIETF Response LIF AgendaThe Open Group W3C CoordinationMAGIC Agenda SEDRIS AgendaE-Government OpenGIS.netDigital Earth European Programs

Page 6: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

6Arne J. Berre 6SINTEF

!! ISO 19101 ISO 19101 -- Reference modelReference model!! ISO 19102 ISO 19102 -- OverviewOverview!! ISO 19103 ISO 19103 -- Conceptual schema languageConceptual schema language!! ISO 19104 ISO 19104 -- TerminologyTerminology!! ISO 19105 ISO 19105 -- Conformance and testingConformance and testing!! ISO 19106 ISO 19106 -- ProfilesProfiles!! ISO 19107 ISO 19107 -- Spatial schemaSpatial schema!! ISO 19108 ISO 19108 -- Temporal schemaTemporal schema!! ISO 19109 ISO 19109 -- Rules for application schemaRules for application schema!! ISO 19110 ISO 19110 -- Feature cataloguing methodologyFeature cataloguing methodology!! ISO 19111 ISO 19111 -- Spatial referencing by coordinatesSpatial referencing by coordinates!! ISO 19112 ISO 19112 -- Spatial referencing by geographic Spatial referencing by geographic

identifiersidentifiers!! ISO 19113 ISO 19113 -- Quality principlesQuality principles!! ISO 19114 ISO 19114 -- Quality evaluation proceduresQuality evaluation procedures!! ISO 19115 ISO 19115 -- MetadataMetadata!! ISO 19116 ISO 19116 -- Positioning servicesPositioning services!! ISO 19117 ISO 19117 -- PortrayalPortrayal

!! ISO 19118 ISO 19118 -- EncodingEncoding!! ISO 19119 ISO 19119 -- ServicesServices!! ISO/TR 19120 ISO/TR 19120 -- Functional standardsFunctional standards + new rev+ new rev!! ISO/TR 19121 Imagery and ISO/TR 19121 Imagery and griddedgridded datadata!! ISO/TR 19122 ISO/TR 19122 -- Qualifications and certification Qualifications and certification

of personnelof personnel!! ISO 19123 ISO 19123 -- Schema for coverage geometry and Schema for coverage geometry and

functionsfunctions!! ISO 19124 ISO 19124 -- Imagery and Imagery and griddedgridded data data

componentscomponents!! ISO 19125 ISO 19125 -- Simple feature access Simple feature access –– Part 1Part 1--33!! ISO 19126 ISO 19126 -- Profile Profile -- FACC Data DictionaryFACC Data Dictionary!! ISO 19127 ISO 19127 -- Geodetic codes and parametersGeodetic codes and parameters!! ISO 19128 ISO 19128 -- Web Map Server InterfaceWeb Map Server Interface!! ISO 19129 ISO 19129 -- Imagery,Imagery, griddedgridded and coverage dataand coverage data

frameworkframework!! ISO 19130 ISO 19130 -- Sensor and data model for imagerySensor and data model for imagery

andand griddedgridded datadata!! ISO 19131 ISO 19131 -- Data product specificationData product specification!! ISO 19132 ISO 19132 -- Location based services possibleLocation based services possible

standardsstandards!! ISO 19133 ISO 19133 -- Location based services trackingLocation based services tracking

and navigationand navigation!! ISO 19134 ISO 19134 -- MultimodalMultimodal location based serviceslocation based services

for routing and navigationfor routing and navigation!! ISO 19135 ISO 19135 -- Procedures for registration ofProcedures for registration of

geographic information itemsgeographic information items

ISO/TC211Overview

Page 7: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

7Arne J. Berre 7SINTEF

ISO/TC211 and OpenGISISO/TC211 and OpenGIS

Imp. SpecCOM/MIDL

Imp. SpecCORBA/IIDL

Imp. SpecWeb

Services

Imp. SpecSDAI/EXPRESS

Imp. SpecODMG/ODL

Abstract Service Spec(UML w/precision)

(Common Imp.spec)

Direct C++/JavaPortability/Interop Interface

Spatialsub schema

OGC

ISO

Metadata

CoordRef. Sys

Qualitysub schema

Spatialsub schema

Featurerel.ship

2- Conformance

4) Portability/Interoperability interface possible

3. Reverse mapping for Portability and Interoperability

1. Conformance

GeneralFeatureModel

Rules forApplication

Schema

Page 8: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

8Arne J. Berre 8SINTEF

KeyData

Service

DataService

ClientService

ApplicationService

Relationships

Catalog &RegistryService

Search

Populate

Store &Retrieve

Construct

Invoke

Create

Names

(Geospatial) Data

Contain Point to

MetadataDescribe

SearchPopulate

HoldIdentify

Container Hold

Update

WorkflowService

Data Transport

Invoke

Pattern forService Architecture

Pattern forService Architecture

Page 9: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

9Arne J. Berre 9SINTEF

OpenGIS Web Services ArchitectureOpenGIS Web Services Architecture

Page 10: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

10Arne J. Berre 10SINTEF

Page 11: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

11Arne J. Berre 11SINTEF

Service Integration &

Workflow

Service Discovery

Service Description

Service

Data Format, Schema and Semantics

Data Representation

& Encoding

Communication Protocols

TCP/IP, HTTP, SSL, SMTP, FTP, IIOP, etc.

ASCII, ASN.1/DER, XML, etc.

HTML, XML/S, RDF, XMI, OGC-GML, OGC-WKT/WKB, etc.

OGC SF, Coverage, Coordinate Transform, WMS, etc. HTTP, SOAP, COM, CORBA, SQL, J2EE, etc.

WSDL,ISO-19119, etc.

UDDI, OGC-Catalog, etc.

WSFL, XLANG, ISO19119

Interoperability Layers Interoperability Standards

Connectivity

Interoperability

DCP

Page 12: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

12Arne J. Berre 12SINTEF

Binding Patterns for OpenGIS Web Services A Special Case?

Binding Patterns for OpenGIS Web Services A Special Case?

• Much content has a geographic facet.• Most structured data is geographically organized.• Geographic data can be terabytes and time dependent

– exploitation is often an matter of choosing the right bit.

• A natural fit for demand access services.• Content centric….

• BindingTemplate: A generalised content-aware recipe for invoking services

Page 13: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

13Arne J. Berre 13SINTEF

Content CentricityContent Centricity

• Semantics of service primarily a function of the content – not the access protocol

• Well known interfaces to exploit application-centric content

• Unlike “stock ticker” – application-centric interfaces to well known content

• OpenGIS defines standards for interoperability

Page 14: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

14Arne J. Berre 14SINTEF

Interoperability…Interoperability…

Content

Data Structure

Protocol

ContextCustodianship

Authority

CGISOAP

GMLXML-schema

SemanticsVocabularies

Page 15: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

15Arne J. Berre 15SINTEF

MotivationMotivation

• Need a consistent way to describe geographical content for service instances.

• Use Cases need to support persistent early binding –“e.g. show me what the traffic is like today, (using service X I discovered yesterday).”

• Need a consistent way to “chain” services.• WSDL “binding” section inadequate – “types” only

provide structural information.

Page 16: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

16Arne J. Berre 16SINTEF

SynopsisSynopsis

• Operations invoked by parameterized messages• Valid parameter values are constrained by service

instances• Service invocation requires all mandatory “unbound”

parameters to be bound• Service chaining requires bindings to be described

throughout the chain

Page 17: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

17Arne J. Berre 17SINTEF

Binding TemplatesBinding Templates

• A recipe for invoking services• Generalisation of a common pattern appearing in

OpenGIS Use Cases• Reference objects from registries that define semantics

of service• binding templates may reference each other, creating

the service chain to be invoked and allowing mix of early and late binding

Page 18: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

18Arne J. Berre 18SINTEF

MechanismsMechanisms

• Syntax for persisting an invocation recipe• Derived from Registry Entry (ebRIM model)• Can be passed as a complex parameter to a service

further down the chain• (e.g. tell a Web Map Server how to query a Web Feature

Server and how to portray the results)

Page 19: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

19Arne J. Berre 19SINTEF

Invoking a serviceInvoking a service

BindingTemplate

Service

<<unboundParam>>BBOX

type=gml:Box

<<boundParam>>request=GetMap

<<unboundParam>>Layer

type=keyedReferencevalids

Layer=valid_1BBOX=0,0,2,2

Client supplies values for unbound parameters

Layer=valid_1BBOX=0,0,2,2

request=GetMap Binding template supplies values for bound parameters

Page 20: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

20Arne J. Berre 20SINTEF

Early vs. Late BindingEarly vs. Late Binding

Most invocations can be either early of late bound to particular messages

Early binding– E.g. get the most recent weather report

Late binding- zoom to the area of flooding

Page 21: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

21Arne J. Berre 21SINTEF

Web Map Server ExampleWeb Map Server Example

WMSBinding

Template

WFSBinding Template

Early Late

Client

Service 1

Service 2

Fully resolved

implicit

Client

Service 1

Service 2

SLD=WFS Binding Template

Page 22: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

22Arne J. Berre 22SINTEF

Instances of BindingTemplatesInstances of BindingTemplates

ServiceOffering

-name : ExternalIdentifier-filter-DataInstanceID : ExternalIdentifier-DataProductDescriptionID : ExternalIdentifier-OperationID : ExternalIdentifier-RepresentationResourceID : ExternalIdentifier-SchemaName : ExternalIdentifier

BindingTemplate

StyledLayerDescriptor

WMSLayer

-contains1

-inheritsPropertiesOf

*

WFSQueryTemplate

Page 23: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

23Arne J. Berre 23SINTEF

Parameter ModelParameter Model

-name-datatype-optionality

Parameter

unboundParameter boundParameter

-End17*-End18*

value «bind»

-name : ExternalIdentifier-filter-DataInstanceID : ExternalIdentifier-DataProductDescriptionID : ExternalIdentifier-OperationID : ExternalIdentifier-RepresentationResourceID : ExternalIdentifier-SchemaName : ExternalIdentifier

BindingTemplate

1 *

Page 24: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

24Arne J. Berre 24SINTEF

BindingTemplateBindingTemplate

+idRegistryEntry

-accessPoint : ExternalIdentifierInstance

-name-system

ExternalIdentifier

-End19

*

-End20

*

MetadataElement1

-attributes*

-name : ExternalIdentifier-filter-DataInstanceID : ExternalIdentifier-DataProductDescriptionID : ExternalIdentifier-OperationID : ExternalIdentifier-RepresentationResourceID : ExternalIdentifier-SchemaName : ExternalIdentifier

BindingTemplate

Note:

• Can be retrieved from a registry

•Has name, attributes to support persistence

•Contents (attributes TBD by further modelling)

• TBD - modelling relationships to other BindingTemplates

Page 25: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

25Arne J. Berre 25SINTEF

BenefitsBenefits

• Common pattern across all interface specifications• Common rules for resolving bindings and invoking

services established• Ability to deploy content access services in a

meaningful way (well known types and content domain mechanisms available)

• Ability to store service invocation patterns in registries

Page 26: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

26Arne J. Berre 26SINTEF

Why not just WSDL?Why not just WSDL?

• WSDL provides some of what we need• Granularity does not match early/late binding

behaviour• Data Types not expressive enough• Enumerations not powerful enough for real world

content (29000 species of flora in NSW Australia!)• OpenGIS interface specifications mainly provide

semantic definitions of parameters – these are not per-service!

Page 27: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

27Arne J. Berre 27SINTEF

WSDL ++ WSDL ++

Signature{types,

messages,portType,bindings}

Binding{binding,service}

<<BindingTemplate>>

Service Offer(“Capabilities”)

metadata

AccessPoint

<<BindingTemplate>>

Content(e.g. Layers)

WSDL

Page 28: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

28Arne J. Berre 28SINTEF

GeNorway project -XSLT-based code generation from UML to GML

for data exchange

GeNorway project -XSLT-based code generation from UML to GML

for data exchange

ApplicationSchema(UML)

ISO 19109

XMI doc ofUML Model

1 2 3 4 5simpleXMI docof UML Model

6

7

Process

Data transfer

Document

XSLT-file1 XSLT-file2UML Tool

XML Schemaaccording to

GML 2.0 Java ebXML CORBA

The conceptual UML model maybe mapped to many technologies

Page 29: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

29Arne J. Berre 29SINTEF

\GML2.0 spec. city application schema example\GML2.0 spec. city application schema example<complexType name="RiverType">

<complexContent><extension base="gml:AbstractFeatureType">

<sequence><element ref="gml:centerLineOf"/>

</sequence></extension>

</complexContent></complexType><complexType name="RoadType">

<complexContent><extension base="gml:AbstractFeatureType">

<sequence><element name="linearGeometry" type="gml:LineStringPropertyType"/><element name="classification" type="string"/><element name="number" type="string"/>

</sequence></extension>

</complexContent> </complexType>

Page 30: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

30Arne J. Berre 30SINTEF

simpleXMI - reducing the complexity of XMIsimpleXMI - reducing the complexity of XMI

<class name="Road" superClass="CityFeature" abstract="false"><attribute name="classification" type="CharacterString"/><attribute name="number" type="CharacterString"/><attribute name="linearGeometry" type="GM_Curve"/>

</class><class name="River" superClass="CityFeature" abstract="false">

<attribute name="centerLineOf" type="GM_Curve"/></class><class name="CityModel" abstract="false">

<attribute name="dateCreated" type="Date"/><relationship name="cityMember" otherClass="CityFeature"

cardinality="0..*" collectionType="set"aggregationType="composite"/>

</class>

Page 31: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

31Arne J. Berre 31SINTEF

Example and ISO 19118 encodingExample and ISO 19118 encoding

<complexType name="Road"><sequence>

<element name="classification"type="CharacterString"/>

<element name="number" type="CharacterString"/><element name="linearGeometry"

type="GM_Curve"/></sequence><attributeGroup ref="IM_ObjectIdentification"/>

</complexType>

Page 32: Architectural Patterns in Open GIS Web ServicesArchitectural … · 2013-01-30 · ISO 19114 - Quality evaluation procedures! ISO 19115 - Metadata! ISO 19116 - Positioning services!

32Arne J. Berre 32SINTEF

ConclusionConclusion

• The OGC (and ISO 19119) Service architecture patterns and the service binding template could be reused by other ”information-intensive” domains

• Well defined rules and tools for creating platform-independent service and information models

• Well defined rules and tools for mappings to platform-specific models for the most important platforms: Web services/XML, CORBA, J2EE/EJB, SQL, ...

• A version of XMI (2.0?) that can produce human readable (HUTN) XML – similar to the GML and ISO 19118 schema specifications currently being made

• A tool-independent model diagram interchange format that can be used to support interoperability between multiple UML tools (thediagram interchange RFP!)

To support ISO/TC211 and OGC and other similar domain standardisationOrganisations, OMG should as soon as possible produce the following: