Data Quality Monitoring Reports (DEPRECATED) - SemWebQuality.org

Data Quality Monitoring Reports (DEPRECATED)

From SemWebQuality.org
(Difference between revisions)
Jump to: navigation, search
(Conditional Value Rule)
 
(55 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
'''<span style="color:red">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</span>'''
 +
 +
On this page you find [[Wikipedia:SPARQL|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 [http://purl.org/dqm-vocabulary/v1/dqm 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 [http://purl.org/dqm-vocabulary/v1/dqm DQM-Vocabulary].
 +
 +
 +
 +
__TOC__
 +
 
== Completeness Reports ==
 
== Completeness Reports ==
 
=== Conditional Value Rule ===
 
=== Conditional Value Rule ===
 
+
'''Addressed DQ-Problems:''' Missing Values
 
<syntaxhighlight lang="sparql">
 
<syntaxhighlight lang="sparql">
 
SELECT ?i ?condvalue
 
SELECT ?i ?condvalue
 
WHERE {
 
WHERE {
     ?dqr a dqm:ConditionalValueRule .
+
     ?dqr a ?ConditionalValueRule .
 
     ?dqr dqm:testedProperty ?tprop .
 
     ?dqr dqm:testedProperty ?tprop .
 
     ?dqr dqm:testedClass ?tclass .  
 
     ?dqr dqm:testedClass ?tclass .  
Line 21: Line 29:
 
     FILTER (str(?value) = str(?condvalue)) .
 
     FILTER (str(?value) = str(?condvalue)) .
 
     ?i ?tpropURI "" .
 
     ?i ?tpropURI "" .
 
 
  }
 
  }
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Conditional Property Rule ===
 
=== Conditional Property Rule ===
 
+
'''Addressed DQ-Problems:''' Missing Conceptual Elements
 
<syntaxhighlight lang="sparql">
 
<syntaxhighlight lang="sparql">
 
SELECT ?dqr ?i ?condvalue
 
SELECT ?dqr ?i ?condvalue
Line 51: Line 58:
  
 
=== Missing Value Rule ===
 
=== Missing Value Rule ===
 
+
'''Addressed DQ-Problems:''' Missing Values
 
<syntaxhighlight lang="sparql">
 
<syntaxhighlight lang="sparql">
 
SELECT ?i
 
SELECT ?i
Line 57: Line 64:
 
     ?dqr a dqm:MissingValueRule .
 
     ?dqr a dqm:MissingValueRule .
 
     ?dqr dqm:testedProperty ?tprop .
 
     ?dqr dqm:testedProperty ?tprop .
?dqr dqm:testedClass ?tclass .
+
    ?dqr dqm:testedClass ?tclass .
 
     ?tclass dqm:hasURI ?tclassreal .
 
     ?tclass dqm:hasURI ?tclassreal .
 
     ?tprop dqm:hasURI ?tpropreal .
 
     ?tprop dqm:hasURI ?tpropreal .
Line 68: Line 75:
  
 
=== Missing Property Rule ===
 
=== Missing Property Rule ===
 
+
'''Addressed DQ-Problems:''' Missing Conceptual Elements
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?i
 
SELECT ?i
 
WHERE {
 
WHERE {
Line 88: Line 95:
 
== Syntactical Accuracy Reports ==
 
== Syntactical Accuracy Reports ==
 
=== Legal Value Rule ===
 
=== Legal Value Rule ===
 
+
'''Addressed DQ-Problems:''' Invalid Characters, Character Alignment Violations, Embedded Values, Meaningless Values, (False Values, Outdated Values, Imprecise Values)
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?i ?dqr
 
SELECT ?i ?dqr
 
WHERE {
 
WHERE {
Line 118: Line 125:
 
=== Legal Value Range Rule ===
 
=== Legal Value Range Rule ===
  
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?dqr ?i
 
SELECT ?dqr ?i
 
WHERE {
 
WHERE {
Line 142: Line 149:
 
=== Syntax Rule ===
 
=== Syntax Rule ===
  
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?dqr ?regex ?i
 
SELECT ?dqr ?regex ?i
 
WHERE {
 
WHERE {
Line 163: Line 170:
 
=== Conditional Syntax Rule ===
 
=== Conditional Syntax Rule ===
  
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?dqr ?regex ?i
 
SELECT ?dqr ?regex ?i
 
WHERE {
 
WHERE {
Line 189: Line 196:
 
=== Functional Dependency Rule (2 AND Conditions) ===
 
=== Functional Dependency Rule (2 AND Conditions) ===
  
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?dqr ?i ?dvaluereal ?value
 
SELECT ?dqr ?i ?dvaluereal ?value
 
WHERE {
 
WHERE {
Line 222: Line 229:
 
=== Duplicate Instance Rule ===
 
=== Duplicate Instance Rule ===
  
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?dqr ?i
 
SELECT ?dqr ?i
 
WHERE {
 
WHERE {
Line 230: Line 237:
 
     ?tclass dqm:hasURI ?tclassreal .     
 
     ?tclass dqm:hasURI ?tclassreal .     
 
     ?tprop dqm:hasURI ?tpropreal .
 
     ?tprop dqm:hasURI ?tpropreal .
     BIND (smf:buildURI(?tpropreal) AS ?tpropURI) .
+
     BIND (IRI(str(?tpropreal)) AS ?tpropURI) .
     BIND (smf:buildURI(?tclassreal) AS ?tclassURI) .
+
     BIND (IRI(str(?tclassreal)) AS ?tclassURI) .
 
     ?i a ?tclassURI .
 
     ?i a ?tclassURI .
 
     ?i ?tpropURI ?value .
 
     ?i ?tpropURI ?value .
Line 243: Line 250:
 
=== Expiry Rule ===
 
=== Expiry Rule ===
  
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?dqr ?i ?expiry ?today
 
SELECT ?dqr ?i ?expiry ?today
 
WHERE {
 
WHERE {
Line 251: Line 258:
 
     ?tclass dqm:hasURI ?tclassreal .     
 
     ?tclass dqm:hasURI ?tclassreal .     
 
     ?tprop dqm:hasURI ?tpropreal .
 
     ?tprop dqm:hasURI ?tpropreal .
     BIND (smf:buildURI(?tpropreal) AS ?tpropURI) .
+
     BIND (IRI(str(?tpropreal)) AS ?tpropURI) .
     BIND (smf:buildURI(?tclassreal) AS ?tclassURI) .
+
     BIND (IRI(str(?tclassreal)) AS ?tclassURI) .
 
     LET(?today:=afn:now()) .
 
     LET(?today:=afn:now()) .
 
     ?i a ?tclassURI .
 
     ?i a ?tclassURI .
Line 262: Line 269:
 
=== Update Rule ===
 
=== Update Rule ===
  
<syntaxhighlight lang="sql">
+
<syntaxhighlight lang="sparql">
 
SELECT ?dqr ?i ?timestamp
 
SELECT ?dqr ?i ?timestamp
 
WHERE {
 
WHERE {
Line 271: Line 278:
 
     ?tclass dqm:hasURI ?tclassreal .     
 
     ?tclass dqm:hasURI ?tclassreal .     
 
     ?tprop dqm:hasURI ?tpropreal .
 
     ?tprop dqm:hasURI ?tpropreal .
     BIND (smf:buildURI(?tpropreal) AS ?tpropURI) .
+
     BIND (IRI(str(?tpropreal)) AS ?tpropURI) .
     BIND (smf:buildURI(?tclassreal) AS ?tclassURI) .
+
     BIND (IRI(str(?tclassreal)) AS ?tclassURI) .
 
     ?i a ?tclassURI .
 
     ?i a ?tclassURI .
 
     ?i ?tpropURI ?timestamp .
 
     ?i ?tpropURI ?timestamp .

Latest revision as of 20:56, 20 October 2011

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 (IRI(str(?tpropreal)) AS ?tpropURI) .
    BIND (IRI(str(?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 (IRI(str(?tpropreal)) AS ?tpropURI) .
    BIND (IRI(str(?tclassreal)) AS ?tclassURI) .
    ?i a ?tclassURI .
    ?i ?tpropURI ?timestamp .
    LET(?expectedUpdate:=dqf:requiredTimestamp(?duration))
    FILTER(?expectedUpdate>?timestamp)
}
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox