| I believe that with 3.0 (and in particular SPIN) the user community has now many more possibilities to enhance the tools, and to contribute some of this back to the community. The new constraint checking button (and Problems View) can be used to run arbitrary SPARQL queries, either globally or in the scope of certain classes only. Most of the ontology clean-up and best practices tests sound global. I had started a small "seed" project to collect some of those patterns, and it even made it into the beta1 release as spinowl.owl. This file defines closed-world constraint checks such as testing min/max cardinality constraints. Anyone interested in how this would work should have a look at this file (also attached). This is very much untested but it would be easy to add tests for patterns such as untyped properties. For example: CONSTRUCT { _:b0 a spin:ConstraintViolation . _:b0 rdfs:label ?label . _:b0 spin:violationRoot ?s . _:b0 spin:violationPath ?p . } WHERE { ?s ?p ?o . FILTER (isURI(?s)) . OPTIONAL { ?p a ?type } . FILTER (!bound(?type)) . LET (?label := smf:buildString("Untyped property in triple {?s}, {?p}, {?o}")) . } creates constraint violations for each triple in which the predicate ?p has no rdf:type triple. Being based on SPARQL such an approach will most likely have better performance than running DL inference engines, and it can be fine tuned to the right (closed world) semantics. I have no time for such a project at this stage but I would appreciate contributions. I will certainly add more convenient support for using such libraries even without importing them, but in the meantime the Problems View can be used to run such constraint tests if a file such as spinowl.owl is imported. Holger |
spinowl.owl
Description: Binary data
On Jan 26, 2009, at 7:07 PM, James A Miller wrote:
|
