Data Quality Assessment Reports

From SemWebQuality.org
(Difference between revisions)
Jump to: navigation, search
(Completeness)
(Uniqueness in Depth)
Line 48: Line 48:
  
 
==Uniqueness in Depth==
 
==Uniqueness in Depth==
 +
SELECT ?dqr ?tclassURI ?tpropURI ((COUNT(?i)/2) AS ?violations) (COUNT(?i3) AS ?total)
 +
(((?total - ?violations)/?total) AS ?uniquenessDepth)
 +
WHERE {
 +
{
 +
    ?dqr a dqm:UniqueValueRule .
 +
    ?dqr dqm:testedClass ?tclass .
 +
    ?dqr dqm:testedProperty1 ?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 ?uniqueValue1 .
 +
    ?i2 ?tpropURI ?uniqueValue2 .
 +
    FILTER(?i!=?i2 && (str(?uniqueValue1) = str(?uniqueValue2)))
 +
}UNION{
 +
    ?dqr a dqm:UniqueValueRule .
 +
    ?dqr dqm:testedClass ?tclass .
 +
    ?dqr dqm:testedProperty1 ?tprop .
 +
    ?tclass dqm:hasURI ?tclassreal .
 +
    ?tprop dqm:hasURI ?tpropreal .
 +
    BIND (IRI(str(?tpropreal)) AS ?tpropURI) .
 +
    BIND (IRI(str(?tclassreal)) AS ?tclassURI) .
 +
    ?i3 a ?tclassURI .
 +
    }
 +
}GROUP BY ?dqr ?tclassURI ?tpropURI
  
 
==Syntactic Accuracy==
 
==Syntactic Accuracy==

Revision as of 17:08, 17 October 2011

Data Quality Scores can be used to get a quick impression about the quality state of a data source. Below you can find queries that can calculate data quality scores based on previously defined data requirements.

Contents

Completeness

Scenario: Calculate the completeness of a property based on the ratio of all instances of a class and instances that miss a specific property or property value.
Input: All property completeness rules (in OWL DL Design)
Output: Completeness Scores per Property Completeness Requirement
SELECT ?dqr ?tclassURI ?tpropURI (COUNT(?s) AS ?violations) (COUNT(?s2) AS ?total)
(((?total - ?violations)/?total) AS ?completeness)
WHERE {
{
    ?dqr a dqm:PropertyCompletenessRule .
    ?dqr dqm:testedClass ?tclass .
    ?dqr dqm:testedProperty1 ?tprop .
    ?dqr dqm:requiredValue "true"^^xsd:boolean .
    ?dqr dqm:requiredProperty "true"^^xsd:boolean .
    ?tclass dqm:hasURI ?tclassreal .
    ?tprop dqm:hasURI ?tpropreal .
    BIND (IRI(str(?tpropreal)) AS ?tpropURI) .
    BIND (IRI(str(?tclassreal)) AS ?tclassURI) .
    {    
        ?s a ?tclassURI .
        NOT EXISTS{
           ?s ?tpropURI ?value .
        }
    }UNION{
        ?s a ?tclassURI .
        ?s ?tpropURI "" .
    }
}UNION{
    ?dqr a dqm:PropertyCompletenessRule .
    ?dqr dqm:testedClass ?tclass .
    ?dqr dqm:testedProperty1 ?tprop .
    ?dqr dqm:requiredValue "true"^^xsd:boolean .
    ?dqr dqm:requiredProperty "true"^^xsd:boolean .
    ?tclass dqm:hasURI ?tclassreal .
    ?tprop dqm:hasURI ?tpropreal .
    BIND (IRI(str(?tpropreal)) AS ?tpropURI) .
    BIND (IRI(str(?tclassreal)) AS ?tclassURI) .
    ?s2 a ?tclassURI .
            } 
}GROUP BY ?dqr ?tclassURI ?tpropURI

Uniqueness in Depth

SELECT ?dqr ?tclassURI ?tpropURI ((COUNT(?i)/2) AS ?violations) (COUNT(?i3) AS ?total) (((?total - ?violations)/?total) AS ?uniquenessDepth) WHERE { {

   ?dqr a dqm:UniqueValueRule .
   ?dqr dqm:testedClass ?tclass .
   ?dqr dqm:testedProperty1 ?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 ?uniqueValue1 .
   ?i2 ?tpropURI ?uniqueValue2 .
   FILTER(?i!=?i2 && (str(?uniqueValue1) = str(?uniqueValue2)))

}UNION{

   ?dqr a dqm:UniqueValueRule .
   ?dqr dqm:testedClass ?tclass .
   ?dqr dqm:testedProperty1 ?tprop .
   ?tclass dqm:hasURI ?tclassreal .
   ?tprop dqm:hasURI ?tpropreal .
   BIND (IRI(str(?tpropreal)) AS ?tpropURI) .
   BIND (IRI(str(?tclassreal)) AS ?tclassURI) .
   ?i3 a ?tclassURI .
    } 

}GROUP BY ?dqr ?tclassURI ?tpropURI

Syntactic Accuracy

Semantic Accuracy

Timliness

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox