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

refactor language filtering to a single function

parent ccf11b6f
No related branches found
No related tags found
No related merge requests found
Pipeline #1628523 passed
Showing
with 65 additions and 155 deletions
......@@ -3,14 +3,9 @@ from typing import List, Tuple
from rdflib import Literal, OWL, RDF, SKOS, URIRef, Variable
from project.dalia.api_models.api_models import CurationSuggestDisciplinesResultItem
from project.dalia.query.utils import query_ontologies_dataset
from project.dalia.query_builder.query_builder import (
FILTER,
FILTER_EXISTS,
FunctionExpressions,
Operators,
QueryBuilder,
)
from project.dalia.query.utils import filter_by_lang, query_ontologies_dataset
from project.dalia.query_builder.query_builder import FILTER_EXISTS, QueryBuilder
# Note: This algorithm is quite inefficient and results in a lot of SPARQL queries.
# Another idea would be to pull all disciplines and their narrower/broader nodes at once, e.g. via
......@@ -71,12 +66,7 @@ def _prepare_query_to_get_disciplines_metadata(discipline_selection_bgp: Tuple)
state=False
),
(var_discipline, SKOS.prefLabel, var_label),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(var_label),
Literal("en")
)
),
filter_by_lang(var_label),
(var_discipline, SKOS.notation, var_notation)
).ORDER_BY(
var_notation
......
......@@ -8,16 +8,8 @@ from project.dalia.api_models.api_models import (
CurationSuggestSearchRequest,
LabelValueItem,
)
from project.dalia.query.utils import query_ontologies_dataset
from project.dalia.query_builder.query_builder import (
Aggregates,
BIND,
FILTER,
FunctionExpressions,
OPTIONAL,
Operators,
QueryBuilder,
)
from project.dalia.query.utils import filter_by_lang, query_ontologies_dataset
from project.dalia.query_builder.query_builder import Aggregates, BIND, FunctionExpressions, OPTIONAL, QueryBuilder
from project.dalia.rdf.namespace import Jena_text, SKOS_last_call, lvont
......@@ -47,12 +39,7 @@ def _where_for_text_search(query: str, var_lang: Variable, var_score: Variable,
where = [
(subject_list_for_text_search, Jena_text.query, object_list_for_text_search),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(var_label),
Literal("en")
)
),
filter_by_lang(var_label),
]
return tuple(where)
......
from typing import List
from rdflib import Literal, RDFS, SKOS, Variable
from rdflib import RDFS, SKOS, 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 FILTER, FunctionExpressions, GROUP, Operators, QueryBuilder, UNION
from project.dalia.query.utils import filter_by_lang, query_ontologies_dataset
from project.dalia.query_builder.query_builder import FILTER, GROUP, Operators, QueryBuilder, UNION
from project.dalia.rdf.namespace import MoDalia, hcrt
......@@ -54,12 +54,7 @@ def prepare_query_to_get_learning_resource_types() -> str:
),
).build(),
(var_lrt, SKOS.prefLabel, var_label),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(var_label),
Literal("en")
)
),
filter_by_lang(var_label),
).ORDER_BY(
var_label
).build()
......
from typing import List
from rdflib import Literal, RDFS, SKOS, Variable
from rdflib import RDFS, SKOS, 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 FILTER, FunctionExpressions, Operators, QueryBuilder
from project.dalia.query.utils import filter_by_lang, query_ontologies_dataset
from project.dalia.query_builder.query_builder import QueryBuilder
from project.dalia.rdf.namespace import MoDalia
......@@ -30,12 +30,7 @@ def prepare_query_to_get_media_types() -> str:
).WHERE(
(var_type, RDFS.subClassOf, MoDalia.MediaType),
(var_type, SKOS.prefLabel, var_label),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(var_label),
Literal("en")
)
),
filter_by_lang(var_label),
).ORDER_BY(
var_label
).build()
......
from typing import List
from rdflib import Literal, RDF, RDFS, Variable
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 FILTER, FunctionExpressions, Operators, QueryBuilder
from project.dalia.query.utils import filter_by_lang, query_ontologies_dataset
from project.dalia.query_builder.query_builder import QueryBuilder
from project.dalia.rdf.namespace import MoDalia
......@@ -32,12 +32,7 @@ def prepare_query_to_get_proficiency_levels() -> str:
(var_level, RDF.type, MoDalia.Proficiency),
(var_level, MoDalia.hasOrder, var_level_order),
(var_level, RDFS.label, var_label),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(var_label),
Literal("en")
)
),
filter_by_lang(var_label),
).ORDER_BY(
var_level_order
).build()
......
from typing import List
from rdflib import Literal, RDFS, Variable
from rdflib import 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 FILTER, FunctionExpressions, Operators, QueryBuilder
from project.dalia.query.utils import filter_by_lang, query_ontologies_dataset
from project.dalia.query_builder.query_builder import QueryBuilder
from project.dalia.rdf.namespace import MoDalia
......@@ -30,12 +30,7 @@ def prepare_query_to_get_relation_types() -> str:
).WHERE(
(var_type, RDFS.subPropertyOf, MoDalia.isRelatedTo),
(var_type, RDFS.label, var_label),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(var_label),
Literal("en")
)
),
filter_by_lang(var_label),
).ORDER_BY(
var_label
).build()
......
from typing import List
from rdflib import Literal, RDFS, SKOS, Variable
from rdflib import RDFS, SKOS, 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 FILTER, FunctionExpressions, Operators, QueryBuilder
from project.dalia.query.utils import filter_by_lang, query_ontologies_dataset
from project.dalia.query_builder.query_builder import QueryBuilder
from project.dalia.rdf.namespace import MoDalia
......@@ -30,12 +30,7 @@ def prepare_query_to_get_target_groups() -> str:
).WHERE(
(var_tg, RDFS.subClassOf, MoDalia.TargetGroup),
(var_tg, SKOS.prefLabel, var_label),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(var_label),
Literal("en")
)
),
filter_by_lang(var_label),
).ORDER_BY(
var_label
).build()
......
from typing import Dict, Iterable
from django.utils.text import slugify
from rdflib import DCTERMS, Literal, RDF, URIRef, Variable
from rdflib import DCTERMS, RDF, URIRef, Variable
from project.dalia.api_models.api_models import Community, SocialMedia
from project.dalia.query.utils import query_dalia_dataset
from project.dalia.query_builder.query_builder import (
FILTER,
FunctionExpressions,
OPTIONAL,
Operators,
QueryBuilder,
VALUES
)
from project.dalia.query.utils import filter_by_lang, query_dalia_dataset
from project.dalia.query_builder.query_builder import OPTIONAL, QueryBuilder, VALUES
from project.dalia.rdf.namespace import MoDalia, SCHEMA, wdt
......@@ -109,12 +102,7 @@ def prepare_query_for_one_to_one_metadata_for_communities(community_uri_refs: It
(var_community, RDF.type, MoDalia.Community),
OPTIONAL(
(var_community, DCTERMS.description, var_description),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(var_description),
Literal("en")
)
)
filter_by_lang(var_description),
),
OPTIONAL((var_community, DCTERMS.title, _VARIABLES["title"])),
OPTIONAL((var_community, wdt.Bluesky_handle, _VARIABLES["bluesky_handle"])),
......
from typing import Collection, Dict, List
from rdflib import SKOS, URIRef
from rdflib.term import Literal, Node
from rdflib.term import Node
from project.dalia.api_models.api_models import LabelValueItem
from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
from project.dalia.query.labels.utils import remap_to_label_value_item
from project.dalia.query.utils import Dataset
from project.dalia.query_builder.query_builder import FILTER, FunctionExpressions, Operators
from project.dalia.query.utils import Dataset, filter_by_lang
from project.dalia.rdf.namespace import fabio
_LABEL_GRAPH_PATTERN = (
(VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(VAR_LABEL),
Literal("en")
)
)
filter_by_lang(VAR_LABEL),
)
......
from typing import Collection, Dict, List
from rdflib import DCTERMS, URIRef
from rdflib.term import Literal, Node
from rdflib.term import Node
from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
from project.dalia.query.utils import Dataset
from project.dalia.query_builder.query_builder import FILTER, FunctionExpressions, Operators
from project.dalia.query.utils import Dataset, filter_by_lang
from project.dalia.rdf.namespace import SKOS_last_call
_LABEL_GRAPH_PATTERN = (
(VAR_ITEM, SKOS_last_call.prefLabel, VAR_LABEL),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(VAR_LABEL),
Literal("en")
)
)
filter_by_lang(VAR_LABEL),
)
......
from typing import Collection, Dict, List
from rdflib import SKOS, URIRef
from rdflib.term import Literal, Node
from rdflib.term import Node
from project.dalia.api_models.api_models import LabelValueItem
from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
from project.dalia.query.labels.utils import remap_to_label_value_item
from project.dalia.query.utils import Dataset
from project.dalia.query_builder.query_builder import FILTER, FunctionExpressions, Operators
from project.dalia.query.utils import Dataset, filter_by_lang
from project.dalia.rdf.namespace import MoDalia
_LABEL_GRAPH_PATTERN = (
(VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(VAR_LABEL),
Literal("en")
)
)
filter_by_lang(VAR_LABEL),
)
......
from typing import Collection, Dict, List
from rdflib import SKOS, URIRef
from rdflib.term import Literal, Node
from rdflib.term import Node
from project.dalia.api_models.api_models import LabelValueItem
from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
from project.dalia.query.labels.utils import remap_to_label_value_item
from project.dalia.query.utils import Dataset
from project.dalia.query_builder.query_builder import FILTER, FunctionExpressions, Operators
from project.dalia.query.utils import Dataset, filter_by_lang
from project.dalia.rdf.namespace import MoDalia
_LABEL_GRAPH_PATTERN = (
(VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(VAR_LABEL),
Literal("en")
)
)
filter_by_lang(VAR_LABEL),
)
......
from typing import Collection, Dict, List
from rdflib import RDFS, URIRef
from rdflib.term import Literal, Node, Variable
from rdflib.term import Node, Variable
from project.dalia.api_models.api_models import LabelValueItem
from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
from project.dalia.query.labels.utils import remap_to_label_value_item
from project.dalia.query.utils import Dataset
from project.dalia.query_builder.query_builder import FILTER, FunctionExpressions, Operators
from project.dalia.query.utils import Dataset, filter_by_lang
from project.dalia.rdf.namespace import MoDalia
_VAR_LEVEL_ORDER = Variable("levelOrder")
......@@ -16,12 +15,7 @@ _VAR_LEVEL_ORDER = Variable("levelOrder")
_LABEL_GRAPH_PATTERN = (
(VAR_ITEM, RDFS.label, VAR_LABEL),
(VAR_ITEM, MoDalia.hasOrder, _VAR_LEVEL_ORDER),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(VAR_LABEL),
Literal("en")
)
)
filter_by_lang(VAR_LABEL),
)
......
from typing import Collection, Dict, List
from rdflib import SKOS, URIRef
from rdflib.term import Literal, Node
from rdflib.term import Node
from project.dalia.api_models.api_models import LabelValueItem
from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
from project.dalia.query.labels.utils import remap_to_label_value_item
from project.dalia.query.utils import Dataset
from project.dalia.query_builder.query_builder import FILTER, FunctionExpressions, Operators
from project.dalia.query.utils import Dataset, filter_by_lang
from project.dalia.rdf.namespace import MoDalia
_LABEL_GRAPH_PATTERN = (
(VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(VAR_LABEL),
Literal("en")
)
)
filter_by_lang(VAR_LABEL),
)
......
from enum import Enum
from django.conf import settings
from rdflib import URIRef
from rdflib import Literal, Variable
from rdflib.plugins.stores.sparqlstore import SPARQLStore
from rdflib.query import Result
from project.dalia.query_builder.query_builder import FILTER, FunctionExpressions, Operators
class Dataset(Enum):
"""
......@@ -36,3 +38,12 @@ def _get_triplestore_endpoint_from_settings() -> str:
if not endpoint.endswith("/"):
endpoint += "/"
return endpoint
def filter_by_lang(var: Variable, lang: str = "en") -> tuple[FILTER]:
return FILTER(
Operators.EQ(
FunctionExpressions.LANG(var),
Literal(lang)
)
)
from collections import OrderedDict
from rdflib import Literal, SKOS, URIRef
from rdflib import SKOS, URIRef
from project.dalia.query.labels.label_service import (
VAR_ITEM,
......@@ -8,19 +8,14 @@ from project.dalia.query.labels.label_service import (
get_labels_for_item_uris,
prepare_query_for_labels_from_items,
)
from project.dalia.query.utils import Dataset
from project.dalia.query_builder.query_builder import FILTER, FunctionExpressions, Operators
from project.dalia.query.utils import Dataset, filter_by_lang
from project.dalia.query_builder.query_builder import FunctionExpressions
from project.dalia.rdf.namespace import SCHEMA
from tests.project.dalia.utils import dedent_and_normalize, normalize
_LABEL_GRAPH_PATTERN = (
(VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
FILTER(
Operators.EQ(
FunctionExpressions.LANG(VAR_LABEL),
Literal("en")
)
)
filter_by_lang(VAR_LABEL),
)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment