Two Down

Yesterday afternoon (7/13/11; for some reason this didn’t post when I hit the publish button) I delivered my presentation at the 3rd Annual DoD SOA & Semantic Technology Symposium. I’m certainly in no position to objectively judge, but it seemed to me that it went very well. I had several questions that seemed like they were genuinely curious about the subject.

More importantly, from a purely mercenary point of view, is that this counted as my second publication on the road to completing my dissertation. Two down, and two or three more to go!

Now I need to get to work on the rest of my research. The first thing I need to focus on is probably some measure of Quality of Service. It certainly won’t be fully fleshed out, but I at least need a placeholder. But for now, a good night’s sleep would do me a world of good.

One Step Back, One Step Forward

The paper I had been working on went a little off the rails. I got into a groove and was cooking with gas, but in the process of writing I went off on a tangent to my original topic and the result just wasn’t right. I’m not happy about it, but the process did help me think through some of the details of the work I need to do, so I think I’ll be able to reuse some of the content or concepts at a later time. And the conference I was targeting was a bit of a long shot anyway, so I guess it’s just as well.

But I got some excellent news this week. My boss asked me to submit an abstract when we got a call for submissions from a SOA symposium sponsored by The Association for Enterprise Information (AFEI). I was pleasantly surprised that my submission was accepted, and I’ll be speaking at the 3rd Annual DoD SOA & Semantic Technology Symposium.

Now comes the hard part — get my research into good enough shape to present to that audience. But I’m glad to do it; nothing focuses the mind like a deadline.

Another Paper

I’m working on a paper for the 10th International Conference on Modeling and Applied Simulation. the overall topic of the conference is a little outside my area of research, but one of their topic areas is business process re-engineering. They also have some other related areas that could be a decent fit. And even if it’s not a good fit and gets rejected, I’ve at least got a draft of a paper that may work for another conference.

So I finally finished it and sent the complete first draft to my advisor for review. Hopefully he’ll get back to me in a day or two and I can make any needed changes. At any rate, it’s done and I can relax for a day or two. Well, a day, anyway. I’m planning on taking almost all of Tuesday off to devote tow working on my research. If I can do that just one day each month I should be able to make a lot more progress on my work than I have been up until now.

I can’t take credit for the one-day-per month idea; I have a friend to thank for that. For some reason, ideas like that never occur to me.

WSDL and Java and NOAA, Oh My!

I’ve spent most of this weekend trying to build a simple JADE agent that will invoke a web service and return the results. I finally succeeded this morning, after a fashion. And it was not pretty.

I began trying a simple stock quote service, as I thought this would be useful and easy to incorporate into several demonstration workflows. I was able to find some public services available, so I set to work. I decided to use WSDL2Java utility to generate an interface I could easily call. The utility worked simply enough, although the code it generates is less than intuitive. Searching through several forums and tutorials weren’t much help; its interface is apparently sufficiently quirky that Axis2 didn’t much like it. Most other stock quote services are subscription-only, and I’m not going to be using this enough to make that worth my while.

So I decided to switch to a weather service; that’s always a good standby for a workflow. and the National Oceanic and Atmospheric Administration (NOAA) has a publicly available weather service I for a class project several years ago. It’s the National Digital Forecast Database (NDFD), and it makes all manner of weather information available.

After 8 or 10 different attempts to generate code from the WSDL, using both the Axis2 utility, the MyEclipse utility of the same name, and a couple of others, I found myself in the same state as I was with the stock quote service. The one major difference is that there is some chatter on various web sites and forums discussing the NDFD service, and apparently it’s not very well-behaved when code is generated from it. The general opinion of the user community seems to be that it’s a poorly designed service; I’m not enough of a programmer to offer a meaningful opinion.

I did finally get the NDFD service to work. It’s not pretty, but it works. I’m manually generating the SOAP request, building the message, and submitting it to the service. And as painful as that sounds, it’s no worse than dealing with the mess that is Axis2. I’m sure the authors mean well, but they seem focused on service providers and not consumers. Surely there must be a more straightforward way to write code for invoking a web service. It’s no wonder web service adoption has been much less rapid than originally anticipated.

Describing Business Services

I am working on the development of a descriptive framework that is usable for all services, including electronic and business services. Electronic services can be described (however imperfectly) using the Web Services Description Language (WSDL). while not perfect, WSDL does have the advantage of being widely adopted for SOAP-based web services. When carefully assembled, web services can be chained together into an executable workflow to perform some useful task.

There no analogous way to assemble a workflow from business services.  While a business process can be described using BPMN, there is no way to automatically screen business service providers to determine whether they are suitable for performing a particular task within a given workflow. What is lacking is a WSDL for business services.

We need a machine-processable description of the services offered by a business. This description should include the tasks performed by the service (i.g., its effects), the inputs required to engage the service, the outputs that will be produced by the service, and any preconditions that must be satisfied before engaging the service. To the maximum extent practical, this description should be compatible with existing WSDLs — there is no logical reason electronic services cannot be combined with other services to form a complete workflow, so the descriptions of both services types should be compatible.

I’ve spent some time lately working on just such a service description, and over the weekend I turned my notes into a detailed class model that I exported into an XML schema. Next i need to do a detailed comparison with the WSDL schema to ensure I have accounted for all elements of the WSDL. After making any necessary refinements I will try some practical applications to see how it handles.

As best I can determine, nothing of this type has been developed to date. I had planned to call it a “Business Service Definition Language,” but I discovered that name was already taken by several researchers from the University of Wollongong who have published an interesting paper on the subject. Luckily for me, their research is in a different direction from mine even though they arrived at the same terminology. Universal Service Description Language is already taken. I considered General or Generic Service Description Language, but those seem too… generic.

So for now, it’s back to thinking of an appropriate name for my creation.

Of Services Science

I met with my advisor last Thursday to discuss refinements to my research topic. During our previous meeting, he had tossed out the topic of “service science” along with a couple of papers from an issue of the IBM Systems Journal devoted to the topic. That threw a bit of a monkey wrench into my plan, as this was all new to me; in all of my research on web service composition I had not heard of this.

The good news is that after reading some of the articles and doing additional research into the topic, “service science” as used by the authors of the articles in the IBM Systems Journal is different from what I have been looking into. Those authors, along with other practitioners such as Services Science Global, Service Science, and the Service Research and Innovation Institute (among others) use service science in a way that refers to improving how service-based businesses improve their offerings. The best analogy that I can draw is to the industrial process improvements pioneered by W. Edwards Deming. Service science, in this context, refers to the study of how businesses measure the effectiveness and efficiency of services they provide to their customers. At least as of now, this does not seem to encompass the study of how to define their service offerings in a way that facilitates the composition of sservices from different providers.

All of which leads me to the output of this latest meeting, which was very productive. My advisor generally liked what I had put together as a way forward; now I need to refine it a little more and get buy-in from my committee. He also mentioned that we need to look for some more opportunities to publish on this topic. The good news is that there is very little in the services science arena that deals with my topic, so this should be a rich field to mine.

Slowly But Surely

Skype is a wonderful tool. I used to use it to keep in touch with a buddy who was stationed in Japan, and it was amazing. On Thursday I used it to meet with my advisor to discuss refinements to my research. It worked out very well, as my schedule was being whipsawed by a proposal I’m working on at the office. And sitting at my kitchen table certainly beat having to drive home from Fairfax during rush hour.

An even better part of the meeting is that my advisor seemed pleased with my ideas on moving forward. We refined them a little, and now I have to get them arranged into a logical story that we can present to my committee. I have to get it done this weekend to we can meet again next week.

Thankfully, the proposal is almost over, so I might get a chance to finish up this research refinement in the coming week.

Narrowing… I Think

Per the instructions from my committee at my proposal defense, I have been working to narrow and focus my topic. While I initially expected that to be relatively easy, I haven’t made a whole lot of progress to date. Working 12+ hour days on a proposal at work hasn’t made it any easier.

I met with my advisor just over a week ago, and it seems my exercise in narrowing has morphed into something of an expansion. Clearly, the least-researched area within my proposed topic is the generation and assignment of semantic metadata to services interfaces such as WSDLs. Almost all the work on semantic description has assumed manual metadata generation.

On the direction of my advisor, I am taking this small area (generating and assigning semantic metadata to WSDLs with sufficient detail to compose web services into executable processes) and generalizing it to address any type of service. By “any type of service” I mean quite literallyany type of service: web services, doctors’ services, shipping services, anything at all.

So I’ve been working on capturing 10 or so questions that cover that area. I’ve almost got enough to send to my advisor. Hopefully I’ll be done and have a draft to him tomorrow.

Another Day, Another OWL API

I got sidetracked last night and didn’t post this as I finished the work. I was having trouble creating individuals within the Protege 3.4.4 API, so I did a little research to see if I could find a solution. In the process, I came across the Manchester OWL API, which it just so happens is the API that Protege 4.x is based on.

The Manchester API is somewhat more verbose, but that’s due it it taking more of what I would call a “purist” approach to building the ontology. Instead of inserting a class, you make an  assertion about the class and add the assertion to the ontology. It’s a little confusing at first, but I got the hang of it pretty quickly.

The end result of all this is that I now have an ontology that is populated with individuals that are part of the appropriate parameter subclass. And just in time for a meeting with my adviser this afternoon.

Building and Populating Ontologies

I took a couple of days off to drop my older daughter off at college. I had originally planned to be out of college before she got into college, but that didn’t happen. Now my goal is to graduate before she does. I hate losing the research time, but a couple of forced days off is a good thing. But as Plato said in Phaedrus, “The mind ought sometimes to be amused, that it may the better return to thought, and to itself.” I take comfort in that, assuming that a break might help to focus my thoughts better.

So I spent some time today trying to populate my ontology with individuals, and it didn’t work quite as expected. I guess the Protege API isn’t as straightforward as I had hoped it would be. I could populate the ontology with individuals, but they wound up in the top level of the ontology and not in the parameter classes as I had expected. I guess I just need to spend some time playing with it to really understand how it works.