Frage

Gibt es eine Möglichkeit, die Ergebnisse nach Erstellungsdatum zu sortieren?

Beispielabfrage, die Sortet sein muss:

SELECT * WHERE {?s ?p ?o} limit 200
War es hilfreich?

Lösung

Sie können eine verwenden Sortieren nach Klausel genau wie Sie in SQL. Beachten Sie, dass die Sparql -Spezifikation die ORDER BY gilt nur für SELECT Abfragen. Sie müssen eine Bindung für die Eigenschaft erstellen, die Sie zur Bestellung verwenden möchten.

SELECT ?s ?p ?o
WHERE {?s ?p ?o .
       ?s <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200

Aktualisieren: Wenn Sie das Erstellungsdatum noch nicht aufbewahren, müssen Sie die Metadaten selbst aufbewahren. Wie Sie das machen, haben Sie einige Optionen:

  1. Speichern Sie ein Triple in Ihrem Standarddiagramm, das das Erstellungsdatum für jedes Thema hat. Wenn Sie mehr als ein Diagramm speichern, wird dies sehr schnell unhandlich und wahrscheinlich nicht das, was Sie wollen.

  2. Speichern Sie jedes Diagramm als benannte Grafik in Ihrem RDF Triple Store. Sie können dann Metadaten über jedes Diagramm im Standarddiagramm oder in einem "gemeinsam genannten" Graph für Erstellungszeiten speichern.

  3. Speichern Sie Ihre Daten in der benannten Grafik und verwenden Sie ein benanntes Diagramm, um die Metadaten für die Erstellungszeit zu speichern.

Ein Beispiel für die Sparql -Abfrage von Option Nr. 2 wäre:

SELECT ?s ?p ?o
WHERE {
        GRAPH ?g { ?s ?p ?o . }
        ?g <creationDatePredicate> ?date . }
ORDER BY DESC(?date)
LIMIT 200

Andere Tipps

Da Sie gesagt haben, dass Sie das Erstellungsdatum in Ihrem RDF nicht speichern, wäre ein möglicher Mechanismus dafür spezifisch für die von Ihnen verwendete SPARQL -Implementierung und den Backing RDF -Store oder was auch immer. Es ist sehr wahrscheinlich, dass es einfach nicht möglich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top