Je suis en train de jouer avec R2RML et je me demandais si je pouvais créer une propriété en fonction du contenu d'une cellule de table RDB.Création conditionnelle de propriété dans R2RML
Le langage de mappage D2RQ a d2rq:condition
qui peut gérer cela.
par exemple:
si la valeur dans la colonne/cellule de tableau 'nom' est 'abc' créer propriété 'abc'
rr:predicateObjectMap [
rr:predicate ex:abc
rr:objectMap [
rr:column "name";
rr:datatype xsd:string;
# equivalent for d2rq:condition "name='abc'"
];
]
si la valeur en 'nom' de la colonne/table cellule est 'xyz' créer la propriété 'xyz'
Je n'ai trouvé aucune suggestion dans la recommandation R2RML du W3C.
Des idées? :-)
Mise à jour:
J'ai eu l'idée d'utiliser rr:sqlQuery
par exemple
rr:SQLQuery """
select (case TABLENAME.COLUMNNAME
when 'this' then 'propertyOne'
when 'that' then 'propertyTwo'
end) as VARIABLE_PREDICATE
from TABLENAME """;
et l'appliquer à un rr:predicate
ou rr:predicateMap
avec
rr:predicateObjectMap [
rr:predicateMap [ rr:template "ex:{VARIABLE_PREDICATE}" ];
rr:objectMap [ rr:column "COLUMNNAME"; ];
];
Mais cela ne fonctionne pas. Je suppose que predicateMaps
peut être rr:constant
s seulement et non rr:template
s :(Au moins la recommandation du W3C indique que les constantes dans les predicateMap
Toujours à la recherche d'une solution ...:../
PS Je suis déçu que un langage propriétaire comme d2rq semble être plus puissant (à ce stade)
Ce document mentionne 'rr: joinCondition' comme similaire à' d2rq: condition': https://github.com/RMLio/D2RQ_to_R2RML – CaptSolo
Merci pour le lien! Mais malheureusement, ce n'est pas correct. Je vérifiais la page de recommandation du W3C pour R2RML et aussi cette page https://www.w3.org/ns/r2rml#joinCondition .... Cela fonctionne juste pour les jointures :( – Kody
Dommage que cela n'a pas fonctionné. – CaptSolo