"Any medium powerful enough to extend man's reach is powerful enough to topple his world. To get the medium's magic to work for one's aims rather than against them is to attain literacy."
-- Alan Kay, "Computer Software", Scientific American, September 1984
"So, this one time, at vocamp..." -- guessing at an Inference Confidence ontology
0
0So, last weekend, I went to VoCamp-DC. Was great to meet twitter-friends Lin and Kendall and see the very cool digs of Clark & Parsia. More importantly, I got to be in some long and intense conversations about ontology development. The mix of experience, knowledge, backgrounds, and perspectives was a huge part of what made the event such as success for me, personally. I learned an awful lot about things that had long been very fuzzy in my brain. Having all those practitioners together helped me start to get a handle on the things that I'd learned from Semantic Web for the Working Ontologist. It will be well worth it for me to now go back and reread lots of it.
0This post was actually intended to be the second of two posts about the experience. The post I intended first was going to be about some details about what I learned, how I'm rethinking vocabularies and/versus ontologies, and the like. But, as all writing teachers know, writing is also an act of learning about the topic, and I find that each time I start to write it, I'm learning more and having to redo and rethink the entire post anew. So I hope that one will be coming soon.
0The upshot was that that intended first post was going to build up to the potential messiness of linked open data, especially in light of the open world assumption, and how that relates to curating linked open data for a particular use. I'd like to know in advance how 'clean' a dataset is against the vocabularies in which the data is expressed. And so I'm trying to exercise a little of what I learned by taking a stab at an ontology to do that.
0I should say that, so far, I've really done very little with worrying about consistency and inference on datasets, so I might be completely off my rocker with this. If so, I hope someone will whack me on the nose with the newspaper of enlightenment. But fear of exposing my ignorance hasn't stopped me before, so here goes: an Inference Confidence Ontology. It defines 3 classes, 5 properties, and 2 Individuals
Classes
- InferenceConfidence
- A description of the results of applying a reasoner to a dataset and ontology.
- ConfidenceLevel
- A statement of how confident you are about the results of such an inference.
- Reasoner
- A reasoner or inference engine.
Properties
- confidenceLevel
- The ConfidenceLevel for the subject InferenceConfidence
- dataset
- The dataset for the subject InferenceConfidence
- reasoner
- The reasoner for the subject InferenceConfidence
- schema
- The schema for the subject InferenceConfidence
- statement
- A human-readable statement about the subject InferenceConfidence
Individuals of ConfidenceLevel
- Consistent
- It works
- NotConsistent
- I don't work
0Here it is in turtle, with some quick examples. You can download the OWL below.
#################################################################
#
# Object Properties
#
#################################################################
### http://www.ravendesk.org/inference#confidenceLevel
:confidenceLevel rdf:type owl:ObjectProperty ;
rdfs:label "confidenceLevel" ;
rdfs:comment "A level of confidence about the results of pushing the subject's dataset and schema through the reasoner" ;
rdfs:domain [ rdf:type owl:Restriction ;
owl:onProperty :confidenceLevel ;
owl:onClass :InferenceConfidence ;
owl:cardinality "1"^^xsd:nonNegativeInteger
] ;
rdfs:range [ rdf:type owl:Restriction ;
owl:onProperty :confidenceLevel ;
owl:onClass :ConfidenceLevel ;
owl:cardinality "1"^^xsd:nonNegativeInteger
] .
### http://www.ravendesk.org/inference#dataset
:dataset rdf:type owl:ObjectProperty ;
rdfs:label "dataset" ;
rdfs:comment "The dataset of the subject InferenceConfidence." ;
rdfs:domain [ rdf:type owl:Restriction ;
owl:onProperty :dataset ;
owl:onClass :InferenceConfidence ;
owl:cardinality "1"^^xsd:nonNegativeInteger
] ;
rdfs:range [ rdf:type owl:Restriction ;
owl:onProperty :dataset ;
owl:onClass void:Dataset ;
owl:cardinality "1"^^xsd:nonNegativeInteger
] .
### http://www.ravendesk.org/inference#reasoner
:reasoner rdf:type owl:ObjectProperty ;
rdfs:label "reasoner" ;
rdfs:comment "The reasoner of the subject InferenceConfidence" ;
rdfs:domain [ rdf:type owl:Restriction ;
owl:onProperty :reasoner ;
owl:onClass :InferenceConfidence ;
owl:cardinality "1"^^xsd:nonNegativeInteger
] ;
rdfs:range [ rdf:type owl:Restriction ;
owl:onProperty :reasoner ;
owl:onClass :Reasoner ;
owl:cardinality "1"^^xsd:nonNegativeInteger
] .
### http://www.ravendesk.org/inference#schema
:schema rdf:type owl:ObjectProperty ;
rdfs:label "schema/vocabulary/ontology" ;
rdfs:comment "The schema or vocabulary or ontology of the subject InferenceConfidence";
rdfs:domain [ rdf:type owl:Restriction ;
owl:onProperty :schema ;
owl:onClass :InferenceConfidence ;
owl:cardinality "1"^^xsd:nonNegativeInteger
] ;
rdfs:range [ rdf:type owl:Restriction ;
owl:onProperty :schema ;
owl:onClass owl:Ontology ;
owl:cardinality "1"^^xsd:nonNegativeInteger
] .
#################################################################
#
# Data properties
#
#################################################################
### http://www.ravendesk.org/inference#statement
:statement rdf:type owl:DatatypeProperty ;
rdfs:label "statement" ;
rdfs:comment "A human readable statement describing the results of doing the inference. Especially useful for describing the nature of failures, if any." ;
rdfs:domain :InferenceConfidence ;
rdfs:range xsd:string .
#################################################################
#
# Classes
#
#################################################################
### http://www.ravendesk.org/inference#ConfidenceLevel
:ConfidenceLevel rdf:type owl:Class ;
rdfs:label "ConfidenceLevel" ;
rdfs:subClassOf owl:Thing .
### http://www.ravendesk.org/inference#InferenceConfidence
:InferenceConfidence rdf:type owl:Class ;
rdfs:comment "A statement about the confidence in the results of applying a reasoner to a dataset and a schema, vocabulary, or ontology";
rdfs:label "InferenceConfidence" ;
rdfs:subClassOf owl:Thing .
### http://www.ravendesk.org/inference#Reasoner
:Reasoner rdf:type owl:Class ;
rdfs:comment "A reasoner or inference engine.";
rdfs:label "Reasoner" ;
rdfs:subClassOf owl:Thing .
#################################################################
#
# Individuals
#
#################################################################
### http://www.ravendesk.org/inference#Consistent
:Consistent rdf:type :ConfidenceLevel ;
rdfs:comment "The reasoner reports the dataset and ontology are consistent";
rdfs:label "Consistent" .
### http://www.ravendesk.org/inference#NotConsistent
:NotConsistent rdf:type :ConfidenceLevel ;
rdfs:comment "The reasoner reports inconsistency";
rdfs:label "notConsistent" .
#################################################################
#
# General axioms
#
#################################################################
[ rdf:type owl:AllDifferent ;
owl:distinctMembers ( :NotConsistent
:Consistent
)
] .
### Generated by the OWL API (version 2.2.1.962) http://owlapi.sourceforge.net
## Basic example 1
ex:data a void:Dataset .
<http://clarkparsia.com/pellet#this> a inf:Reasoner ;
foaf:page <http://clarkparsia.com/pellet> .
ex:dataReport a inf:InferenceConfidence ;
dcterms:creator ex:me ;
dcterms:date "2009-05-01";
inf:dataset ex:data ;
inf:schema foaf: ;
inf:reasoner <http://clarkparsia.com/pellet#this> ;
inf:statement "All good in the hood!" ;
inf:confidenceLevel inf:Consistent .
## Basic example 2
ex:data a void:Dataset .
<http://clarkparsia.com/pellet#this> a inf:Reasoner ;
foaf:page <http://clarkparsia.com/pellet> .
ex:dataReport a inf:InferenceConfidence ;
dcterms:creator ex:me ;
dcterms:date "2009-05-01";
inf:dataset ex:data ;
inf:schema sioc: ;
inf:reasoner <http://clarkparsia.com/pellet#this> ;
inf:statement "It looks like the dataset has misused the sioc:User class where it should have foaf:Agent." ;
inf:confidenceLevel inf:NotConsistent .
## creating a new inf:ConfidenceLevel
myvocab:EpicFail a inf:ConfidenceLevel ;
rdfs:label "Epic Fail!";
rdfs:comment "You have to try really hard to screw up a data set this badly!" .
| Attachment | Size |
|---|---|
| inference.owl | 7.17 KB |

Comments
Post new comment