Data Quality Monitoring Reports (DEPRECATED)
This site is currently under construction! In fact, many of these queries won't work since they depend on a different release of the DQM-Vocabulary
On this page you find SPARQL queries that can be used to generate reports with instances that do not conform to the specified data requirements. Before you can use these queries you need to create data quality rules with the help of the DQM-Vocabulary. The queries on this page only use elements of the dqm-voabulary so that they work for any datasets as long as the data requirements are specified with the DQM-Vocabulary.
Contents |
Completeness Reports
Conditional Value Rule
Addressed DQ-Problems: Missing Values
SELECT ?i ?condvalue WHERE { ?dqr a ?ConditionalValueRule . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:testedClass ?tclass . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . ?i a ?tclassURI . ?dqr dqm:hasCondition ?cond1 . ?cond1 dqm:conditionalProperty ?cprop . ?cprop dqm:hasURI ?cpropreal . ?cond1 dqm:equals ?condvalue . BIND (smf:buildURI(?cpropreal) AS ?cpropURI) . ?i ?cpropURI ?value . FILTER (str(?value) = str(?condvalue)) . ?i ?tpropURI "" . }
Conditional Property Rule
Addressed DQ-Problems: Missing Conceptual Elements
SELECT ?dqr ?i ?condvalue WHERE { ?dqr a dqm:ConditionalPropertyRule . ?dqr dqm:testedProperty ?tprop . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . ?i a ?tclassURI . ?dqr dqm:hasCondition ?cond1 . ?cond1 dqm:conditionalProperty ?cprop . ?cprop dqm:hasURI ?cpropreal . ?cond1 dqm:equals ?condvalue . BIND (smf:buildURI(?cpropreal) AS ?cpropURI) . ?i ?cpropURI ?value . FILTER (str(?value) = str(?condvalue)) . NOT EXISTS { ?i ?tpropURI ?mandatoryvalue . } . }
Missing Value Rule
Addressed DQ-Problems: Missing Values
SELECT ?i WHERE { ?dqr a dqm:MissingValueRule . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:testedClass ?tclass . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . ?i a ?tclassURI . ?i ?tpropURI "" . }
Missing Property Rule
Addressed DQ-Problems: Missing Conceptual Elements
SELECT ?i WHERE { ?dqr a dqm:MissingPropertyRule . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:testedClass ?tclass . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . ?i a ?tclassURI . NOT EXISTS{ ?i ?tpropURI ?value . } }
Syntactical Accuracy Reports
Legal Value Rule
Addressed DQ-Problems: Invalid Characters, Character Alignment Violations, Embedded Values, Meaningless Values, (False Values, Outdated Values, Imprecise Values)
SELECT ?i ?dqr WHERE { ?dqr a dqm:LegalValueRule . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:testedClass ?tclass . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . ?dqr dqm:referenceClass ?rclass . ?dqr dqm:referenceProperty ?rprop . ?rclass dqm:hasURI ?rclassvalue . ?rprop dqm:hasURI ?rpropvalue . BIND (smf:buildURI(?rpropvalue) AS ?rpropURI) . BIND (smf:buildURI(?rclassvalue) AS ?rclassURI) . ?i a ?tclassURI . ?i ?tpropURI ?value . OPTIONAL { ?s2 a ?rclassURI . ?s2 ?rpropURI ?value1 . FILTER (str(?value1) = str(?value)) . } . FILTER (!bound(?value1)) . }
Legal Value Range Rule
SELECT ?dqr ?i WHERE { ?dqr a dqm:LegalValueRangeRule . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:testedClass ?tclass . OPTIONAL{ ?dqr dqm:upperLimit ?upperLimit . } OPTIONAL{ ?dqr dqm:lowerLimit ?lowerLimit . } ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . ?i a ?tclassURI . ?i ?tpropURI ?value . FILTER (smf:cast(?value, xsd:float) > ?upperLimit || smf:cast(?value, xsd:float) < ?lowerLimit) . }
Syntax Rule
SELECT ?dqr ?regex ?i WHERE { ?dqr a dqm:SyntaxRule . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:testedClass ?tclass . ?dqr dqm:regex ?regex . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . OPTIONAL{ ?i a ?tclassURI . ?i ?tpropURI ?value . } FILTER (!regex(str(?value), ?regex)) . }
Conditional Syntax Rule
SELECT ?dqr ?regex ?i WHERE { ?dqr a dqm:ConditionalSyntaxRule . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:testedClass ?tclass . ?dqr dqm:regex ?regex . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . ?dqr dqm:hasCondition ?cond1 . ?cond1 dqm:conditionalProperty ?cprop . ?cprop dqm:hasURI ?cpropreal . ?cond1 dqm:equals ?condvalue . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . BIND (smf:buildURI(?cpropreal) AS ?cpropURI) . ?i a ?tclassURI . ?i ?cpropURI ?condvalueplain . ?i ?tpropURI ?value . FILTER (str(?condvalue) = str(?condvalueplain) && !regex(str(?value), ?regex)) . }
Semantic Accuracy Reports
Functional Dependency Rule (2 AND Conditions)
SELECT ?dqr ?i ?dvaluereal ?value WHERE { ?dqr a dqm:FunctionalDependencyRule . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:testedClass ?tclass . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . ?dqr dqm:hasCondition ?cond1 . ?cond1 dqm:conditionalProperty ?cprop1 . ?cprop1 dqm:hasURI ?cpropreal1 . ?cond1 dqm:equals ?condvalue1 . ?cond1 dqm:and ?cond2 . ?cond2 dqm:conditionalProperty ?cprop2 . ?cprop2 dqm:hasURI ?cpropreal2 . ?cond2 dqm:equals ?condvalue2 . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . BIND (smf:buildURI(?cpropreal1) AS ?cpropURI1) . BIND (smf:buildURI(?cpropreal2) AS ?cpropURI2) . ?i a ?tclassURI . ?i ?cpropURI1 ?condvalue1 . ?i ?cpropURI2 ?condvalue2 . ?dqr dqm:hasDependentValue ?dvalue . ?dvalue dqm:equals ?dvaluereal . ?i ?tpropURI ?value . FILTER (str(?dvaluereal) != str(?value)) . }
Uniqueness Reports
Duplicate Instance Rule
SELECT ?dqr ?i WHERE { ?dqr a dqm:DuplicateInstanceRule . ?dqr dqm:testedClass ?tclass . ?dqr dqm:testedProperty ?tprop . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (IRI(str(?tpropreal)) AS ?tpropURI) . BIND (IRI(str(?tclassreal)) AS ?tclassURI) . ?i a ?tclassURI . ?i ?tpropURI ?value . ?i2 ?tpropURI ?value2 . FILTER(?i!=?i2 && str(?value) = str(?value2)) } GROUP BY ?dqr ?i
Timeliness Reports
Expiry Rule
SELECT ?dqr ?i ?expiry ?today WHERE { ?dqr a dqm:ExpiryRule . ?dqr dqm:testedClass ?tclass . ?dqr dqm:testedProperty ?tprop . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . LET(?today:=afn:now()) . ?i a ?tclassURI . ?i ?tpropURI ?expiry . FILTER(?expiry<?today) }
Update Rule
SELECT ?dqr ?i ?timestamp WHERE { ?dqr a dqm:UpdateRule . ?dqr dqm:testedClass ?tclass . ?dqr dqm:testedProperty ?tprop . ?dqr dqm:expectedUpdateInterval ?duration . ?tclass dqm:hasURI ?tclassreal . ?tprop dqm:hasURI ?tpropreal . BIND (smf:buildURI(?tpropreal) AS ?tpropURI) . BIND (smf:buildURI(?tclassreal) AS ?tclassURI) . ?i a ?tclassURI . ?i ?tpropURI ?timestamp . LET(?expectedUpdate:=dqf:requiredTimestamp(?duration)) FILTER(?expectedUpdate>?timestamp) }