#
# KEHOME/xml/owl.ku
# Feb/8/2007
# Jun/10/2008 no "i:" for attributes
# OWL Web Ontology Language Reference
# W3C Working Draft 31 March 2003
# This version:
# http://www.w3.org/TR/2003/WD-owl-ref-20030331/
# some corrections from
# Editor's Draft document May 12, 2003
xmlns:owl := "http://www.w3.org/2002/07/owl";
xmlns:rdfxs := "http://www.w3.org/2000/10/XMLSchema#nonNegativeInteger";
#============================================================#
# from Appendix B: RDF Schema of OWL
Ontology has rdf:about="",
versionInfo="March 18. 2003, GS",
imports rdf:resource="http://www.w3.org/2000/01/rdf-schema"/,
dc:title="Classes and properties for the Web Ontology Language OWL",
dc:creator="W3C Web Ontology (WebOnt) Working Group",
dc:subject="OWL; Web Ontology Language; Semantic Web",
dc:description=" This file specifies in RDF Schema format the\n
built-in classes and properties that together form the basis of\n
the RDF/XML syntax of OWL Full, OWL DL and OWL Lite with the help\n
of RDF Schema. We do not expect people to import this file\n
explicitly into their ontology. People that do import this file\n
should expect their ontology to be an OWL Full ontology.\n
",
dc:publisher="W3C",
dc:date="2003-02-10",
dc:format="text/xml",
dc:language="en",
dc:identifier="http://www.w3.org/2002/07/owl"
;
#============================================================#
# from Appendix C: OWL Quick Reference
sameAs is sameIndividualAs;
# Classes defined by OWL: rdfs:Class
ClassSet isu Set;
ClassSet isall
AllDifferent ,
Class ,
DatatypeProperty ,
DeprecatedClass ,
DeprecatedProperty ,
FunctionalProperty ,
InverseFunctionalProperty ,
Nothing ,
ObjectProperty ,
Ontology ,
OntologyProperty ,
Restriction ,
SymmetricProperty ,
Thing ;
# Properties defined by OWL: Property domain range
OWL Properties iss relation with
automatic = none,
format = [Property:1, domain:2, range:3],
meaning = {
$1 iss Property;
$1 has domain = $2;
$1 has range = $3;
$2 has $1;
};
begin relation OWL Properties;
allValuesFrom,Restriction,Class;
backwardCompatibleWith,Ontology,Ontology;
cardinality,Restriction,xsd:nonNegativeInteger;
complementOf,Class,Class;
differentFrom,Thing,Thing;
disjointWith,Class,Class;
distinctMembers,AllDifferent,List;
equivalentClass,Class,Class;
equivalentProperty,Property,Property;
imports,Ontology,Ontology; # corrected
incompatibleWith,Ontology,Ontology;
intersectionOf,Class,List;
inverseOf,ObjectProperty,ObjectProperty;
maxCardinality,Restriction,xsd:nonNegativeInteger;
minCardinality,Restriction,xsd:nonNegativeInteger;
oneOf,Class,List;
onProperty,Restriction,Property;
priorVersion,Ontology,Ontology;
sameAs,Thing,Thing;
sameIndividualAs,Thing,Thing;
someValuesFrom,Restriction,Class;
unionOf,Class,List;
end relation OWL Properties;
# Properties with no domain,range
Property isg
OntologyProperty;
Property isg
hasValue, # no range
versionInfo; # no domain or range
hasValue has domain = Restriction;
Restriction has hasValue;
#============================================================#
#============================================================#
# MKR statements
# OWL identities
#===============
Class ismem ClassSet;
Resource is Thing;
##existent is Thing;
##entity is Class;
##characteristic is Property;
##proposition isg Statement;
##nonexistent is Nothing;
# OWL hierarchy
#==============
begin hierarchy owlhi;
Property;
/ AnnotationProperty;
/ DatatypeProperty;
/ FunctionalProperty;
// InverseFunctionalProperty;
/ ObjectProperty;
// TransitiveProperty;
// SymmetricProperty;
/ OntologyProperty;
Class;
/ xsd:nonNegativeInteger;
end hierarchy owlhi;
begin hierarchy owlprim;
Property;
/ versionInfo;
/ imports;
/ allValuesFrom;
/ hasValue;
/ someValuesFrom;
/ cardinality;
/ minCardinality;
/ maxCardinality;
/ onProperty;
Property;
/ equivalentClass; # subject is object ???
/ equivalentProperty; # subject is object ???
/ sameAs; # subject is object
/ sameIndividualAs; # subject is object
/ inverseOf; # subject rel inverseOf=object
/ disjointWith; # subject rel disjointWith=object
/ differentFrom; # subject not is object
/ oneOf; # subject isany object
/ unionOf; # subject isor object
// disjointUnionOf;# subject isxor object
/ intersectionOf; # subject isand object
/ complementOf; # subject isnot object
AnnotationProperty;
/ label;
/ comment;
/ seeAlso;
/ isDefinedBy;
OntologyProperty;
/ imports;
/ priorVersion;
/ backwardCompatibleWith;
/ incompatibleWith;
end hierarchy owlprim;
imports
has chartype=action; # do import from source done;
versionInfo,
allValuesFrom,
hasValue,
someValuesFrom,
cardinality,
minCardinality,
maxCardinality,
onProperty
has chartype=attribute;
equivalentClass, # subject is object ???
equivalentProperty, # subject is object ???
sameAs, # subject is object
sameIndividualAs, # subject is object
inverseOf, # subject isinverse object
disjointWith, # subject disjointWith object
differentFrom, # subject not is object
oneOf, # subject isany object
unionOf, # subject isor object
disjointUnionOf, # subject isxor object
intersectionOf, # subject isand object
complementOf # subject is not object
has chartype=binary relation;
#============================================================#
# from old OWL Language Reference
# labels and comments
###
Class has
label="Class",
comment='The class of all "object" classes';
Datatype has
label="Datatype",
comment="The class of all datatype classes";
###
Thing has
label="Thing",
comment="\n
The most general (object) class in OWL.\n
This is equal to the union of any class and its complement.\n
";
nonexistent is Nothing ;
#### Thing isor
#### Nothing,
#### not Nothing;
Nothing has
label="Nothing",
comment="the class with no things in it.";
###
# X is Y
#####Thing has sameIndividualAs = Thing;
sameIndividualAs has
label="sameIndividualAs",
comment="for sameIndividualAs(a, b), read a is the same individual as b.";
# X xor Y
#####Class has disjointWith = Class;
disjointWith has
label="disjointWith",
comment="for disjointWith(X, Y) read: X and Y have no members in common.";
# X notis Y
#####Thing has differentFrom = Thing;
differentFrom has
label="differentFrom",
comment="for differentFrom(a, b), read a is not the same as b.";
# X isor Y,...
#####Class has unionOf = List;
unionOf has
label="unionOf",
comment="\n
for unionOf(X, Y) read: X is the union of the classes in the list Y;\n
i.e. if something is in any of the classes in Y, it's in X, and vice versa.\n
";
# X isxor Y,...
#####Class has disjointUnionOf = List;
disjointUnionOf has
domain=Class,
range=List,
label="disjointUnionOf",
comment="\n
for disjointUnionOf(X, Y) read: X is the disjoint union of the classes in\n
the list Y: (a) for any c1 and c2 in Y, disjointWith(c1, c2),\n
and (b) unionOf(X, Y). i.e. if something is in any of the classes in Y, it's\n
in X, and vice versa.\n
";
# X isand Y,...
#####Class has intersectionOf = List;
intersectionOf has
label="intersectionOf",
comment="\n
for intersectionOf(X, Y) read: X is the intersection of the classes in the list Y;\n
i.e. if something is in all the classes in Y, then it's in X, and vice versa.\n
";
# X is not Y
#####Class has complementOf = Class;
complementOf has
label="complementOf",
comment="\n
for complementOf(X, Y) read: X is the complement of Y; if something is in Y,\n
then it's not in X, and vice versa.\n
";
###
# X isany Y,...
#####Class has oneOf = List;
oneOf has
label="oneOf",
comment="\n
for oneOf(C, L) read everything in C is one of the\n
things in L;\n
This lets us define classes by enumerating the members.\n
";
###
Restriction has
onProperty = Property,
allValuesFrom = Class,
hasValue,
someValuesFrom = Class;
Restriction has
label="Restriction",
comment="\n
something is in the class R if it satisfies the attached restrictions,\n
and vice versa.\n
";
onProperty has
label="onProperty",
comment="\n
for onProperty(R, P), read:\n
R is a restricted with respect to property P.\n
";
allValuesFrom has
label="allValuesFrom",
comment="\n
for onProperty(R, P) and allValuesFrom(R, X), read:\n
i is in class R if and only if for all j, P(i, j) implies type(j, X).\n
";
hasValue has
label="hasValue",
comment="\n
for onProperty(R, P) and hasValue(R, V), read:\n
i is in class R if and only if P(i, V).\n
";
someValuesFrom has
label="someValuesFrom",
comment="\n
for onProperty(R, P) and someValuesFrom(R, X), read:\n
i is in class R if and only if for some j, P(i, j) and type(j, X).\n
";
###
###
Restriction has
minCardinality = xsd:nonNegativeInteger,
maxCardinality = xsd:nonNegativeInteger,
cardinality = xsd:nonNegativeInteger;
minCardinality has
label="minCardinality",
comment="\n
for onProperty(R, P) and minCardinality(R, n), read:\n
i is in class R if and only if there are at least n distinct j with P(i, j).\n
";
maxCardinality has
label="maxCardinality",
comment="\n
for onProperty(R, P) and maxCardinality(R, n), read:\n
i is in class R if and only if there are at most n distinct j with P(i, j).\n
";
cardinality has
label="cardinality",
comment="\n
for onProperty(R, P) and cardinality(R, n), read:\n
i is in class R if and only if there are exactly n distinct j with P(i, j).\n
";
###
Property isg
ObjectProperty,
DatatypeProperty,
FunctionalProperty,
InverseFunctionalProperty;
ObjectProperty isg
TransitiveProperty,
SymmetricProperty,
InverseFunctionalProperty;
ObjectProperty has
label="ObjectProperty",
comment="if P is an ObjectProperty, and P(x, y), then y is an object.";
DatatypeProperty has
label="DatatypeProperty",
comment="if P is a DatatypeProperty, and P(x, y), then y is a data value.";
#####ObjectProperty has inverseOf = ObjectProperty;
inverseOf has
label="inverseOf",
comment="\n
for inverseOf(R, S) read: R is the inverse of S; i.e.\n
if R(x, y) then S(y, x) and vice versa.\n
";
TransitiveProperty has
label="TransitiveProperty",
comment="if P is a TransitiveProperty, then if P(x, y) and P(y, z) then P(x, z).";
SymmetricProperty has
label="SymmetricProperty",
comment="if P is a SymmetricProperty, then if P(x, y) then P(y, x).";
FunctionalProperty has
label="FunctionalProperty",
comment="\n
compare with maxCardinality=1; e.g. integer successor:\n
if P is a FunctionalProperty, then if P(x, y) and P(x, z) then y=z.\n
";
InverseFunctionalProperty has
label="InverseFunctionalProperty",
comment="\n
if P is an InverseFunctionalProperty, then if P(x, y) and P(z, y) then x=z.\n
aka injective. e.g. if firstBorne(m, Susan)\n
and firstBorne(n, Susan) then m and n are the same.\n
";
###
Ontology has
label="Ontology",
comment="\n
An Ontology is a document that describes\n
a vocabulary of terms for communication between\n
(human and) automated agents.\n
",
versionInfo,
imports;
versionInfo has
label="versionInfo",
comment="\n
generally, a string giving information about this\n
version; e.g. RCS/CVS keywords\n
";
###
imports has
label="imports",
comment="\n
for imports(X, Y) read: X imports Y;\n
i.e. X asserts the* contents of Y by reference;\n
i.e. if imports(X, Y) and you believe X and Y says something,\n
then you should believe it.\n
";
###
#