310 likes | 424 Views
Motivation. Dynamically identify and understand information sources Provide interoperability between agents in a semantic manner Enable distributed extensible network of ontologies Current tools such as HTML, XML not sufficient to express semantics, relationships between classes.
E N D
Motivation • Dynamically identify and understand information sources • Provide interoperability between agents in a semantic manner • Enable distributed extensible network of ontologies • Current tools such as HTML, XML not sufficient to express semantics, relationships between classes
DAML+OIL <-> RDF • DAML+OIL ontology is a set of RDF statements • http://www.daml.org/2001/03/daml+oil.daml • Ontology can actually include arbitrary RDF statements • RDF schema uses XML syntax, but could theoretically use any other syntax
XML • Makes use of tags just like HTML, but arbitrary <aTag>...</aTag> <anEmptyTag/> <anotherTag with="an attribute">...</anotherTag> <aTag>with <anemptyTag/> inside it</aTag> <tags>and<moreTags>and<yetmoreTags>and...</yetmoreTags></moreTags></tags> • Tags can be defined semantically in a DTD
RDF • RDF document is a collection of assertions in subject verb object (SVO) form Within the obligatory RDF declaration (typically a tag that begins something like <rdf:RDF ...), each topmost element is the subject of a sentence. The next level of enclosed elements represent verb/object pairs for this sentence: <Class ID="Male"> <subClassOf resource="#Animal"/> </Class> Male is a subclass of Animal.
<Class ID="Female"> <subClassOf resource="#Animal"/> <disjointWith resource="#Male"/> </Class> Female is a subclass of Animal AND Female is disjoint from Male. The single subject -- Female -- is used to begin each of the verb-object assertions <subClassOf resource="#Animal"/> and <disjointWith resource="#Male"/>
Basic RDF object types • Resources • All things being described by RDF expressions • Identified by URI plus optional anchor id • E.g., <disjointWith resource="#Male"/> • Properties • A specific aspect, characteristic, attribute, or relation used to describe a resource • has a specific meaning, defines its permitted values, the types of resources it can describe, and its relationship with other properties
Basic RDF object types cont. • Statements • A specific resource together with a named property plus the value of that property for that resource is an RDF statement • Called the subject, the predicate, and the object • property value can be another resource or it can be a literal(string or other primitive data type) • http://www.w3.org/RDF/
Simple Example • Ora Lassila is the creator of the resource http://www.w3.org/Home/Lassila <rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#” xmlns:s="http://description.org/schema/"> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description> </rdf:RDF>
Simple Example cont.1 • Now, consider the case that we want to say something more about the characteristics of the creator of this resource. In prose, such a sentence would be: The individual whose name is Ora Lassila, email <lassila@w3.org>, is the creator of http://www.w3.org/Home/Lassila. The intention of this sentence is to make the value of the Creator property a structured entity. In RDF such an entity is represented as another resource. The sentence above does not give a name to that resource; it is anonymous, so in the diagram below we represent it with an empty oval:
Simple Example cont.2 The structured entity of the previous example can also be assigned a unique identifier. To continue the example, imagine that an employee id is used as the unique identifier for a "person" resource. The URIs that serve as the unique keys for each employee (as defined by the organization) might then be something like http://www.w3.org/staffId/85740. Now we can write the two sentences: The individual referred to by employee id 85740 is named Ora Lassila and has the email address lassila@w3.org. The resource http://www.w3.org/Home/Lassila was created by this individual.
Abbreviated Syntax Form 1 • Usable for properties that are not repeated within a description and where the values of those properties are literals • the properties may be written as XML attributes <rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila" s:Creator="Ora Lassila" /> </rdf:RDF> • Side effect: might be viewed differently in browser
Abbreviated Syntax Form 2 • Works for nested Description elements <rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator rdf:resource="http://www.w3.org/staffId/85740"/> </rdf:Description> <rdf:Description about="http://www.w3.org/staffId/85740"> <v:Name>Ora Lassila</v:Name> <v:Email>lassila@w3.org</v:Email> </rdf:Description> </rdf:RDF> equal to <rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator rdf:resource="http://www.w3.org/staffId/85740" v:Name="Ora Lassila" v:Email="lassila@w3.org" /> </rdf:Description> </rdf:RDF>
Abbreviated Syntax Form 3 • description element containing a type property <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator> <rdf:Description about="http://www.w3.org/staffId/85740"> <rdf:type resource="http://description.org/schema/Person"/> <v:Name>Ora Lassila</v:Name> <v:Email>lassila@w3.org</v:Email> </rdf:Description> </s:Creator> </rdf:Description> equal to <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator> <s:Person about="http://www.w3.org/staffId/85740"> <v:Name>Ora Lassila</v:Name> <v:Email>lassila@w3.org</v:Email> </s:Person> </s:Creator> </rdf:Description>
Basic Serialization Syntax Basic RDF serialization syntax takes the form: [1] RDF ::= ['<rdf:RDF>'] description* ['</rdf:RDF>'] [2] description ::= '<rdf:Description' idAboutAttr? '>' propertyElt* '</rdf:Description>' [3] idAboutAttr ::= idAttr | aboutAttr [4] aboutAttr ::= 'about="' URI-reference '"' [5] idAttr ::= 'ID="' IDsymbol '"' [6] propertyElt ::= '<' propName '>' value '</' propName '>' | '<' propName resourceAttr '/>' [7] propName ::= Qname [8] value ::= description | string [9] resourceAttr ::= 'resource="' URI-reference '"' [10] Qname ::= [ NSprefix ':' ] name [11] URI-reference ::= string, interpreted per [URI] [12] IDsymbol ::= (any legal XML name symbol) [13] name ::= (any legal XML name symbol) [14] NSprefix ::= (any legal XML namespace prefix) [15] string ::= (any XML text, with "<", ">", and "&" escaped)
RDF/XML Ora Lassila is the creator of the resource http://www.w3.org/Home/Lassila. is represented in RDF/XML as: <rdf:RDF> <rdf:Description about="http://www.w3.org/Home/Lassila"> <s:Creator>Ora Lassila</s:Creator> </rdf:Description> </rdf:RDF>
RDF schema • Different from XML DTD: syntax vs. semantics • Defines Class, Property, subClassOf, subPropertyOf, domain, range, and some others • http://www.w3.org/TR/rdf-schema/http://www.w3.org/TR/REC-rdf-syntax/
Why RDF Is Not Enough • Only range/domain constraints on properties (need others) • No properties of properties (unique, transitive, inverse, etc.) • No equivalence, disjointness, etc. • No necessary and sufficient conditions (for class membership) • No defined semantics
DAML basics • Setting up the namespaces <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:daml=http://www.daml.org/2000/12/daml+oil# xmlns =“http://www.daml.org/2000/12/daml+oil-ex#”
DAML basics cont.1 • Assert an ontology <daml:Ontology rdf:about=“”> <daml:versionInfo>$Id: daml+oil-ex.daml,v 1.4 2001/01/11 20:33:52 mdean Exp $</daml:versionInfo> <rdfs:comment> An example ontology </rdfs:comment> <daml:imports rdf:resource=“http://www.daml.org/2000/12/daml+oil/> </daml:Ontology>
DAML basics cont.2 • Define classes <rdfs:Class rdf:ID="Animal"> <rdfs:label>Animal</rdfs:label> <rdfs:comment> This class of animals is illustrative of a number of ontological idioms. </rdfs:comment> </rdfs:Class> <rdfs:Class rdf:ID="Male"> <rdfs:subClassOf rdf:resource="#Animal"/> </rdfs:Class>
DAML basics cont.3 • Define classes • <rdfs:Class rdf:ID="Female"> <rdfs:subClassOf rdf:resource="#Animal"/> <daml:disjointWith rdf:resource="#Male"/> </rdfs:Class> <rdfs:Class rdf:ID="Man"> <rdfs:subClassOf rdf:resource="#Person"/> <rdfs:subClassOf rdf:resource="#Male"/> </rdfs:Class>
DAML basics cont.4 • Define properties • <rdf:Property rdf:ID="hasParent"> • <rdfs:domain rdf:resource="#Animal"/> <rdfs:range rdf:resource="#Animal"/> </rdf:Property> • <rdf:Property rdf:ID="hasFather"> <rdfs:subPropertyOf rdf:resource="#hasParent"/> <rdfs:range rdf:resource="#Male"/> </rdf:Property>
DAML basics cont.5 • Define restrictions <rdfs:Class rdf:ID="Person"> <rdfs:subClassOf rdf:resource="#Animal"/> <rdfs:subClassOf> <daml:Restriction>scope difference <daml:onProperty rdf:resource="#hasParent"/> <daml:toClass rdf:resource="#Person"/> </daml:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <daml:Restriction daml:cardinality="1"> <daml:onProperty rdf:resource="#hasFather"/> </daml:Restriction> </rdfs:subClassOf> </rdfs:Class>
DAML basics cont.6 About tag <rdfs:Class rdf:about="#Animal"> <rdfs:comment> Animals have exactly two parents, ie: If x is an animal, then it has exactly 2 parents (but it is NOT the case that anything that has 2 parents is an animal). </rdfs:comment> <rdfs:subClassOf> <daml:Restriction daml:cardinality="2"> <daml:onProperty rdf:resource="#hasParent"/> </daml:Restriction> </rdfs:subClassOf> </rdfs:Class>
DAML basics cont.7 • Max, min cardinality (min default=0) <rdfs:Class rdf:about="#Person"> <rdfs:subClassOf> <daml:Restriction daml:maxcardinality="1"> <daml:onProperty rdf:resource="#hasSpouse"/> </daml:Restriction> </rdfs:subClassOf> </rdfs:Class>
DAML basics cont.8 • UniqueProperty (cardinality=1), • Transitive <daml:UniqueProperty rdf:ID="hasMother"> <rdfs:subPropertyOf rdf:resource="#hasParent"/> <rdfs:range rdf:resource="#Female"/> </daml:UniqueProperty> <daml:TransitiveProperty rdf:ID="hasAncestor"> <rdfs:label>hasAncestor</rdfs:label> </daml:TransitiveProperty>
DAML basics cont.9 • one of <rdf:Property rdf:ID="hasHeight"> <rdfs:range rdf:resource="#Height"/> </rdf:Property> <rdfs:Class rdf:ID="Height"> <daml:oneOf rdf:parseType="daml:collection"> <Height rdf:ID="short"/> <Height rdf:ID="medium"/> <Height rdf:ID="tall"/> </daml:oneOf> </rdfs:Class>
DAML basics cont.10 • hasValue, intersectionOf <rdfs:Class rdf:ID="TallThing"> <daml:sameClassAs> <daml:Restriction> <daml:onProperty rdf:resource="#hasHeight"/> <daml:hasValue rdf:resource="#tall"/> </daml:Restriction> </daml:sameClassAs> </rdfs:Class> <rdfs:Class rdf:ID="TallMan"> <daml:intersectionOf rdf:parseType="daml:collection"> <rdfs:Class rdf:about="#TallThing"/> <rdfs:Class rdf:about="#Man"/> </daml:intersectionOf> </rdfs:Class>
DAML basics cont.11 • instances <Person rdf:ID="Adam"> <rdfs:label>Adam</rdfs:label> <rdfs:comment>Adam is a person. </rdfs:comment> <hasHeight rdf:resource=“#medium”/> </Person>