Skip to content

Commit

Permalink
feat(Gravsearch): Enable ORDER BY external link (DEV-2704) (#2902)
Browse files Browse the repository at this point in the history
  • Loading branch information
mpro7 committed Oct 25, 2023
1 parent 1999b22 commit 1b7e02a
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 14 deletions.
2 changes: 1 addition & 1 deletion docker-compose.yml
Expand Up @@ -3,7 +3,7 @@ version: '3.7'
services:

app:
image: daschswiss/dsp-app:v10.23.5
image: daschswiss/dsp-app:v10.24.2
ports:
- "4200:4200"
networks:
Expand Down
Expand Up @@ -216,6 +216,50 @@ class SearchRouteV2R2RSpec extends R2RSpec {
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Queries without type inference

"perform a Gravsearch query using simple schema which allows to sort the results by external link" in {
val query =
"""PREFIX knora-api: <http://api.knora.org/ontology/knora-api/simple/v2#>
|PREFIX anything: <http://0.0.0.0:3333/ontology/0001/anything/simple/v2#>
|
|CONSTRUCT {
| ?res knora-api:isMainResource true .
| ?res anything:hasUri ?exLink .
|} WHERE {
| ?res a knora-api:Resource .
| ?res a anything:Thing .
| ?res anything:hasUri ?exLink .
|}
|ORDER BY (?exLink)
|""".stripMargin

Post(
"/v2/searchextended",
HttpEntity(SparqlQueryConstants.`application/sparql-query`, query)
) ~> searchPath ~> check(assert(status == StatusCodes.OK))
}

"perform a Gravsearch query using complex schema which allows to sort the results by external link" in {
val query =
"""PREFIX knora-api: <http://api.knora.org/ontology/knora-api/v2#>
|PREFIX anything: <http://0.0.0.0:3333/ontology/0001/anything/v2#>
|
|CONSTRUCT {
| ?res knora-api:isMainResource true .
| ?res anything:hasUri ?exLink .
|} WHERE {
| ?res a knora-api:Resource .
| ?res a anything:Thing .
| ?res anything:hasUri ?exLink .
|}
|ORDER BY (?exLink)
|""".stripMargin

Post(
"/v2/searchextended",
HttpEntity(SparqlQueryConstants.`application/sparql-query`, query)
) ~> searchPath ~> check(assert(status == StatusCodes.OK))
}

"perform a Gravsearch query for an anything:Thing with an optional date and sort by date" in {

val gravsearchQuery =
Expand Down
Expand Up @@ -795,21 +795,23 @@ abstract class AbstractPrequeryGenerator(
// that point to literals. This is used only for generating additional statements for ORDER BY clauses, so it only needs to include
// types that have a meaningful order.
private val valueTypesToValuePredsForOrderBy: Map[IRI, IRI] = Map(
OntologyConstants.Xsd.Integer -> OntologyConstants.KnoraBase.ValueHasInteger,
OntologyConstants.Xsd.Decimal -> OntologyConstants.KnoraBase.ValueHasDecimal,
OntologyConstants.Xsd.Boolean -> OntologyConstants.KnoraBase.ValueHasBoolean,
OntologyConstants.Xsd.String -> OntologyConstants.KnoraBase.ValueHasString,
OntologyConstants.KnoraApiV2Simple.Date -> OntologyConstants.KnoraBase.ValueHasStartJDN,
OntologyConstants.KnoraApiV2Simple.Color -> OntologyConstants.KnoraBase.ValueHasColor,
OntologyConstants.KnoraApiV2Simple.Geoname -> OntologyConstants.KnoraBase.ValueHasGeonameCode,
OntologyConstants.KnoraApiV2Complex.TextValue -> OntologyConstants.KnoraBase.ValueHasString,
OntologyConstants.KnoraApiV2Complex.IntValue -> OntologyConstants.KnoraBase.ValueHasInteger,
OntologyConstants.KnoraApiV2Complex.DecimalValue -> OntologyConstants.KnoraBase.ValueHasDecimal,
OntologyConstants.KnoraApiV2Complex.TimeValue -> OntologyConstants.KnoraBase.ValueHasTimeStamp,
OntologyConstants.KnoraApiV2Complex.BooleanValue -> OntologyConstants.KnoraBase.ValueHasBoolean,
OntologyConstants.KnoraApiV2Complex.DateValue -> OntologyConstants.KnoraBase.ValueHasStartJDN,
OntologyConstants.KnoraApiV2Complex.ColorValue -> OntologyConstants.KnoraBase.ValueHasColor,
OntologyConstants.KnoraApiV2Complex.GeonameValue -> OntologyConstants.KnoraBase.ValueHasGeonameCode
OntologyConstants.KnoraApiV2Complex.DateValue -> OntologyConstants.KnoraBase.ValueHasStartJDN,
OntologyConstants.KnoraApiV2Complex.DecimalValue -> OntologyConstants.KnoraBase.ValueHasDecimal,
OntologyConstants.KnoraApiV2Complex.GeonameValue -> OntologyConstants.KnoraBase.ValueHasGeonameCode,
OntologyConstants.KnoraApiV2Complex.IntValue -> OntologyConstants.KnoraBase.ValueHasInteger,
OntologyConstants.KnoraApiV2Complex.TextValue -> OntologyConstants.KnoraBase.ValueHasString,
OntologyConstants.KnoraApiV2Complex.TimeValue -> OntologyConstants.KnoraBase.ValueHasTimeStamp,
OntologyConstants.KnoraApiV2Complex.UriValue -> OntologyConstants.KnoraBase.ValueHasUri,
OntologyConstants.KnoraApiV2Simple.Color -> OntologyConstants.KnoraBase.ValueHasColor,
OntologyConstants.KnoraApiV2Simple.Date -> OntologyConstants.KnoraBase.ValueHasStartJDN,
OntologyConstants.KnoraApiV2Simple.Geoname -> OntologyConstants.KnoraBase.ValueHasGeonameCode,
OntologyConstants.Xsd.Boolean -> OntologyConstants.KnoraBase.ValueHasBoolean,
OntologyConstants.Xsd.Decimal -> OntologyConstants.KnoraBase.ValueHasDecimal,
OntologyConstants.Xsd.Integer -> OntologyConstants.KnoraBase.ValueHasInteger,
OntologyConstants.Xsd.String -> OntologyConstants.KnoraBase.ValueHasString,
OntologyConstants.Xsd.Uri -> OntologyConstants.KnoraBase.ValueHasUri
)

/**
Expand Down

0 comments on commit 1b7e02a

Please sign in to comment.