Hi all,

Well I implemented the RDQLTransformer and works properly. It would be very nice 
if you be so kind a test it. I used Jena 2.1, and cocoon 2.2.

It is possible to pass the knowledge base as src attribute to the Transformer, 
If you have a komplex model you kann give all needed files as sitemap 
Parameters, it does not matter how you name the parameters.

It is also possible to set these values as request parameters:

Triple statement: subject, object
and statement:  operand1, operand2

For example if you have this query:

        <rdql:query>

                <rdql:select>

                        <rdql:param>?name</rdql:param>
                        <rdql:param>?semester</rdql:param>

                </rdql:select>

                <rdql:where>

                        <rdql:triple subject="?x" 
predicate="http://a.com/ontology#hatStudent"; object="?y"/>

                        <rdql:triple subject="?y" 
predicate="http://a.com/ontology#name"; object="?name"/>

                        <!--rdql:triple subject="?y" 
predicate="http://a.com/ontology#hatMatrikelNummer"; object="?matrikelNr"/-->

            <rdql:triple subject="?y" predicate="http://a.com/ontology#semester"; 
object="?semester"/>

                </rdql:where>
                <rdql:and operand1="?semester" operand2="?z2" operator=">"/>
        </rdql:query>


you can set these values: ?x, ?y, ?z2, ?semester, ?name and ?matrikelNr like 
that:

http://yourURL??z2=8&?name=anyName

It will be very nice if you feedback and tell me your 

Attachment: RDQLTransformer.java
Description: RDQLTransformer.java

<?xml version="1.0" encoding="UTF-8"?>
<anything>
<rdql:RDQL xmlns:rdql ="http://maria_sharapova.html";>
        <rdql:query>

                <rdql:select>

                        <rdql:param>?name</rdql:param>
                        <rdql:param>?matrikelNr</rdql:param>

                </rdql:select>

                <rdql:where>

                        <rdql:triple subject="?x" 
predicate="http://a.com/ontology#hatStudent"; object="?y"/>

                        <rdql:triple subject="?y" 
predicate="http://a.com/ontology#name"; object="?name"/>

                        <rdql:triple subject="?y" 
predicate="http://a.com/ontology#hatMatrikelNummer"; object="?matrikelNr"/>

            <!--rdql:triple subject="?y" predicate="http://a.com/ontology#semester"; 
object="?semester"/-->

                </rdql:where>
                <rdql:and operand1="?x" operand2="http://a.com/ontology#TUM"; 
operator="eq"/>
        </rdql:query>
        <rdql:query>

                <rdql:select>

                        <rdql:param>?name</rdql:param>
                        <rdql:param>?semester</rdql:param>

                </rdql:select>

                <rdql:where>

                        <rdql:triple subject="?x" 
predicate="http://a.com/ontology#hatStudent"; object="?y"/>

                        <rdql:triple subject="?y" 
predicate="http://a.com/ontology#name"; object="?name"/>

                        <!--rdql:triple subject="?y" 
predicate="http://a.com/ontology#hatMatrikelNummer"; object="?matrikelNr"/-->

            <rdql:triple subject="?y" predicate="http://a.com/ontology#semester"; 
object="?semester"/>

                </rdql:where>
                <rdql:and operand1="?semester" operand2="?z2" operator=">"/>
        </rdql:query>

</rdql:RDQL>
</anything>
<!-- Dies ist eine Beispiel-XML-Datei, die eine Anfrage an unsere Ontologie stellt 
(TUM.owl) -->













<?xml version="1.0" encoding="ISO-8859-1" ?>
<rdf:RDF
    xmlns="http://a.com/ontology#";
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#";
    xmlns:owl="http://www.w3.org/2002/07/owl#";
  xml:base="http://a.com/ontology";>
  <owl:Ontology rdf:about=""/>

  <owl:Class rdf:ID="Professor">
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Angestellte"/>                 <!-- Professor ist eine 
Unterklasse von Angestellter -->
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="Studiengang"/>
  <owl:Class rdf:ID="Studienfach"/>
  <owl:Class rdf:ID="Stundent"/>
  <owl:Class rdf:ID="Universitaet"/>

  <owl:ObjectProperty rdf:ID="hatProfessor">            <!-- Properties einer Klasse 
(Attribute) -->
    <rdfs:range rdf:resource="#Professor"/>             <!-- range: Typ des Attributs 
(also hatProfessor ist vom Typ Professor) -->
    <rdfs:domain rdf:resource="#Universitaet"/>         <!-- domain: gibt an, zu 
welcher Klasse (Class) das Attribut geh�rt (hatProfessor geh�rt zu Universit�t) -->
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hatUniversitaet">
    <rdfs:range rdf:resource="#Universitaet"/>
    <owl:inverseOf>                                     <!-- inverseOf: gibt quasi die 
Umkehr-Beziehung an (Can hat Uni -> Uni hat Can) -->
      <owl:ObjectProperty rdf:about="#hatStudent"/>     <!-- Student hat Uni -> Uni 
hat ein Attribut hatStudent -->
    </owl:inverseOf>
    <rdfs:domain rdf:resource="#Stundent"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="studiert">
    <rdfs:range rdf:resource="#Studienfach"/>
    <rdfs:domain rdf:resource="#Stundent"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="semester">
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
    <rdfs:domain rdf:resource="#Stundent"/>
  </owl:ObjectProperty>


  <owl:ObjectProperty rdf:ID="hatStudent">
    <rdfs:range rdf:resource="#Stundent"/>
    <owl:inverseOf rdf:resource="#hatUniversitaet"/>
    <rdfs:domain rdf:resource="#Universitaet"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hatStudiengang">
    <rdfs:range rdf:resource="#Studiengang"/>
    <rdfs:domain rdf:resource="#Stundent"/>
  </owl:ObjectProperty>

  <owl:DatatypeProperty rdf:ID="hatMatrikelNummer">     <!-- Objekttyp vs.primitiver 
Datentyp "entspricht" ObjectProperty vs. DatatypeProperty -->
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>   <!-- 
XML-Schema URL, wo "int" definiert ist -->
    <rdfs:domain rdf:resource="#Stundent"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="art">
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    <rdfs:domain rdf:resource="#Studiengang"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="name">
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    <rdfs:domain>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">        <!-- definiere eine Collection 
von allen Klassen, die ein Attribut "name" haben -->
          <owl:Class rdf:about="#Professor"/>           <!-- alle diese Klassen haben 
Namen... -->
          <owl:Class rdf:about="#Universitaet"/>
          <owl:Class rdf:about="#Angestellte"/>
          <owl:Class rdf:about="#Stundent"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:domain>
  </owl:DatatypeProperty>

  <!-- Das sind jetzt die Instanzen der Klassen (k�nnten auch in einer eigenen Datei 
definiert sein, bei uns sind Ontologie und Instanzen
       in derselben Datei "Bachelor" ist der Bezeichner -->
  <Studiengang rdf:ID="Bachelor">
    <art rdf:datatype="http://www.w3.org/2001/XMLSchema#string";>Bachelor</art>  <!-- 
Bachelor muss hier stehen, ist der Name des Studiengangs -->
  </Studiengang>

  <Stundent rdf:ID="Can">
    <hatStudiengang rdf:resource="#Bachelor"/>  <!-- jede Instanz einer Klasse ist 
eine resource -->
    <studiert>
      <Studienfach rdf:ID="Informatik"/> <!-- Studienfach Informatik wird instanziiert 
-->
    </studiert>
    <hatMatrikelNummer rdf:datatype="http://www.w3.org/2001/XMLSchema#int";
    >2271547</hatMatrikelNummer>
    <name rdf:datatype="http://www.w3.org/2001/XMLSchema#string";
    >Can Oender</name>

    <hatUniversitaet>
      <Universitaet rdf:ID="TUM">       <!-- Can hat diese Universit�t (wird an dieser 
Stelle erzeugt, deshalb "TUM") -->

        <hatProfessor>
          <Professor rdf:ID="Radig">
            <name rdf:datatype="http://www.w3.org/2001/XMLSchema#string";
            >Radig</name>
          </Professor>
        </hatProfessor>
        <hatStudent rdf:resource="#Can"/>

        <hatStudent>    <!-- Uni hat Student -->
          <Stundent rdf:ID="Halgurt">
            <hatUniversitaet rdf:resource="#TUM"/>      <!-- Halgurt hat diese 
Universit�t (wurde schon oben instanziiert, dehalb jetzt "#TUM" (Referenzierung)) -->

            <hatStudiengang>
              <Studiengang rdf:ID="Diplom">
                <art rdf:datatype="http://www.w3.org/2001/XMLSchema#string";
                >Diplom</art>
              </Studiengang>
            </hatStudiengang>
                         <semester>5</semester>
            <studiert rdf:resource="#Informatik"/>      <!-- refenenz auf oben 
instanziiertes Studienfach Informatik -->
            <hatMatrikelNummer rdf:datatype="http://www.w3.org/2001/XMLSchema#int";
            >12876324</hatMatrikelNummer>
            <name rdf:datatype="http://www.w3.org/2001/XMLSchema#string";
            >Halgurt Mustafa Ali</name>
          </Stundent>
        </hatStudent>

        <name rdf:datatype="http://www.w3.org/2001/XMLSchema#string";
        >TUM</name>

      </Universitaet>

    </hatUniversitaet>

    <semester>8</semester>

  </Stundent>

  <Studienfach rdf:ID="Bauingenieurwesen"/>
  <Studienfach rdf:ID="Electrotechnik"/>
  <Studienfach rdf:ID="Maschinenbau"/>

</rdf:RDF>

<!-- Created with Protege (with OWL Plugin 1.1 beta, Build 134)  
http://protege.stanford.edu -->

Reply via email to