UndefinedClassesAndPropertiesMetric.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //© 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.
  2. const prefix = `
  3. PREFIX qpro: <http://purl.org/eis/vocab/qpro#>
  4. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
  5. PREFIX dqm-prob: <http://www.diachron-fp7.eu/dqm-prob#>
  6. `;
  7. export const UndefinedClassesAndPropertiesMetric = (qualityGraph,dataGraph,observationURI,datasetSource) =>{
  8. let query = `
  9. SELECT ?ProblematicThing ?Subject ?Predicate ?Object ?FailedMertic ?Exception
  10. FROM NAMED <${qualityGraph}>
  11. FROM NAMED <${dataGraph}>
  12. WHERE
  13. {
  14. {GRAPH <${qualityGraph}>
  15. {?QualityProblem qpro:generatedBy ?Observation;
  16. a qpro:QualityProblem;
  17. qpro:isDescribedBy ?FailedMertic;
  18. qpro:problemStructure qpro:ModelContainer;
  19. qpro:problematicThing ?ProblematicPropertyOrClass}.
  20. }
  21. {{GRAPH <${qualityGraph}>
  22. {?ProblematicPropertyOrClass qpro:exceptionDescription ?Exception}.
  23. FILTER(?Exception IN (dqm-prob:UndefinedClass)).
  24. BIND(?ProblematicPropertyOrClass AS ?Object).
  25. }
  26. UNION
  27. {GRAPH <${qualityGraph}>
  28. {?ProblematicPropertyOrClass qpro:exceptionDescription ?Exception}.
  29. FILTER(?Exception IN (dqm-prob:UndefinedProperty)).
  30. BIND(?ProblematicPropertyOrClass AS ?Predicate).
  31. }
  32. }
  33. {${datasetSource} <${dataGraph}>
  34. {?Subject ?Predicate ?Object
  35. }.
  36. }
  37. BIND(COALESCE(
  38. IF(?Exception = dqm-prob:UndefinedClass, "Object",IF(?Exception = dqm-prob:UndefinedProperty, "Predicate",""))
  39. ) AS ?ProblematicThing).
  40. FILTER(str(?Observation) = "${observationURI}").
  41. }
  42. `;
  43. return prefix + query;
  44. }
  45. export default {UndefinedClassesAndPropertiesMetric};