Announcement

Collapse
No announcement yet.

Mehrere XQueries nacheinander ausführen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrere XQueries nacheinander ausführen

    Hallo zusammen, entschuldigt mich, falls meine Frage ziemlich flach ist, aber ich brauche echt euren Ratschlag!

    Ich habe mehrere XQueries, die an dieselbe collection geschickt werden. Kann mir jemand sagen, wie ich sie nacheinander automatisch starten könnte? Soll ich mir ein Shellskript oder so etwas schreiben?

    Ich möchte, dass mein Professor nicht jede XQuery in Oxygen oder so laden muss, sondern am besten auf eine ausführbare Datei drückt und die Ausführung aller XQueries betätigt. Hoffentlich konntet ihr mich verstehen, was ich will! Danke euch schon mal!

  • #2
    Welche XQuery-Implementierung verwendest du denn bzw. dein Professor? Hast du dich schon mal mit XProc, einer XML pipeline language (http://www.w3.org/TR/xproc/), beschäftigt, ob diese mit http://www.w3.org/TR/xproc/#c.xquery deinen Anforderungen genügt?

    Comment


    • #3
      Originally posted by Martin Honnen View Post
      Welche XQuery-Implementierung verwendest du denn bzw. dein Professor? Hast du dich schon mal mit XProc, einer XML pipeline language (http://www.w3.org/TR/xproc/), beschäftigt, ob diese mit http://www.w3.org/TR/xproc/#c.xquery deinen Anforderungen genügt?
      Hallo Martin, vielen Dank für deine Hinweise. Ich schaue es mir genauer an, es scheint doch das zu sein, wonach ich suche.
      Die XQueries sehen so aus:
      Code:
      xquery version "1.0";
      
      declare boundary-space strip;
      
      declare namespace xsf="http://www.xstandoff.net/2009/xstandoff/1.1";
      declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance";
      declare namespace tocs="http://taurus.zmi.uni-giessen.de/tocs";
      declare namespace terms="http://taurus.zmi.uni-giessen.de/terms";
      declare namespace cnxde="http://www.text-technology.de/cnxde";
      declare namespace heat="http://taurus.zmi.uni-giessen.de/stype";
      
      declare namespace my="http://www.taurus.zmi.uni-giessen.de/my";
      
      declare default element namespace "http://www.xstandoff.net/2009/xstandoff/1.1";
      
      declare function my:primdata($node as node(), $start as xs:integer?, $end as xs:integer) as xs:string {
           substring($node, $start + 1 , $end - $start)
         };
      
      <graphml >
      {
      (:for $doc in doc("../../../korpus/tocs/layers/hxsf_u8/mueller_hpsg_2008-hxsf.xml"):)
      for $doc in doc("../../../korpus/tocs/layers/hxsf_u8/seithe_engaging_2008-hxsf.xml")
      (:for $doc in doc("../../../korpus/tocs/layers/hxsf_u8/brosius_kommunikationsforschung_2008-hxsf.xml"):)
      (:for $doc in doc("../../../korpus/tocs/layers/hxsf_u8/soellner_management_2008-hxsf.xml"):)
      
      let $text := $doc//xsf:corpusData/xsf:primaryData/xsf:textualContent
      
      (:Suche alle NPs mit stype NP und Stichwort aus:)
      for $phrase in $doc//cnxde:analysis/cnxde:sentence/cnxde:token[@lemma='gegen']
      
      let $phrase_id := $phrase/..
      
      where $phrase
      
      return 
      
      
      
      let $sentence_mit_hilfe_von := $phrase/..
      
      
      let $instr_sentence_id := $sentence_mit_hilfe_von/id(@xsf:segment)/@xml:id/string()
      
      (:Ermittlung aller Tokens aus dem Sentence-Knoten:)
      
      let $fuer_cnx_sentence_node := $doc//cnxde:analysis/cnxde:sentence[@xsf:segment= $instr_sentence_id]//cnxde:de//cnxde:token
      
      let $self_tokens_ids := $fuer_cnx_sentence_node/id(@xsf:segment)/@xml:id/string()
      
      let $token_terms := $doc//terms:toc/terms:head//terms:term[@xsf:segment=$self_tokens_ids]
      where $token_terms
      return
      (:Ermittlung der Nummer vom Token mit der Präposition "nach":)
      let $cnx_nach_id := $phrase/id(@xsf:segment)
      
      (:Es sollen zwei Terme sein A und B:)
      let $term_1:= $token_terms/ancestor::terms:head//child::terms:term[./id(@xsf:segment)/@start+0 <$cnx_nach_id/@start+0]
      
      
      
      
      
      
      (:Ermittlung vom Term 2:)
      let $term_2 := $token_terms/ancestor::terms:head//child::terms:term[./id(@xsf:segment)/@start+0  > $cnx_nach_id/@start+0]
      for $self_terms in $term_1/id(@xsf:segment)
      for $self_term2 in $term_2/id(@xsf:segment)
      (:Schwäche bei der Termannotation <t>{$token_terms}</t>:)
         
      
          return
          <terme>
          <term1>{for $token_in_selfs in $doc//cnxde:token[./id(@xsf:segment)/@start+0 >= $self_terms/@start+0][./id(@xsf:segment)/@end+0 <= $self_terms/@end+0]
          return string($token_in_selfs/@lemma)}</term1>
          <relation>richtet sich gegen  </relation>
          <term2>{for $token_in_selfs in $doc//cnxde:token[./id(@xsf:segment)/@start+0 >= $self_term2/@start+0][./id(@xsf:segment)/@end+0 <= $self_term2/@end+0]
          return string($token_in_selfs/@lemma)}</term2>
          </terme>
         
                 
                 }
      
      
      
      </graphml>
      und ein weiteres Beispiel ist
      Code:
      xquery version "1.0";
      
      declare boundary-space strip;
      
      declare namespace xsf="http://www.xstandoff.net/2009/xstandoff/1.1";
      declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance";
      declare namespace tocs="http://taurus.zmi.uni-giessen.de/tocs";
      declare namespace terms="http://taurus.zmi.uni-giessen.de/terms";
      declare namespace cnxde="http://www.text-technology.de/cnxde";
      declare namespace heat="http://taurus.zmi.uni-giessen.de/stype";
      
      declare namespace my="http://www.taurus.zmi.uni-giessen.de/my";
      
      declare default element namespace "http://www.xstandoff.net/2009/xstandoff/1.1";
      
      declare function my:primdata($node as node(), $start as xs:integer?, $end as xs:integer) as xs:string {
           substring($node, $start + 1 , $end - $start)
         };
      
      <graphml >
      {
      (:for $doc in collection("../../../korpus/tocs/layers/hxsf_u8"):)
      (:for $doc in doc("../korpus/loewe-a3/tocs/layers/hxsf_u8/abels_soziologie_2007-hxsf.xml"):)
      (:for $doc in doc("../../../korpus/tocs/layers/hxsf_u8/brosius_kommunikationsforschung_2008-hxsf.xml"):)
      for $doc in collection("../../../korpus/tocs/layers/hxsf_u8")
      
      let $text := $doc//xsf:corpusData/xsf:primaryData/xsf:textualContent
      
      (:Suche alle NPs mit stype NP aus:)
      for $hd_mod in $doc//terms:toc/terms:head//terms:term
      
      (:Gib die Attribute xsf:segment von allen NPs aus:)
      let $self_seg := $hd_mod/id(@xsf:segment)
      
      (:Gib die Nummer vom XSF-Segment aus:)
      let $attr := $self_seg/@xml:id/string()
      (:Der CNXDE-Knoten muss ermittelt werden:)
      let $self_cnxde := $doc//cnxde:analysis/cnxde:sentence/cnxde:de//cnxde:token[@xsf:segment=$attr]
      
      let $sentence_node := $self_cnxde/../..
      
      (:id vom Sentence-Knoten ermitteln:)
      let $cnx_sentence_id := $sentence_node/id(@xsf:segment)/@xml:id/string()
      
      (:Überprüfen, welche von den Sentence-Knoten einen Token mit dem Lemma Ursache haben:)
      let $lemma_ursache := $doc//cnxde:analysis/cnxde:sentence[@xsf:segment= $cnx_sentence_id]/cnxde:de//cnxde:token[fn:matches(@lemma,'ursache')]
      
      where $lemma_ursache
      
      return 
      
      (:Überprüfen, ob der CNXDE:Sentence auch einen Präpositionstoken "für" enthält:)
      
      let $id_ursache_cnx_sentence := $lemma_ursache/../../id(@xsf:segment)/@xml:id/string()
      let $lemma_fuer := $doc//cnxde:analysis/cnxde:sentence[@xsf:segment= $id_ursache_cnx_sentence]/cnxde:token[fn:matches(@lemma,'für')]
      
      where $lemma_fuer
      return
      let $id_fuer_cnx_sentence := $lemma_fuer/../id(@xsf:segment)/@xml:id/string()
      
      
      
      
      (:Ermittlung aller Tokens aus dem Sentence-Knoten:)
      
      let $fuer_cnx_sentence_node := $doc//cnxde:analysis/cnxde:sentence[@xsf:segment= $id_fuer_cnx_sentence]/cnxde:de//cnxde:token
      
      let $self_tokens_ids := $fuer_cnx_sentence_node/id(@xsf:segment)/@xml:id/string()
      
      let $token_terms := $doc//terms:toc/terms:head//terms:term[@xsf:segment=$self_tokens_ids]
      where $token_terms
      return
      (:Es sollen zwei Terme sein A und B:)
      let $self_has_two_terms := $token_terms/../..
      
      (:Prüfen, ob head:terms auch Term 2 hat:)
      let $second_term := $self_has_two_terms/terms:term[2]
      
      where $second_term
      return
      let $head_second_term := $second_term/..
      (:Ermittlung vom Term 1:)
      let $term_1 := $head_second_term//terms:term[1]
      
      (:Ermittlung vom Term 2:)
      let $term_2 := $head_second_term//terms:term[2]
      for $self_terms in $term_1/id(@xsf:segment)
      for $self_term2 in $term_2/id(@xsf:segment)
      (:Schwäche bei der Termannotation:)
      let $u := base-uri($doc)
      
      
          return
          <terme>
          <document>{$u}</document>
          <term1>{for $token_in_selfs in $doc//cnxde:token[./id(@xsf:segment)/@start+0 >= $self_terms/@start+0][./id(@xsf:segment)/@end+0 <= $self_terms/@end+0]
          return string($token_in_selfs/@lemma)}</term1>
          <relation>ist Ursache für</relation>
          <term2>{for $token_in_selfs in $doc//cnxde:token[./id(@xsf:segment)/@start+0 >= $self_term2/@start+0][./id(@xsf:segment)/@end+0 <= $self_term2/@end+0]
          return string($token_in_selfs/@lemma)}</term2>
          
          </terme> 
                 
       }
      
      
      
      </graphml>
      Verstehe ich es richtig, dass in XProc die Möglichkeit habe, die beiden Dateien nacheinander auszuführen? Die Anfragen werden immer an dieselben Dateien geschickt? Danke dir schon mal für die Hilfe!

      Comment


      • #4
        Mit einer XProc-Implementierung wie http://xmlcalabash.com/ kann man u.a. zwei XQuery-Programme so ausführen, dass das zweite Programm als Eingabe die Ausgabe des ersten Programmes verarbeitet. Laut http://xmlcalabash.com/ ist Calabash Teil von Oxygen, da kann man vermutlich dann das "Verdrahten" der Programme grafisch durchführen.

        Comment

        Working...
        X