- From: Drew McDermott <drew.mcdermott@yale.edu>
- Date: Tue, 11 Nov 2003 16:16:18 -0500 (EST)
- To: public-sws-ig@frink.w3.org
[Monika Solanki] Would <drs:And> be the top-level element? I guess this says that the atoms are to be treated in conjunction, do we have something on top of all this that classifies it as a formula? Yes, the DRS ontology, which states that Ands are a subclass of Connective_formulas, which are a subclass of Formulas. I append the latest, OWL-compatible, version of the ontology because it really isn't that long. I haven't validated this, and it might have a couple of bugs, because I haven't fully grokked how "parseType=Collection" works in OWL. I really should send out an updated version of the DRS overview to include Burstein-style atomic formulas plus influences from OWL Rules. -- Drew <rdf:RDF xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns ="http://www.w3.org/2002/07/owl#" xmlns:xsd ="http://www.w3.org/2000/10/XMLSchema#" xmlns:drs ="http://www.cs.yale.edu/~dvm/daml/drsonto.owl#" > <Ontology rdf:about=""> <rdfs:comment> This ontology describes formulas in logical languages. </rdfs:comment> </Ontology> <Class rdf:ID="Type"/> <Class rdf:ID="Function"/> <Class rdf:ID="Prop"> <rdfs:comment> The class of Propositions </rdfs:comment> </Class> <ObjectProperty rdf:ID="FunctionDomain"> <rdfs:domain resource="#Function"/> <rdfs:range resource="http://www.w3.org/2002/07/owl#Thing"/> </ObjectProperty> <ObjectProperty rdf:ID="FunctionRange"> <rdfs:domain resource="#Function"/> <rdfs:range resource="http://www.w3.org/2002/07/owl#Thing"/> </ObjectProperty> <Class rdf:ID="Predicate"> <rdfs:subClassOf rdf:resource="#Function"/> <rdfs:subClassOf> <Restriction> <onProperty resource="#FunctionRange"/> <toClass resource="#Prop"/> </Restriction> </rdfs:subClassOf> </Class> <Class rdf:ID="Term"/> <!-- Every resource can be a term, but we don't try to say that; it sounds too dangerous, since everything is a resource. --> <Class rdf:ID="Var"> <rdfs:subClassOf rdf:resource="#Term"/> </Class> <Class rdf:ID="Literal"> <rdfs:subClassOf rdf:resource="#Term"/> </Class> <ObjectProperty rdf:ID="declare"> <rdfs:domain resource="#Type"/> </ObjectProperty> <Class rdf:ID="Formula"> <rdfs:subClassOf rdf:resource="#Term"/> <rdfs:subClassOf> <Restriction> <onProperty rdf:resource="#declare"/> <allValuesFrom rdf:resource="#Prop"/> </Restriction> </rdfs:subClassOf> </Class> <Class rdf:ID="Functional_term"> <rdfs:subClassOf rdf:resource="#Term"/> </Class> <ObjectProperty rdf:ID="term_function"> <rdfs:domain rdf:resource="#Functional_term"/> <rdfs:range rdf:resource="#Function"/> </ObjectProperty> <rdfs:Class rdf:ID="Term_seq"> <rdfs:subClassOf rdf:resource="&rdf;List"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&rdf;first"/> <owl:allValuesFrom rdf:resource="#Term"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&rdf;rest"/> <owl:allValuesFrom rdf:resource="#Term_Seq"/> </owl:Restriction> </rdfs:subClassOf> </rdfs:Class> <rdfs:Class rdf:ID="Var_seq"> <rdfs:subClassOf rdf:resource="&rdf;Term_seq"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&rdf;first"/> <owl:allValuesFrom rdf:resource="#Var"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&rdf;rest"/> <owl:allValuesFrom rdf:resource="#Var_seq"/> </owl:Restriction> </rdfs:subClassOf> </rdfs:Class> <ObjectProperty rdf:ID="term_args"> <rdfs:domain rdf:resource="#Functional_term"/> <rdfs:range rdf:resource="#Term_seq"/> </ObjectProperty> <Class rdf:ID="Binder"> <rdfs:subClassOf rdf:resource="#Formula"/> </Class> <Class rdf:ID="Atomic_formula"> <intersectionOf rdf:parseType="daml:collection"> <Class rdf:about="#Formula"/> <Class rdf:about="#Functional_term"/> <Restriction> <onProperty rdf:resource="#term_function"/> <toClass rdf:resource="#Predicate"/> </Restriction> <Restriction> <onProperty rdf:resource="pred"/> <toClass rdf:resource="#Predicate"/> </Restriction> </intersectionOf> </Class> <!-- There are two ways to describe any atomic formula, as a functional term or as a triple. We'd like to say that the args = cons(subj, obj), but that's presumably hopeless --> <ObjectProperty rdf:about="rdf:predicate"> <rdfs:domain rdf:resource="#Atomic_formula"/> <rdfs:range rdf:resource="#Predicate"/> </ObjectProperty> <ObjectProperty rdf:about="rdf:subject"> <rdfs:domain rdf:resource="#Atomic_formula"/> </ObjectProperty> <ObjectProperty rdf:about="rdf:object"> <rdfs:domain rdf:resource="#Atomic_formula"/> <rdfs:range rdf:resource="#Term_seq"/> </ObjectProperty> <Class rdf:ID="Function_skeleton"> <rdfs:subClassOf rdf:resource="#Functional_term"/> <rdfs:subClassOf> <Restriction> <onProperty rdf:resource="#term_args"/> <allValuesFrom rdf:resource="#Var_seq"/> </Restriction> </rdfs:subClassOf> </Class> <Class rdf:ID="Predicate_skeleton"> <intersectionOf rdf:parseType="daml:collection"> <Class rdf:about="#Atomic_formula"/> <Class rdf:about="#Function_skeleton"/> </intersectionOf> </Class> <Class rdf:ID="Connective_formula"> <rdfs:subClassOf rdf:resource="#Formula"/> </Class> <ObjectProperty rdf:ID="conn_args"> <rdfs:domain rdf:resource="#Connective_formula"/> <rdfs:range rdf:resource="#Term_seq"/> </ObjectProperty> <Class rdf:ID="And"> <rdfs:subClassOf rdf:resource="#Connective_formula"/> </Class> <Class rdf:ID="Or"> <rdfs:subClassOf rdf:resource="#Connective_formula"/> </Class> <Class rdf:ID="Not"> <rdfs:subClassOf rdf:resource="#Connective_formula"/> </Class> <ObjectProperty rdf:ID="negated"> <rdfs:domain rdf:resource="#Not"/> <rdfs:range rdf:resource="#Formula"/> </ObjectProperty> <Class rdf:ID="Implies"> <rdfs:subClassOf rdf:resource="#Connective_formula"/> </Class> <!-- The following are labels for the two conn_args of Implies --> <ObjectProperty rdf:ID="antecedent"> <rdfs:domain rdf:resource="#Implies"/> <rdfs:range rdf:resource="#Formula"/> </ObjectProperty> <ObjectProperty rdf:ID="consequent"> <rdfs:domain rdf:resource="#Implies"/> <rdfs:range rdf:resource="#Formula"/> </ObjectProperty> <ObjectProperty rdf:ID="declaration"> <rdfs:domain rdf:resource="#Function"/> <rdfs:range rdf:resource="#Function_skeleton"/> </ObjectProperty> <DatatypeProperty rdf:ID="value"> <rdfs:domain rdf:resource="#Literal"/> <!-- range can be any XSD datatype --> </DatatypeProperty> <!-- type restriction: If a term is a Literal and is declared of type Y, then the 'value' should be a literal of type Y. Can this be expressed in OWL? --> <!-- There's nothing to say about Null --> <rdf:Description rdf:about="http://www.cs.yale.edu/~dvm/daml/drsonto.daml#Null"/> <ObjectProperty ID="type"> <rdfs:comment>Identifies the Class of a resource</rdfs:comment> </ObjectProperty> <Class rdf:ID="Constant"> <rdfs:domain rdf:resource="#Term"/> </Class> <Class rdf:ID="Constant_bag"> <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"/> <rdfs:subClassOf> <Restriction> <onProperty rdf:resource="http://www.w3.org/2002/07/owl#item"/> <toClass rdf:resource="#Constant"/> </Restriction> </rdfs:subClassOf> </Class> <Class rdf:ID="Var_bag"> <rdfs:comment> Bag of Vars </rdfs:comment> <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"/> <rdfs:subClassOf> <Restriction> <onProperty rdf:resource="http://www.w3.org/2002/07/owl#item"/> <toClass rdf:resource="#Var"/> </Restriction> </rdfs:subClassOf> </Class> <Class rdf:ID="Atomic_formula_bag"> <rdfs:comment> The list of Atomic formula </rdfs:comment> <rdfs:subClassOf rdf:resource="#Term_Bag"/> <rdfs:subClassOf> <Restriction> <onProperty rdf:resource="http://www.w3.org/2002/07/owl#item"/> <toClass rdf:resource="#Atomic_formula"/> </Restriction> </rdfs:subClassOf> </Class> <Class rdf:ID="Term_bag"> <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"/> <rdfs:subClassOf> <Restriction> <onProperty rdf:resource="http://www.w3.org/2002/07/owl#item"/> <toClass rdf:resource="#Term"/> </Restriction> </rdfs:subClassOf> </Class> <Class rdf:ID="Forall"> <rdfs:subClassOf rdf:resource="#Binder"/> </Class> <Class rdf:ID="Exists"> <rdfs:subClassOf rdf:resource="#Binder"/> </Class> <ObjectProperty rdf:ID="bound_vars"> <rdfs:domain rdf:resource="#Binder"/> <rdfs:range rdf:resource="#Var_bag"/> </ObjectProperty> <ObjectProperty rdf:ID="body"> <rdfs:domain rdf:resource="#Binder"/> <rdfs:range rdf:resource="#Formula"/> </ObjectProperty> </rdf:RDF> -- -- Drew McDermott Yale Computer Science Department
Received on Tuesday, 11 November 2003 16:16:20 UTC