//© 2019 Dublin City University, Trinity College Dublin. All rights reserved. This material may not be reproduced, displayed, modified or distributed without the express prior written permission of the copyright holder. const prefix = ` PREFIX qpro: PREFIX rdf: PREFIX dqm-prob: `; export const MisplacedClassesOrPropertiesMetric = (qualityGraph,dataGraph,observationURI,datasetSource) =>{ let query = ` SELECT DISTINCT (?ProblematicThingResource AS ?Subject) ?Predicate ?Object ?FailedMertic ?Exception FROM NAMED <${qualityGraph}> FROM NAMED <${dataGraph}> WHERE { {GRAPH <${qualityGraph}> {?QualityProblem qpro:generatedBy ?Observation; a qpro:QualityProblem; qpro:isDescribedBy ?FailedMertic; qpro:problemStructure qpro:ModelContainer; qpro:problematicThing ?ProblematicThingResource}. } {GRAPH <${qualityGraph}> {?ProblematicThingResource qpro:exceptionDescription ?ExceptionDefault}.} {{GRAPH <${qualityGraph}> {?ProblematicThingResource ?Property ?Predicate}. FILTER(?Property IN (dqm-prob:hasMisplacedClass)).} UNION {GRAPH <${qualityGraph}> {?ProblematicThingResource ?Property ?Object}. FILTER(?Property IN ( dqm-prob:hasMisplacedProperty)).} } {${datasetSource} <${dataGraph}> {?ProblematicThingResource ?Predicate ?Object }. } BIND(COALESCE( IF(?Property = dqm-prob:hasMisplacedClass, dqm-prob:MisplacedClass,IF(?Property = dqm-prob:hasMisplacedProperty, dqm-prob:MisplacedProperty,"")) ) AS ?Exception). FILTER(str(?Observation) = "${observationURI}"). } `; return prefix + query; } export default {MisplacedClassesOrPropertiesMetric};