Skip to content
Snippets Groups Projects
Commit 70ff833b authored by Frank Lange's avatar Frank Lange
Browse files

use mo:hasOrder introduced by MoDalia to order the proficiency levels

parent e0bedb7b
No related branches found
No related tags found
No related merge requests found
Pipeline #1553459 passed
......@@ -4,7 +4,7 @@ from rdflib import RDF, RDFS, Variable
from project.dalia.api_models.api_models import LabelValueItem
from project.dalia.query.utils import query_ontologies_dataset
from project.dalia.query_builder.query_builder import Aggregates, FunctionExpressions, PropertyPaths, QueryBuilder
from project.dalia.query_builder.query_builder import QueryBuilder
from project.dalia.rdf.namespace import MoDalia
......@@ -23,22 +23,16 @@ _VARIABLES = {
def prepare_query_to_get_proficiency_levels() -> str:
var_level = _VARIABLES["level"]
var_level_order = Variable("levelOrder")
return QueryBuilder().SELECT(
*_VARIABLES.values()
).WHERE(
QueryBuilder().SELECT(
var_level,
count=Aggregates.COUNT(var_level),
).WHERE(
(var_level, RDF.type, MoDalia.Proficiency),
(var_level, PropertyPaths.ZeroOrMorePath(MoDalia.isLessProficientThan), Variable("moreProficientLevel")),
).GROUP_BY(
var_level
).ORDER_BY(
FunctionExpressions.DESC(Variable("count"))
).build(),
(var_level, RDF.type, MoDalia.Proficiency),
(var_level, MoDalia.hasOrder, var_level_order),
(var_level, RDFS.label, _VARIABLES["label"]),
).ORDER_BY(
var_level_order
).build()
......
......@@ -9,7 +9,7 @@ NS = "https://purl.org/ontology/modalia#"
hasLearningType = URIRef(NS + "hasLearningType")
hasMediaType = URIRef(NS + "hasMediaType")
hasTargetGroup = URIRef(NS + "hasTargetGroup")
isLessProficientThan = URIRef(NS + "isLessProficientThan")
hasOrder = URIRef(NS + "hasOrder")
requiresProficiencyLevel = URIRef(NS + "requiresProficiencyLevel")
# Types
......
......@@ -13,17 +13,11 @@ def test_prepare_query_to_get_proficiency_levels():
assert normalize(query) == dedent_and_normalize("""
SELECT ?level ?label
WHERE {
{
SELECT ?level (COUNT( ?level ) as ?count)
WHERE {
?level <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://purl.org/ontology/modalia#Proficiency> .
?level <https://purl.org/ontology/modalia#isLessProficientThan>* ?moreProficientLevel .
}
GROUP BY ?level
ORDER BY DESC ( ?count )
}
?level <https://purl.org/ontology/modalia#hasOrder> ?levelOrder .
?level <http://www.w3.org/2000/01/rdf-schema#label> ?label .
}
ORDER BY ?levelOrder
""")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment