In one of my previous posts I mentioned the question “what do you gain from having the instance data present and available for processing by semantic web tools?” The core idea is that this would simplify the detection of modeling errors and highlight domain misunderstandings, but I couldn’t be sure until I had tried it with data from a real system.
I’ve finally been able to review the results from one such system and have convinced myself that there it is useful.
A bit of context-- doing this in a way that I considered valid required data from of a system that I understood well. The best available system was an “art submissions” application that tracks available artwork and its attributes.
The data was extracted using my rdf_rails utility which generate RDF and OWL files from a RoR application
After trying this out for a bit, I have come to the conclusion there is utility here.
The utility can be best demonstrated with a simple example (all examples are in RacerPro, see my previous post)
(retrieve (?x ) (and (?x Artwork) (neg (?x shipable-art)) (neg (?x unshipable-art))))*
This query retrieves all artworks that are neither shippable nor unshippable.
Since the shippable-art & unshippable-art concepts were intended completely cover the Artworks category, any non-null result indicates either an error in domain modeling/understanding or data cleanliness, either of which should be detected prior to rolling out the model and the application that embodies it.
I admit that dichotomous coverings are a simple case but think that it clearly demonstrates the value of the approach.
While on the topic of semantic web tools it would be remiss of me to not mention the swtools spreadsheet at which is a handy and thorough catalog of available semantic web tools
Published by Michael K. Bergman
* Note from the RacerPro documentation neg is a unary constructor, the negation as failure (NAF) negation. The argument is
a query body.
The concepts shippable-art and unshippable-art are defined as follows”
(or (boolean= Artwork_framed #T)
(some Artwork_weight_pounds (<> racer-internal%has-real-value 10) )
(some Artwork_width_inches (> racer-internal%has-real-value 10) )
(some Artwork_height_inches (> racer-internal%has-real-value 10) )
(some Artwork_depth_inches (> racer-internal%has-real-value 10) )