Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

Implemented Hygiene tests:

No Untyped references

Any reference to a URI in any context other than as the object of an annotation property must have a type triple for that URI. https://github.com/edmcouncil/fibo/blob/master/etc/testing/hygiene/testHygiene1.sq 

Crossing domains / ranges

If one property is a sub of another, then the domains (respectively ranges) should not be subClasses in the opposite direction. https://github.com/edmcouncil/fibo/blob/master/etc/testing/hygiene/testHygiene2.sq

 https://github.com/edmcouncil/fibo/blob/master/etc/testing/hygiene/testHygiene3.sq

Labels and Definitions

Every Class and Property defined in FIBO must have an rdfs:label and a skos:definition https://github.com/edmcouncil/fibo/blob/master/etc/testing/hygiene/testHygiene4.sq

Ontology Metadata

Every Ontology defined in FIBO must have a rdfs:label, sm:copyright, dct:license, dct:abstract https://github.com/edmcouncil/fibo/blob/master/etc/testing/hygiene/testHygiene5.sq 

Proposed Hygiene tests:

Definition Format

The definition is made up of one or more full sentences, beginning with an upper case letter and ending with a period. 

Annotations Conventions

Do not use rdfs:Comment for anything. Here is a SPARQL query to catch them. I found two, so this is no big deal.

SELECT ?Resource ?Type ?Comment 
WHERE { ?Resource rdf:type ?Type .
?Resource rdfs:comment ?Comment. 
FILTER(?Type in (owl:Class, owl:DatatypeProperty,owl:ObjectProperty ))
FILTER(!(STRSTARTS(STR(?Resource), # ignore things in owl namespace
"http://www.w3.org/2002/07/owl#") ))
FILTER(!(STRSTARTS(STR(?Resource), # ignore things in skos namespace
"http://www.w3.org/2004/02/skos/core#") ))
}
ORDER BY ?Type ?Resource

No Unused Imports

Do not import an ontology unless something in it is explicitly referenced.

Here is some pseudo-SPARQL which assumes we've used the nQuads - not sure of the graph selection syntax

SELECT ?Importer ?UnusedImported
WHERE (?Importer a owl:Ontology.
?Importer owl:imports ?UnusedImported.
?ImportedElement rdfs:isDefinedBy ?UnusedImported.
FILTER NOT EXISTS {
    GRAPH ?g {?Importer a owl:Ontology  # select the named graph containing the triple defining the ontology 
                      ?x ?p ?ImportedElement. # check to see if an imported element is the object of a triple in this graph 
              }
    }}

No Unsatisfied References

Any resource referenced should be explicitly declared.

Here is some SPARQL which should be run without inferencing.

    SELECT ?source ?property ?ref
WHERE {?property a owl:ObjectProperty.
?source ?property ?ref.
FILTER NOT EXISTS{?ref rdf:type ?t}
}
              

 


    





  • No labels