Prof. Dr. Thomas Schmidt HAW Hamburg
FB E/I, Room 780, Tel.: 42875 - 8157 Email:
schmidt@informatik.haw-hamburg.de
Internet Technologies II
LAB: XML, Web Services, Semantics
Goal: Implement a semantic overlay network of Web Services.
1st Step (XML Processing):
Please produce a valid XML sample document from this schema. Write a simple Java program, which performs the validation.
Please proceed in writing an XSL stylesheet to transform this XML document into HTML output. Extend your Java program to perform the XSL transformation.
Look at the JBOSS installation and get acquainted with the application server.
Optional homework extension: Use deploy your Java transform program as a Web Service (in: XML+XSL, out: HTML), write a Client Web appli- cation to use this service and display results.
2nd Step (Simplified Learning Object Service)
An IEEE LOM Learning Object is an XML structure, which includes Meta data, content and relations (between LOs). Such standardized Learning Objects are typically stored in online repositories, ready for download or exchange. The aim of the task will lie in the development of a distributed retrieval Web services in interconnected repositories.
Please implement at first a Webservice Client, which can search and download LOs from the online HylOs repository
HOST = "http://hylos.cpt.haw-hamburg.de:9080"
SERVICE_PATH = " /jboss-net/services/HylosObjectService"
and their relations as Beans.
The repository offers a Webservice complying the methods
• searchObjects, returning an array of internal paths for a search filter, and
• fetchObject, returning a Learning Object for a path:
<wsdl:message name="searchObjectsRequest">
<wsdl:part name="filter" type="xsd:string"/>
</wsdl:message>
<wsdl:message name="searchObjectsResponse">
<wsdl:part name="searchObjectsReturn" type="soapenc:Array"/>
</wsdl:message>
<wsdl:message name="fetchObjectResponse">
<wsdl:part name="fetchObjectReturn" type="tns1:HylosObject"/>
</wsdl:message>.
The full WSDL service description can be retrieved from http://hylos.cpt.haw-hamburg.de:9080/jboss-net/servlet/AxisServlet.
The object codes for he HylosObject (Interface) and the Relations (Interface), which are derived from RepositoryObject, you find here.
The search string syntax of the searchObjects method follows and LDAP approach (see RFC 2254):
filter = "(" filtercomp ")"
filtercomp = and / or / not / item and = "&" filterlist
or = "|" filterlist not = "!" filter filterlist = 1*filter
item = simple / present / substring / extensible simple = attr filtertype value
filtertype = equal / approx / greater / less equal = "="
approx = "~="
greater = ">="
less = "<="
present = attr "=*"
substring = attr "=" [initial] any [final]
initial = value
any = "*" *(value "*") final = value
attr = AttributeDescription value = AttributeValue
Example:
(cn=Babs Jensen) (!(cn=Tim Howes))
(&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*))) (o=univ*of*mich*)
3rd Step (Simplified Learning Object Repository):
Compatible with the Web Service Interface of Step 2 please implement and deploy a Hypermedia Learning Object Repository, which is capable of holding a list of Learning Objects. This repository service should offer the interfaces (see above)
fetchObject (as above)
searchObject (as above) and
putObject (HylosObject o)
and a persistence layer within the file system (use XML files within a given directory and the HylosObject identifier as filename).
To implement the method searchObjects(string filter) you may use this search packet
Hint: First create an XML search node tree by using the method filter2xml(filter) from class MirSearch.
Then create a SearchOperator from the
SearchOperatorFactory), which provides a setData method to connect your list of object data.
Provide some exemplary data within your repository, which are classified by keywords obtained from the ACM Computing Classification System .
4th Step (Semantic Query):
Extend your repository client to perform semantic retrieval in the follow- ing sense: Any search term (taken from the ACM Computing Classifica- tion vocabulary) undergoes semantic inferences to identify equivalent or related terms, which are then used to query in the repository. Use the SKOS representation of the ACM Ontology as model input for the Jena API.
(Hint: Load the SKOS schema as model schema and the ACM representa- tion as model data with the ModelLoader.loadModel(). Then obtain an OWL reasoner, ReasonerRegistry.getOWLReasoner(), as SKOS is built upon OWL. Bind the schema, reasoner.bindSchema() and then create your inference model, ModelFactory.createInfModel().)