2016-06-10 7 views
0

Ich brauche ein Format, dassGibt es ein Vorlagenformat zum Generieren von HTML/XML aus RDF-Abfragen?

  • Abfragen von RDF-Daten definieren kann,
  • kann festlegen, wie ein XML-Dokument wird aus diesen Daten erzeugt werden,
  • ist benutzerfreundlich, dh leicht zu lesen und schreiben und kann von einem Nicht-Programmierer verwendet werden, der mit XML und Turtle vertraut ist.

Es gibt ähnliche Formate, aber alle die ich kenne, erfüllen nicht alle diese Anforderungen.

  1. XSLT

    XSLT können XML-Ausgabe definieren und ist benutzerfreundlich. Es kann jedoch nicht nur RDF, sondern nur XML digital abfragen.

    aber ich kann use XSLT to process SPARQL output, aber das ist nicht benutzerfreundlich (zu viel Standardcode, und die Abfrage in einer anderen Datei):

    <xsl:template match="s:result"> 
        <div class="cat"> 
         <xsl:value-of select="s:binding[@name='name']/s:literal"/> 
        </div> 
    </xsl:template> 
    
  2. SPARQL Vorlagen

    Dies ist eine benutzerfreundliche RDF-Abfragesprache mit der Fähigkeit, einige Vorlagen zu erstellen, meistens für reinen Text. Für die XML-Ausgabe ist es jedoch nicht sehr brauchbar und nicht benutzerfreundlich, da die Anführungszeichen ordnungsgemäß entfernt werden müssen. Auch das Erzeugen komplexer Ausgabedokumente ist kompliziert.

    template { 
        '''<div class="cat">''' ?name '''</div>''' 
    } 
    where { 
        ?c a :cat . 
        ?c :name ?name 
    } 
    
  3. XUL Vorlagen

    Diese Sprache konzipiert ist genau für meine Zwecke. Es fehlt jedoch eine deklarative und benutzerfreundliche Abfragesprache wie SPARQL, und es gibt eine recht ausführliche XML-basierte Abfragesprache.

    <div class="cat" datasources="./cats.rdf" ref="http://xmlns.com/cats/cat"> 
        <template> 
         <query> 
          <content uri="?start" /> 
          <triple subject="?cat" predicate="http://www.w3.org/1999/02/22-rdf-syntax-ns#type" object="?start" /> 
          <triple subject="?cat" predicate="http://xmlns.com/cats/name" object="?name" /> 
         </query> 
         <action> 
          <span value="?name" /> 
         </action> 
        </template> 
    </div> 
    

    Es hat auch ein much more concise syntax als diese, sondern eine, die immer noch den syntaktischen Zucker Schildkröte fehlt und SPARQL hat, und ist nicht so mächtig wie SPARQL.

  4. XSPARQL

    Diese Sprache ist wahrscheinlich die am nächsten zu dem, was ich brauche. Es fühlt sich jedoch immer noch wie eine Programmiersprache an.

    <div class="cat">{ 
        for $cat $name from <cats.rdf> 
        where {$cat a :cat . $cat :name $name} 
        return $name 
    }</div> 
    

    Die Verwendung von for und return Keywords vor einem algorithmisches Denken, aber ich brauche etwas konzeptionell deklarativ. Auch die Mischung aus {} Blöcken und XML-Tags kann einen Nicht-Programmierer verwirren, insbesondere in komplexen Abfragen, in denen XML-Tags in der return-Klausel zurückgegeben werden.


würde Ich mag etwas einfach und leistungsfähig haben, und das ist syntaktisch ein XML-Dokument.Wie

<div class="cat" ql:select="?name" ql:where="?cat a :cat . ?cat :name ?name" /> 

oder mehrere XSL-like

<div class="cat"> 
    <ql:value-of select="?cat" where="?cat a :cat . ?cat :name ?name" /> 
</div> 

(Eigentlich, wenn Sie nicht vorhanden etwas vorschlagen können, könnte ich eine Sprache wie diese letzten implementieren.)

+0

Eine interessante Frage, aber beachten Sie: "Fragen, die uns bitten, ein Buch, ein Tool, eine Softwarebibliothek, ein Lernprogramm oder eine andere Offsite-Ressource zu empfehlen oder zu finden, sind für Stack Overflow off-topic, da sie tendenziell eigensinnige Antworten und Spam anziehen . " Dies könnte besser auf die Software Recommendations Seite ausgerichtet sein. –

+0

Ich wünschte, es hat zu viele Antworten angezogen :) Aber OK, du hast Recht damit. –

Antwort

0

Ich habe UISPIN gefunden , das ist eine Sprache sehr ähnlich, was ich geträumt habe:

<ui:forEach ui:resultSet="{#SELECT ?name WHERE {?c a :cat . ?c :name ?name} }"> 
    <div class="cat"> 
    {=?name}  
    </div> 
</ui:forEach> 

Ich habe auch Gloze gefunden, ein Tool, um zwischen RDF- und benutzerdefinierten XML-Formaten hin- und herzuwechseln, wobei das XML-Schema als Deskriptor des Konvertierungsprozesses verwendet wird. Dies ist wahrscheinlich nicht die einfachste Zuordnung von RDF zu XML, aber in der anderen Richtung ist es ziemlich einfach.