SPARQL(SPARQL Protocol and RDF Query language)
SPARQL은 그래프 구조로 되어있는 RDF에서 정보를 취하기 위한 언어이
다. SPaRQL은 RDF 구조에서 모든 하위 구조를 검색하여 정보를 취득하고 새로
운 RDF 문장을 RDF 문서에 삽입할 수 도 있다.
현재 W3C에서는 사실상의 표준으로 SPARQL을 권고하고 있으며, 표현력
에 있어서도 여타 온톨로지 질의 언어에 비하여 우수하다.
from : http://blog.naver.com/elcajuny?Redirect=Log&logNo=150019812236


SPARQL Query Language Spec
http://www.w3.org/TR/rdf-sparql-query/

시맨틱 웹의 새로운 변화 - GRDDL, RDFa, SPARQL
http://blog.naver.com/jeonghj66?Redirect=Log&logNo=140038064614

Search RDF data with SPARQL
SPARQL and the Jena Toolkit open up the semantic Web
http://www.ibm.com/developerworks/xml/library/j-sparql/

Ontology Mapping with SPARQL CONSTRUCT
http://composing-the-semantic-web.blogspot.com/2006/09/
ontology-mapping-with-sparql-construct.html


Introducing SPARQL: Querying the Semantic Web
http://www.xml.com/pub/a/2005/11/16/
introducing-sparql-querying-semantic-web-tutorial.html

SPARQL Tutorial
http://jena.sourceforge.net/ARQ/Tutorial/

SPARQLer - An RDF Query Demo
http://www.sparql.org/query.html

Some implementations of SPARQL
http://esw.w3.org/topic/SparqlImplementations

SPARQL Implementations
http://realimageforu.blogspot.com/2006/09/sparql-implementations.html


Posted by ukmie
,

RDF 문서

software 2007. 8. 1. 17:34
W3C 의 RDF 문서(SPEC , set of six)
Primer
Concepts
Syntax
Semantics
Vocabulary
Test Cases

An Introduction to RDF and the Jena RDF API (RDF 입문서로 추천!!)
http://jena.sourceforge.net/tutorial/RDF_API/index.html


Posted by ukmie
,

원문: http://www.w3.org/TR/owl-features/


OWL Web Ontology Language
Overview

W3C Recommendation 10 February 2004

This version:
http://www.w3.org/TR/2004/REC-owl-features-20040210/
Latest version:
http://www.w3.org/TR/owl-features/
Previous version:
http://www.w3.org/TR/2003/PR-owl-features-20031215/
Editors:
Deborah L. McGuinness (Knowledge Systems Laboratory, Stanford University) d l m at k s l dot stanford dot edu
Frank van Harmelen (Vrije Universiteit, Amsterdam) Frank.van.Harmelen@cs.vu.nl

Please refer to the errata for this document, which may include some normative corrections.

See also translations.


Abstract

The OWL Web Ontology Language is designed for use by applications that need to process the content of information instead of just presenting information to humans. OWL facilitates greater machine interpretability of Web content than that supported by XML, RDF, and RDF Schema (RDF-S) by providing additional vocabulary along with a formal semantics. OWL has three increasingly-expressive sublanguages: OWL Lite, OWL DL, and OWL Full.

This document is written for readers who want a first impression of the capabilities of OWL. It provides an introduction to OWL by informally describing the features of each of the sublanguages of OWL. Some knowledge of RDF Schema is useful for understanding this document, but not essential. After this document, interested readers may turn to the OWL Guide for more detailed descriptions and extensive examples on the features of OWL. The normative formal definition of OWL can be found in the OWL Semantics and Abstract Syntax.

Status of this document

This document has been reviewed by W3C Members and other interested parties, and it has been endorsed by the Director as a W3C Recommendation. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.

This is one of six parts of the W3C Recommendation for OWL, the Web Ontology Language. It has been developed by the Web Ontology Working Group as part of the W3C Semantic Web Activity (Activity Statement, Group Charter) for publication on 10 February 2004.

The design of OWL expressed in earlier versions of these documents has been widely reviewed and satisfies the Working Group's technical requirements. The Working Group has addressed all comments received, making changes as necessary. Changes to this document since the Proposed Recommendation version are detailed in the change log.

Comments are welcome at public-webont-comments@w3.org (archive) and general discussion of related technology is welcome at www-rdf-logic@w3.org (archive).

A list of implementations is available.

The W3C maintains a list of any patent disclosures related to this work.

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.


Table of contents

  1. Introduction
    1. Document Roadmap
    2. Why OWL?
    3. The three sublanguages of OWL
    4. The structure of this document
  2. Language Synopsis
    1. OWL Lite Synopsis
    2. OWL DL and OWL Full Synopsis
  3. Language Description of OWL Lite
    1. OWL Lite RDF Schema Features
    2. OWL Lite Equality and Inequality
    3. OWL Lite Property Characteristics
    4. OWL Lite Property Restrictions
    5. OWL Lite Restricted Cardinality
    6. OWL Lite Class Intersection
    7. OWL Datatypes
    8. OWL Lite Header Information
    9. OWL Lite Annotation Properties
    10. OWL Lite Versioning
  4. Incremental Language Description of OWL DL and OWL Full
  5. Summary

  6. References
  7. Acknowledgements
  8. Change Log

1. Introduction

This document describes the OWL Web Ontology Language. OWL is intended to be used when the information contained in documents needs to be processed by applications, as opposed to situations where the content only needs to be presented to humans. OWL can be used to explicitly represent the meaning of terms in vocabularies and the relationships between those terms. This representation of terms and their interrelationships is called an ontology. OWL has more facilities for expressing meaning and semantics than XML, RDF, and RDF-S, and thus OWL goes beyond these languages in its ability to represent machine interpretable content on the Web. OWL is a revision of the DAML+OIL web ontology language incorporating lessons learned from the design and application of DAML+OIL.

1.1 Document Roadmap

The OWL Language is described by a set of documents, each fulfilling a different purpose, and catering to a different audience. The following provides a brief roadmap for navigating through this set of documents:

  • This OWL Overview gives a simple introduction to OWL by providing a language feature listing with very brief feature descriptions;
  • The OWL Guide demonstrates the use of the OWL language by providing an extended example. It also provides a glossary of the terminology used in these documents;
  • The OWL Reference gives a systematic and compact (but still informally stated) description of all the modelling primitives of OWL;
  • The OWL Semantics and Abstract Syntax document is the final and formally stated normative definition of the language;
  • The OWL Web Ontology Language Test Cases document contains a large set of test cases for the language;
  • The OWL Use Cases and Requirements document contains a set of use cases for a web ontology language and compiles a set of requirements for OWL.
The suggested reading order of the first four documents is as given since they have been listed in increasing degree of technical content. The last two documents complete the documentation set.

1.2 Why OWL?

The Semantic Web is a vision for the future of the Web in which information is given explicit meaning, making it easier for machines to automatically process and integrate information available on the Web. The Semantic Web will build on XML's ability to define customized tagging schemes and RDF's flexible approach to representing data. The first level above RDF required for the Semantic Web is an ontology language what can formally describe the meaning of terminology used in Web documents. If machines are expected to perform useful reasoning tasks on these documents, the language must go beyond the basic semantics of RDF Schema. The OWL Use Cases and Requirements Document provides more details on ontologies, motivates the need for a Web Ontology Language in terms of six use cases, and formulates design goals, requirements and objectives for OWL.

OWL has been designed to meet this need for a Web Ontology Language. OWL is part of the growing stack of W3C recommendations related to the Semantic Web.

  • XML provides a surface syntax for structured documents, but imposes no semantic constraints on the meaning of these documents.

  • XML Schema is a language for restricting the structure of XML documents and also extends XML with datatypes.

  • RDF is a datamodel for objects ("resources") and relations between them, provides a simple semantics for this datamodel, and these datamodels can be represented in an XML syntax.

  • RDF Schema is a vocabulary for describing properties and classes of RDF resources, with a semantics for generalization-hierarchies of such properties and classes.

  • OWL adds more vocabulary for describing properties and classes: among others, relations between classes (e.g. disjointness), cardinality (e.g. "exactly one"), equality, richer typing of properties, characteristics of properties (e.g. symmetry), and enumerated classes.

1.3 The three sublanguages of OWL

OWL provides three increasingly expressive sublanguages designed for use by specific communities of implementers and users.

  • OWL Lite supports those users primarily needing a classification hierarchy and simple constraints. For example, while it supports cardinality constraints, it only permits cardinality values of 0 or 1. It should be simpler to provide tool support for OWL Lite than its more expressive relatives, and OWL Lite provides a quick migration path for thesauri and other taxonomies. Owl Lite also has a lower formal complexity than OWL DL, see the section on OWL Lite in the OWL Reference for further details.

  • OWL DL supports those users who want the maximum expressiveness while retaining computational completeness (all conclusions are guaranteed to be computable) and decidability (all computations will finish in finite time). OWL DL includes all OWL language constructs, but they can be used only under certain restrictions (for example, while a class may be a subclass of many classes, a class cannot be an instance of another class). OWL DL is so named due to its correspondence with description logics, a field of research that has studied the logics that form the formal foundation of OWL.

  • OWL Full is meant for users who want maximum expressiveness and the syntactic freedom of RDF with no computational guarantees. For example, in OWL Full a class can be treated simultaneously as a collection of individuals and as an individual in its own right. OWL Full allows an ontology to augment the meaning of the pre-defined (RDF or OWL) vocabulary. It is unlikely that any reasoning software will be able to support complete reasoning for every feature of OWL Full.

Each of these sublanguages is an extension of its simpler predecessor, both in what can be legally expressed and in what can be validly concluded. The following set of relations hold. Their inverses do not.

  • Every legal OWL Lite ontology is a legal OWL DL ontology.
  • Every legal OWL DL ontology is a legal OWL Full ontology.
  • Every valid OWL Lite conclusion is a valid OWL DL conclusion.
  • Every valid OWL DL conclusion is a valid OWL Full conclusion.

Ontology developers adopting OWL should consider which sublanguage best suits their needs. The choice between OWL Lite and OWL DL depends on the extent to which users require the more-expressive constructs provided by OWL DL. The choice between OWL DL and OWL Full mainly depends on the extent to which users require the meta-modeling facilities of RDF Schema (e.g. defining classes of classes, or attaching properties to classes). When using OWL Full as compared to OWL DL, reasoning support is less predictable since complete OWL Full implementations do not currently exist.

OWL Full can be viewed as an extension of RDF, while OWL Lite and OWL DL can be viewed as extensions of a restricted view of RDF. Every OWL (Lite, DL, Full) document is an RDF document, and every RDF document is an OWL Full document, but only some RDF documents will be a legal OWL Lite or OWL DL document. Because of this, some care has to be taken when a user wants to migrate an RDF document to OWL. When the expressiveness of OWL DL or OWL Lite is deemed appropriate, some precautions have to be taken to ensure that the original RDF document complies with the additional constraints imposed by OWL DL and OWL Lite. Among others, every URI that is used as a class name must be explicitly asserted to be of type owl:Class (and similarly for properties), every individual must be asserted to belong to at least one class (even if only owl:Thing), the URI's used for classes, properties and individuals must be mutually disjoint. The details of these and other constraints on OWL DL and OWL Lite are explained in appendix E of the OWL Reference.

1.4 The structure of this document

This document first describes the features in OWL Lite, followed by a description of the features that are added in OWL DL and OWL Full (OWL DL and OWL Full contain the same features, but OWL Full is more liberal about how these features can be combined).

2. Language Synopsis

This section provides a quick index to all the language features for OWL Lite, OWL DL, and OWL Full.

In this document, italicized terms are terms in OWL. Prefixes of rdf: or rdfs: are used when terms are already present in RDF or RDF Schema. Otherwise terms are introduced by OWL. Thus, the term rdfs:subPropertyOf indicates that subPropertyOf is already in the rdfs vocabulary (technically : the rdfs namespace). Also, the term Class is more precisely stated as owl:Class and is a term introduced by OWL.

2.1 OWL Lite Synopsis

The list of OWL Lite language constructs is given below.

RDF Schema Features: (In)Equality: Property Characteristics:
Property Restrictions: Restricted Cardinality: Header Information:
Class Intersection: Versioning: Annotation Properties:
Datatypes

2.2 OWL DL and Full Synopsis

The list of OWL DL and OWL Full language constructs that are in addition to or expand those of OWL Lite is given below.

Class Axioms: Boolean Combinations of Class Expressions:
Arbitrary Cardinality: Filler Information:

3. Language Description of OWL Lite

This section provides an informal description of the OWL Lite language features. We do not discuss the specific syntax of these features (see the OWL Reference for definitions). Each language feature is hyperlinked to the appropriate place in the OWL Guide for more examples and guidance on usage.

OWL Lite uses only some of the OWL language features and has more limitations on the use of the features than OWL DL or OWL Full. For example, in OWL Lite classes can only be defined in terms of named superclasses (superclasses cannot be arbitrary expressions), and only certain kinds of class restrictions can be used. Equivalence between classes and subclass relationships between classes are also only allowed between named classes, and not between arbitrary class expressions. Similarly, restrictions in OWL Lite use only named classes. OWL Lite also has a limited notion of cardinality - the only cardinalities allowed to be explicitly stated are 0 or 1.

3.1 OWL Lite RDF Schema Features

The following OWL Lite features related to RDF Schema are included.

  • Class: A class defines a group of individuals that belong together because they share some properties. For example, Deborah and Frank are both members of the class Person. Classes can be organized in a specialization hierarchy using subClassOf. There is a built-in most general class named Thing that is the class of all individuals and is a superclass of all OWL classes. There is also a built-in most specific class named Nothing that is the class that has no instances and a subclass of all OWL classes.
  • rdfs:subClassOf: Class hierarchies may be created by making one or more statements that a class is a subclass of another class. For example, the class Person could be stated to be a subclass of the class Mammal. From this a reasoner can deduce that if an individual is a Person, then it is also a Mammal.
  • rdf:Property: Properties can be used to state relationships between individuals or from individuals to data values. Examples of properties include hasChild, hasRelative, hasSibling, and hasAge. The first three can be used to relate an instance of a class Person to another instance of the class Person (and are thus occurences of ObjectProperty), and the last (hasAge) can be used to relate an instance of the class Person to an instance of the datatype Integer (and is thus an occurence of DatatypeProperty). Both owl:ObjectProperty and owl:DatatypeProperty are subclasses of the RDF class rdf:Property.
  • rdfs:subPropertyOf: Property hierarchies may be created by making one or more statements that a property is a subproperty of one or more other properties. For example, hasSibling may be stated to be a subproperty of hasRelative. From this a reasoner can deduce that if an individual is related to another by the hasSibling property, then it is also related to the other by the hasRelative property.
  • rdfs:domain: A domain of a property limits the individuals to which the property can be applied. If a property relates an individual to another individual, and the property has a class as one of its domains, then the individual must belong to the class. For example, the property hasChild may be stated to have the domain of Mammal. From this a reasoner can deduce that if Frank hasChild Anna, then Frank must be a Mammal. Note that rdfs:domain is called a global restriction since the restriction is stated on the property and not just on the property when it is associated with a particular class. See the discussion below on property restrictions for more information.
  • rdfs:range: The range of a property limits the individuals that the property may have as its value. If a property relates an individual to another individual, and the property has a class as its range, then the other individual must belong to the range class. For example, the property hasChild may be stated to have the range of Mammal. From this a reasoner can deduce that if Louise is related to Deborah by the hasChild property, (i.e., Deborah is the child of Louise), then Deborah is a Mammal. Range is also a global restriction as is domain above. Again, see the discussion below on local restrictions (e.g. AllValuesFrom) for more information.
  • Individual : Individuals are instances of classes, and properties may be used to relate one individual to another. For example, an individual named Deborah may be described as an instance of the class Person and the property hasEmployer may be used to relate the individual Deborah to the individual StanfordUniversity.

3.2 OWL Lite Equality and Inequality

The following OWL Lite features are related to equality or inequality.
  • equivalentClass : Two classes may be stated to be equivalent. Equivalent classes have the same instances. Equality can be used to create synonymous classes. For example, Car can be stated to be equivalentClass to Automobile. From this a reasoner can deduce that any individual that is an instance of Car is also an instance of Automobile and vice versa.
  • equivalentProperty: Two properties may be stated to be equivalent. Equivalent properties relate one individual to the same set of other individuals. Equality may be used to create synonymous properties. For example, hasLeader may be stated to be the equivalentProperty to hasHead. From this a reasoner can deduce that if X is related to Y by the property hasLeader, X is also related to Y by the property hasHead and vice versa. A reasoner can also deduce that hasLeader is a subproperty of hasHead and hasHead is a subProperty of hasLeader.
  • sameAs: Two individuals may be stated to be the same. These constructs may be used to create a number of different names that refer to the same individual. For example, the individual Deborah may be stated to be the same individual as DeborahMcGuinness.
  • differentFrom: An individual may be stated to be different from other individuals. For example, the individual Frank may be stated to be different from the individuals Deborah and Jim. Thus, if the individuals Frank and Deborah are both values for a property that is stated to be functional (thus the property has at most one value), then there is a contradiction. Explicitly stating that individuals are different can be important in when using languages such as OWL (and RDF) that do not assume that individuals have one and only one name. For example, with no additional information, a reasoner will not deduce that Frank and Deborah refer to distinct individuals.
  • AllDifferent: A number of individuals may be stated to be mutually distinct in one AllDifferent statement. For example, Frank, Deborah, and Jim could be stated to be mutually distinct using the AllDifferent construct. Unlike the differentFrom statement above, this would also enforce that Jim and Deborah are distinct (not just that Frank is distinct from Deborah and Frank is distinct from Jim). The AllDifferent construct is particularly useful when there are sets of distinct objects and when modelers are interested in enforcing the unique names assumption within those sets of objects. It is used in conjunction with distinctMembers to state that all members of a list are distinct and pairwise disjoint.

3.3 OWL Lite Property Characteristics

There are special identifiers in OWL Lite that are used to provide information concerning properties and their values. The distinction between ObjectProperty and DatatypeProperty is mentioned above in the property description.
  • inverseOf: One property may be stated to be the inverse of another property. If the property P1 is stated to be the inverse of the property P2, then if X is related to Y by the P2 property, then Y is related to X by the P1 property. For example, if hasChild is the inverse of hasParent and Deborah hasParent Louise, then a reasoner can deduce that Louise hasChild Deborah.
  • TransitiveProperty: Properties may be stated to be transitive. If a property is transitive, then if the pair (x,y) is an instance of the transitive property P, and the pair (y,z) is an instance of P, then the pair (x,z) is also an instance of P. For example, if ancestor is stated to be transitive, and if Sara is an ancestor of Louise (i.e., (Sara,Louise) is an instance of the property ancestor) and Louise is an ancestor of Deborah (i.e., (Louise,Deborah) is an instance of the property ancestor), then a reasoner can deduce that Sara is an ancestor of Deborah (i.e., (Sara,Deborah) is an instance of the property ancestor).
    OWL Lite (and OWL DL) impose the side condition that transitive properties (and their superproperties) cannot have a maxCardinality 1 restriction. Without this side-condition, OWL Lite and OWL DL would become undecidable languages. See the property axiom section of the OWL Semantics and Abstract Syntax document for more information.
  • SymmetricProperty: Properties may be stated to be symmetric. If a property is symmetric, then if the pair (x,y) is an instance of the symmetric property P, then the pair (y,x) is also an instance of P. For example, friend may be stated to be a symmetric property. Then a reasoner that is given that Frank is a friend of Deborah can deduce that Deborah is a friend of Frank.
  • FunctionalProperty : Properties may be stated to have a unique value. If a property is a FunctionalProperty, then it has no more than one value for each individual (it may have no values for an individual). This characteristic has been referred to as having a unique property. FunctionalProperty is shorthand for stating that the property's minimum cardinality is zero and its maximum cardinality is 1. For example, hasPrimaryEmployer may be stated to be a FunctionalProperty. From this a reasoner may deduce that no individual may have more than one primary employer. This does not imply that every Person must have at least one primary employer however.
  • InverseFunctionalProperty: Properties may be stated to be inverse functional. If a property is inverse functional then the inverse of the property is functional. Thus the inverse of the property has at most one value for each individual. This characteristic has also been referred to as an unambiguous property. For example, hasUSSocialSecurityNumber (a unique identifier for United States residents) may be stated to be inverse functional (or unambiguous). The inverse of this property (which may be referred to as isTheSocialSecurityNumberFor) has at most one value for any individual in the class of social security numbers. Thus any one person's social security number is the only value for their isTheSocialSecurityNumberFor property. From this a reasoner can deduce that no two different individual instances of Person have the identical US Social Security Number. Also, a reasoner can deduce that if two instances of Person have the same social security number, then those two instances refer to the same individual.

3.4 OWL Lite Property Restrictions

OWL Lite allows restrictions to be placed on how properties can be used by instances of a class. These type (and the cardinality restrictions in the next subsection) are used within the context of an owl:Restriction. The owl:onProperty element indicates the restricted property. The following two restrictions limit which values can be used while the next section's restrictions limit how many values can be used.
  • allValuesFrom: The restriction allValuesFrom is stated on a property with respect to a class. It means that this property on this particular class has a local range restriction associated with it. Thus if an instance of the class is related by the property to a second individual, then the second individual can be inferred to be an instance of the local range restriction class. For example, the class Person may have a property called hasDaughter restricted to have allValuesFrom the class Woman. This means that if an individual person Louise is related by the property hasDaughter to the individual Deborah, then from this a reasoner can deduce that Deborah is an instance of the class Woman. This restriction allows the property hasDaughter to be used with other classes, such as the class Cat, and have an appropriate value restriction associated with the use of the property on that class. In this case, hasDaughter would have the local range restriction of Cat when associated with the class Cat and would have the local range restriction Person when associated with the class Person. Note that a reasoner can not deduce from an allValuesFrom restriction alone that there actually is at least one value for the property.
  • someValuesFrom: The restriction someValuesFrom is stated on a property with respect to a class. A particular class may have a restriction on a property that at least one value for that property is of a certain type. For example, the class SemanticWebPaper may have a someValuesFrom restriction on the hasKeyword property that states that some value for the hasKeyword property should be an instance of the class SemanticWebTopic. This allows for the option of having multiple keywords and as long as one or more is an instance of the class SemanticWebTopic, then the paper would be consistent with the someValuesFrom restriction. Unlike allValuesFrom, someValuesFrom does not restrict all the values of the property to be instances of the same class. If myPaper is an instance of the SemanticWebPaper class, then myPaper is related by the hasKeyword property to at least one instance of the SemanticWebTopic class. Note that a reasoner can not deduce (as it could with allValuesFrom restrictions) that all values of hasKeyword are instances of the SemanticWebTopic class

3.5 OWL Lite Restricted Cardinality

OWL Lite includes a limited form of cardinality restrictions. OWL (and OWL Lite) cardinality restrictions are referred to as local restrictions, since they are stated on properties with respect to a particular class. That is, the restrictions constrain the cardinality of that property on instances of that class. OWL Lite cardinality restrictions are limited because they only allow statements concerning cardinalities of value 0 or 1 (they do not allow arbitrary values for cardinality, as is the case in OWL DL and OWL Full).

  • minCardinality: Cardinality is stated on a property with respect to a particular class. If a minCardinality of 1 is stated on a property with respect to a class, then any instance of that class will be related to at least one individual by that property. This restriction is another way of saying that the property is required to have a value for all instances of the class. For example, the class Person would not have any minimum cardinality restrictions stated on a hasOffspring property since not all persons have offspring. The class Parent, however would have a minimum cardinality of 1 on the hasOffspring property. If a reasoner knows that Louise is a Person, then nothing can be deduced about a minimum cardinality for her hasOffspring property. Once it is discovered that Louise is an instance of Parent, then a reasoner can deduce that Louise is related to at least one individual by the hasOffspring property. From this information alone, a reasoner can not deduce any maximum number of offspring for individual instances of the class parent. In OWL Lite the only minimum cardinalities allowed are 0 or 1. A minimum cardinality of zero on a property just states (in the absence of any more specific information) that the property is optional with respect to a class. For example, the property hasOffspring may have a minimum cardinality of zero on the class Person (while it is stated to have the more specific information of minimum cardinality of one on the class Parent).
  • maxCardinality: Cardinality is stated on a property with respect to a particular class. If a maxCardinality of 1 is stated on a property with respect to a class, then any instance of that class will be related to at most one individual by that property. A maxCardinality 1 restriction is sometimes called a functional or unique property. For example, the property hasRegisteredVotingState on the class UnitedStatesCitizens may have a maximum cardinality of one (because people are only allowed to vote in only one state). From this a reasoner can deduce that individual instances of the class USCitizens may not be related to two or more distinct individuals through the hasRegisteredVotingState property. From a maximum cardinality one restriction alone, a reasoner can not deduce a minimum cardinality of 1. It may be useful to state that certain classes have no values for a particular property. For example, instances of the class UnmarriedPerson should not be related to any individuals by the property hasSpouse. This situation is represented by a maximum cardinality of zero on the hasSpouse property on the class UnmarriedPerson.
  • cardinality: Cardinality is provided as a convenience when it is useful to state that a property on a class has both minCardinality 0 and maxCardinality 0 or both minCardinality 1 and maxCardinality 1. For example, the class Person has exactly one value for the property hasBirthMother. From this a reasoner can deduce that no two distinct individual instances of the class Mother may be values for the hasBirthMother property of the same person.
Alternate namings for these restricted forms of cardinality were discussed. Current recommendations are to include any such names in a front end system. More on this topic is available on the publicly available webont mail archives with the most relevant message at http://lists.w3.org/Archives/Public/www-webont-wg/2002Oct/0063.html.

3.6 OWL Lite Class Intersection

OWL Lite contains an intersection constructor but limits its usage.
  • intersectionOf: OWL Lite allows intersections of named classes and restrictions. For example, the class EmployedPerson can be described as the intersectionOf Person and EmployedThings (which could be defined as things that have a minimum cardinality of 1 on the hasEmployer property). From this a reasoner may deduce that any particular EmployedPerson has at least one employer.

3.7 OWL Datatypes

OWL uses the RDF mechanisms for data values. See the OWL Guide section on datatypes for a more detailed description of the built-in OWL datatypes taken largely from the XML Schema datatypes.

3.8 OWL Lite Header Information

OWL Lite supports notions of ontology inclusion and relationships and attaching information to ontologies. See the OWL Reference for details and the OWL Guide for examples.

3.9 OWL Lite Annotation Properties

OWL Lite allows annotations on classes, properties, individuals and ontology headers. The use of these annotations is subject to certain restrictions. See the section on Annotations in the OWL Reference for details.

3.10 OWL Lite Versioning

RDF already has a small vocabulary for describing versioning information. OWL significantly extends this vocabulary. See the OWL Reference for further details.

4. Incremental Language Description of OWL DL and OWL Full

Both OWL DL and OWL Full use the same vocabulary although OWL DL is subject to some restrictions. Roughly, OWL DL requires type separation (a class can not also be an individual or property, a property can not also be an individual or class). This implies that restrictions cannot be applied to the language elements of OWL itself (something that is allowed in OWL Full). Furthermore, OWL DL requires that properties are either ObjectProperties or DatatypeProperties: DatatypeProperties are relations between instances of classes and RDF literals and XML Schema datatypes, while ObjectProperties are relations between instances of two classes. The OWL Semantics and Abstract Syntax document explains the distinctions and limitations. We describe the OWL DL and OWL Full vocabulary that extends the constructions of OWL Lite below.
  • oneOf: (enumerated classes): Classes can be described by enumeration of the individuals that make up the class. The members of the class are exactly the set of enumerated individuals; no more, no less. For example, the class of daysOfTheWeek can be described by simply enumerating the individuals Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday. From this a reasoner can deduce the maximum cardinality (7) of any property that has daysOfTheWeek as its allValuesFrom restriction.
  • hasValue: (property values): A property can be required to have a certain individual as a value (also sometimes referred to as property values). For example, instances of the class of dutchCitizens can be characterized as those people that have theNetherlands as a value of their nationality. (The nationality value, theNetherlands, is an instance of the class of Nationalities).
  • disjointWith: Classes may be stated to be disjoint from each other. For example, Man and Woman can be stated to be disjoint classes. From this disjointWith statement, a reasoner can deduce an inconsistency when an individual is stated to be an instance of both and similarly a reasoner can deduce that if A is an instance of Man, then A is not an instance of Woman.
  • unionOf, complementOf, intersectionOf (Boolean combinations): OWL DL and OWL Full allow arbitrary Boolean combinations of classes and restrictions: unionOf, complementOf, and intersectionOf. For example, using unionOf, we can state that a class contains things that are either USCitizens or DutchCitizens. Using complementOf, we could state that children are not SeniorCitizens. (i.e. the class Children is a subclass of the complement of SeniorCitizens). Citizenship of the European Union could be described as the union of the citizenship of all member states.
  • minCardinality, maxCardinality, cardinality (full cardinality): While in OWL Lite, cardinalities are restricted to at least, at most or exactly 1 or 0, full OWL allows cardinality statements for arbitrary non-negative integers. For example the class of DINKs ("Dual Income, No Kids") would restrict the cardinality of the property hasIncome to a minimum cardinality of two (while the property hasChild would have to be restricted to cardinality 0).
  • complex classes : In many constructs, OWL Lite restricts the syntax to single class names (e.g. in subClassOf or equivalentClass statements). OWL Full extends this restriction to allow arbitrarily complex class descriptions, consisting of enumerated classes, property restrictions, and Boolean combinations. Also, OWL Full allows classes to be used as instances (and OWL DL and OWL Lite do not). For more on this topic, see the "Design for Use" section of the Guide document.

5. Summary

This document provides an overview of the Web Ontology Language by providing a brief introduction to why one might need a Web ontology language and how OWL fits in with related W3C languages. It also provides a brief description of the three OWL sublanguages: OWL Lite, OWL DL, and OWL Full along with a feature synopsis for each of the languages. This document is an update to the Feature Synopsis Document. It provides simple descriptions of the constructs along with simple examples. It references the OWL reference document, the OWL Guide, and the OWL Semantics and Abstract Syntax document for more details. Previous versions ( December 15, 2003, September 5, 2003, August 18, 2003, July 30, 2003, May 1, 2003, March 20, 2003, January 2, 2003, July 29, 2002, July 8, 2002, June 23, 2002, May 26, 2002, and May 15, 2002) of this document provide the historical view of the evolution of OWL Lite and the issues discussed in its evolution.

References

[OWL Guide]
OWL Web Ontology Language Guide, Michael K. Smith, Chris Welty, and Deborah L. McGuinness, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-guide-20040210/ . Latest version available at http://www.w3.org/TR/owl-guide/ .
[OWL Reference]
OWL Web Ontology Language Reference, Mike Dean and Guus Schreiber, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-ref-20040210/ . Latest version available at http://www.w3.org/TR/owl-ref/ .
[OWL Abstract Syntax and Semantics]
OWL Web Ontology Language Semantics and Abstract Syntax, Peter F. Patel-Schneider, Pat Hayes, and Ian Horrocks, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-semantics-20040210/ . Latest version available at http://www.w3.org/TR/owl-semantics/ .
[OWL Test]
OWL Web Ontology Language Test Cases, Jeremy J. Carroll and Jos De Roo, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-test-20040210/ . Latest version available at http://www.w3.org/TR/owl-test/ .
[OWL Requirements]
OWL Web Ontology Language Use Cases and Requirements, Jeff Heflin, Editor, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-webont-req-20040210/ . Latest version available at http://www.w3.org/TR/webont-req/ .
[OWL Issues]
Web Ontology Issue Status. Michael K. Smith, ed. 1 November 2003.
[DAML+OIL Reference]
DAML+OIL Reference Description . Dan Connolly, Frank van Harmelen, Ian Horrocks, Deborah L. McGuinness, Peter F. Patel-Schneider, and Lynn Andrea Stein. W3C Note 18 December 2001.
[XML]
Extensible Markup Language (XML).
[XML Schema]
XML Schema .
[XML-SCHEMA2]
XML Schema Part 2: Datatypes - W3C Recommendation, World Wide Web Consortium, 2 May 2001.
[RDF/XML Syntax]
RDF/XML Syntax Specification (Revised), Dave Beckett, Editor, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/ . Latest version available at http://www.w3.org/TR/rdf-syntax-grammar/ .
[RDF Concepts]
Resource Description Framework (RDF): Concepts and Abstract Syntax, Graham Klyne and Jeremy J. Carroll, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/ . Latest version available at http://www.w3.org/TR/rdf-concepts/ .
[RDF Schema]
RDF Vocabulary Description Language 1.0: RDF Schema, Dan Brickley and R. V. Guha, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-schema-20040210/ . Latest version available at http://www.w3.org/TR/rdf-schema/ .
[RDF Semantics]
RDF Semantics, Patrick Hayes, Editor, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-mt-20040210/ . Latest version available at http://www.w3.org/TR/rdf-mt/ .
[Description Logics]
The Description Logic Handbook. Franz Baader, Diego Calvanese, Deborah McGuinness, Daniele Nardi, Peter Patel-Schneider, editors. Cambridge University Press, 2003; and Description Logics Home Page.

Acknowledgements

This document is the result of extensive discussions within the Web Ontology Working Group as a whole. The participants in this Working Group included: Yasser alSafadi, Jean-François Baget, James Barnette, Sean Bechhofer, Jonathan Borden, Frederik Brysse, Stephen Buswell, Jeremy Carroll, Dan Connolly, Peter Crowther, Jonathan Dale, Jos De Roo, David De Roure, Mike Dean, Larry Eshelman, Jérôme Euzenat, Tim Finin, Nicholas Gibbins, Sandro Hawke, Patrick Hayes, Jeff Heflin, Ziv Hellman, James Hendler, Bernard Horan, Masahiro Hori, Ian Horrocks, Jane Hunter, Francesco Iannuzzelli, Rüdiger Klein, Natasha Kravtsova, Ora Lassila, Massimo Marchiori, Deborah McGuinness, Enrico Motta, Leo Obrst, Mehrdad Omidvari, Martin Pike, Marwan Sabbouh, Guus Schreiber, Noboru Shimizu, Michael Sintek, Michael K. Smith, John Stanton, Lynn Andrea Stein, Herman ter Horst, David Trastour, Frank van Harmelen, Bernard Vatant, Raphael Volz, Evan Wallace, Christopher Welty, Charles White, and John Yanosy.

Change Log Since Last Call Release

  • Added owl:Nothing to OWL Lite.
  • Added pointer to last call document under title
  • Changed all links to owl-absyn to owl-semantics
  • Incorporated Lee Lacy's grammatical comments from public-webont-comments dated April 21, 2003.
  • Incorporated Lee Lacy's other comments: annotation properties, version properties, and other missing tags in 2.2 (which got reorganised as a result)
  • changed hasOffSpring example to hasDaughter (request of Morten Frederiksen)
  • incorporated all Lasilla's comment, including replacing "machine readability" by "machine interpretability" and various typo's.
  • Added sentence on lower complexity class of OWL Lite, as proposed by Jim Hendler
  • Added first sentence to section 1, after Sandro Hawke's comment
  • Restored link to style file
  • Added link to test document and May 1 version
  • Added references section
  • Changed back to relative references to sections
  • Changed links to http://www.w3.org/TR/xx from previous versions with updates later to ...TR/2003/CR-xx-20030818/

Change Log Since Candidate Recommendation

  • Added Change Log since candidate recommendation.
  • Deleted Control Ms at the end of all lines.
  • Incorporated Jeff Rafter's public webont comments.
  • Updated Status, Document links, date of publication, etc. according to PR email from chair.

Change Log Since Proposed Recommendation

  • Two broken links fixed - W3C icon was referenced by referring to local W3c expansion src="OWL Web Ontology Language Overview_files/ as was gif for author. Added full expansion to W3C icon (http://www.w3.org/Icons/w3c_home) and email gif (http://www.w3.org/2001/sw/WebOnt/guide-src/Email.Deborah.McGuinness.gif).
  • Removed control Ms at the end of every line introduced with new version transfer.
  • Added links to previous version in December 2003.
  • Updated document taking Lee Lacy's comments dated January 12, 2004. (Comments mostly small editorial changes, cell spacing change of 30 to 27 in table, ...)
  • Included Benjamin Nowack's editorial comments.
  • Updated Reference format.
Posted by ukmie
,
From  IBM developerworks

최고의 매시업 -- 웹 서비스와 시맨틱 웹, Part 1: 웹 서비스 사용과 결합 (한글)

매시업이란이란 여러 개의 서비스로에서 가져온 데이터를 결합하여 새로운 것을 만들어내는 애플리케이션을 말합니다. 본 연재를 통하여, 각기 다른 매시업들에서 추출한 데이터를 저장하는 것에 그치지 않고, 시맨틱 기술을 이용하여 서비스를 교환하거나 데이터를 선택하는 방식으로 자신만의 매시업을 만들어낼 수 있는 '궁극' 의 매시업 개발에 대해 소개하고자 합니다. 여기서는 자바 프로그래밍, 서블릿과 JSP, 오픈 소스 제나(Jena) 프로젝트의 소프트웨어와 DB2의 새로운 네이티브 XML 기술을 사용합니다. Part 1에서 Nicholas Chase는 매시업 개념을 소개하고 간단한 버전의 매시업을 어떻게 개발하고 활용하는지 보여줄 것입니다.
 


최고의 매시업 -- 웹 서비스와 시맨틱 웹, Part 2: 매시업 데이터 캐시 관리 (한글)
검 색할 때, 온라인 쇼핑을 할 때, 또는 지도 서비스를 사용할 때 사용하는 많은 대용량 애플리케이션들은 완전히 새로운 애플리케이션에서 여러분이 쓰기 위한 데이터를 제공합니다. 엔터프라이징 애플리케이션 개발자들은 몇 가지 애플리케이션의 데이터 세트를 결합해 특정 목적을 이루기 위한 매시업 애플리케이션을 개발해왔습니다. 이 연재의 Part 1에서는 다양한 서비스로부터 데이터를 가져와 결합시키는 애플리케이션에 대해 설명하였습니다. 이제 우리는 DB2 9 데이터베이스에 어떻게 호출 결과를 저장하는지, 그리고 외부 서비스를 가볍게 하여 성능을 효과적으로 향상시킬 수 있는 방법은 무엇인지에 대해 논의할 것입니다.

최고의 매시업 -- 웹 서비스와 시맨틱 웹, Part 3: RDF와 RDFs 이해하기 (한글)
최고의 매시업이 갖는 힘은 시맨틱 기술, 특히 온톨로지 언어(OWL)를 이용하여 매시업에 지능을 갖추게 하는 것입니다. OWL에 대해 자세히 알아보기에 앞서 필요한 것은 그 기본 언어인 RDF(Resource Description Framework)와 RDFs(RDF Schema Language)에 대해 이해하는 것입니다. 본 튜토리얼은 RDF와 RDFs를 다룸으로써 서비스에 온톨로지를 만들고, RDF를 사용하여 다른 프로젝트를 수행할 수 있도록 도울 것입니다.

최고의 매시업 -- 웹 서비스와 시맨틱 웹, Part 4: 온톨로지 만들기 (한글)
본 연재는 사용자에게 보여주는 데이터를 제어할 수 있는 매시업 애플리케이션을 만드는 방법에 대해 자세히 다루고 있습니다. 그렇게 하려면 지능이 필요합니다. 이제 RDF(Resource Description Framework)로 정보를 나타내는 방법을 알았으니 XML 기반 온톨로지 언어(이하, OWL)를 사용해 온톨로지를 만들어 보겠습니다. OWL을 사용해 서비스나 서비스 부분 중 하나를 자동으로 선택할 수 있습니다.

최고의 매시업 -- 웹 서비스와 시맨틱 웹, Part 5: 웹 서비스 변경하기 (한글)
본 연재는 사용자가 볼 수 있는 데이터를 제어할 수 있는 매시업 애플리케이션을 만드는 방법에 대해 자세히 다룹니다. 이제 서비스로 나타나는 개념을 정의하는 온톨로지를 만들 수 있게 되었으니 사용자들이 원하는 서비스를 선택할 수 있게 할 수 있습니다.


최고의 매시업 -- 웹 서비스와 시맨틱 웹, Part 6: 사용자에게 제어 능력 주기 (한글)
본 튜토리얼은 매시업 애플리케이션을 만드는 방법을 다루는 연재의 마지막 튜토리얼입니다. 이제 제대로 작동하는 애플리케이션과 프레임워크를 가짐으로써 시스템이 시맨틱 추론을 통해 어떻게 서비스를 작동시키는지 이해할 수 있습니다. 본 튜토리얼에서는 사용자가 서비스 유형과 서비스에서 뽑아낸 데이터, 그 데이터의 프레젠테이션을 선택할 수 있도록 사용자에게 제어 능력을 주는 방법을 다룰 것입니다.










Posted by ukmie
,

Jena

software 2007. 8. 1. 16:31

Jena는 HP 시맨틱 웹 연구소(HP Labs Semantic Web Research)의 Brian Bride에 의해 개발된 시맨틱 웹 프레임워크이다. RDF, RDFS 및 OWL을 위한 프로그래밍 환경과 기본적인 RDF파서를 제공하며 내부적으로 룰(rule)기반의 추론엔진을 포함하고 있다.

* Introduction to Jena
Use RDF models in your Java applications with the Jena Semantic Web Framework
http://www-128.ibm.com/developerworks/java/library/j-jena/

* http://jena.sourceforge.net/

* HP Jena Tutorial 및 Persistent한 Model 만들기


* JenaRDB로 Sparql수행하는 예제


* Jena 사용하기

* A Programmer's Introduction to RDQL


Posted by ukmie
,

http://www.idealliance.org/proceedings/xtech05/papers/03-06-01/

This paper describes GRDDL, standing for "Gleaning Resource Descriptions from Dialects of Languages", a technology under development in W3C designed to fill part of this gap, allowing document authors to associate automatically formalized RDF statements with XHTML and XML-based formats.


--------------------------------------------------------------------------------------

Abstract

While SGML and XML languages have had for a long time the possibility to describe syntactic constraints of their vocabularies using DTD and other schema languages, no specific mechanism exists to allow for the mapping between these syntactic constraints and their semantic implications.

GRDDL, a technology in development in W3C, allows to incorporate semantics from XML vocabularies and XHTML conventions into the Semantic Web by re-using existing extensibility hooks of the Web. This paper explains the basic principles of its mechanisms, and explore how it can be applied for various communities.


--------------------------------------------------------------------------------------

...
Posted by ukmie
,

What Are Topic Maps

software 2007. 7. 16. 22:10

What Are Topic Maps


원문 : http://www.xml.com/pub/a/2002/09/11/topicmaps.html

by Lars Marius Garshol

September 11, 2002
Many years ago, I started looking into SGML and XML as a way to make information more manageable and findable, which was something I had been working on for a long time. It took me several years to discover that, although SGML and XML helped, they did not actually solve the problem. Later I discovered topic maps, and it seemed to me that here was the missing piece that would make it possible to really find what you were looking for. This article is about why I still think so.

What Topic Maps Do

When XML is introduced into an organization it is usually used for one of two purposes: either to structure the organization's documents or to make that organization's applications talk to other applications. These are both useful ways of using XML, but they will not help anyone find the information they are looking for. What changes with the introduction of XML is that the document processes become more controllable and can be automated to a greater degree than before, while applications can now communicate internally and externally. But the big picture, something that collects the key concepts in the organization's information and ties it all together, is nowhere to be found.

[Diagram]

This is where topic maps come in. With topic maps you create an index of information which resides outside that information, as shown in the diagram above. The topic map (the cloud at the top) describes the information in the documents (the little rectangles) and the databases (the little "cans") by linking into them using URIs (the lines).


The topic map takes the key concepts described in the databases and documents and relates them together independently of what is said about them in the information being indexed. So when a document says "The maintenance procedure for part X consists of the following steps..." the topic map may say "Part X is of type Q and is contained in parts Y and Z and its maintenance procedure resides in document W". This means taking a step back from the details and focusing on the forest rather than the trees. Or, to put it another way, it means managing the meaning of the information, rather than just the information.

The result is an information structure that breaks out of the traditional hierarchical straightjacket that we have gotten used to squeezing our information into. A topic map usually contains several overlapping hierarchies which are rich with semantic cross-links like "Part X is critical to procedure V." This makes information much easier to find because you no longer act as the designers expected you to; there are multiple redundant navigation paths that will lead you to the same answer. You can even use searches to jump to a good starting point for navigation.

The most common use for topic maps right now is to build web sites that are entirely driven by the topic map, in order to fully realize the their information-finding benefits. The topic map provides the site structure, and the page content is taken partly from the topic map itself, and partly from the occurrences. This solution is perfect for all sorts of portals, catalogs, site indexes, and so on. Since a topic map can be said to represent knowledge about the things it describes, topic maps are also ideal as knowledge management tools.

This is by no means all topic maps can be used for, however. They can also be used to organize the content in content management systems (instead of the simple folder hierarchies and property-value metadata often used today), they integrate information from diverse sources (using merging), they can drive expert systems, and much much more. (This article will focus on information-finding, however, since it is an introductory article with limited scope and length. See Marc de Graauw's article about topic maps in B2B exchange for a different view on what topic maps can do.)



How topic maps work

By now you are probably wondering how all this works. The answer is surprisingly simple. At the heart of topic maps are topics (these are the circles in the diagram), which represent the things the topic map is about. In a topic map about XML, for example, one might expect to find topics representing 'the XML Recommendation', 'the W3C', and 'Tim Bray'.

The next step is the relationships between the topics, which in topic maps is modeled with associations (the lines between the topics). Associations are typed, which means that we can say that the relationship between the XML Recommendation and the W3C is one we might call 'publishing', while the relationship between the Recommendation and Tim Bray is one of 'authorship'.

Associations have one unusual feature. Each topic involved in the association is said to play a role, which is defined by its role type. So in the 'authorship' association Tim Bray plays the role of 'author' while the XML Recommendation plays the role of 'work'. This means that the statements 'Tim Bray wrote the XML Recommendation' and 'the XML Recommendation was written by Tim Bray' are the same statement in topic maps. It is impossible to say the one without at the same time saying the other, and the association can be traversed in either direction. Associations need not be restricted to two topics. Relationships like 'Tim Bray represents Textuality in the W3C' can be expressed using an association with three roles, and it's no more difficult to express than than simpler associations.

The last main feature of topic maps is what is known as occurrences, which are information resources relevant to a topic. For "Tim Bray", occurrences might be his home page, a portrait, CV, etc. Since occurrences may also be typed, these different kinds of resources can be distinguished. This means that when a user comes to a topic and wants more information about it, the user not only gets a set of links, but also knows what makes each link interesting.

The last point to note is that topics may also have types, and reasonable types for the example topics might be 'standard', 'standards body', and 'person'. Types in topic maps, however, are themselves topics, which means that anyone creating a topic map can choose what topic types, association and role types, and occurrence types they want to use. As a result, the model is infinitely extensible and adaptable and can capture just about any kind of information.

One of the benefits of the topic maps approach is that usually, when you are creating a topic map for a set of existing data (documents or databases), you will find that a number of important concepts are touched on in the dataset, without actually having identities of their own. One example of this might be if you were to topic map the W3C web site. It is a fairly well structured site, but let's say you are looking for information on XML Base. You can easily find the specification, and using the search you can find various pages that mention it. And that's it. With a topic map, on the other hand, you'd have a topic representing 'XML Base', the concept. Going to that topic would present you with information like 'XML Base is an XML vocabulary' (topic type), 'XML Base uses XML namespaces' (association), 'XML Base is used by XHTML' (association), 'the XML Base specification is here' (occurrence), and so on. This makes it easier to find what you are looking for, and also to learn about it once you have found it.

Making a topic map

Before we look at the practicalities, a little background is needed. Topic maps are an ISO standard, published as ISO/IEC 13250 in 2000. That standard defines the basic model and an SGML-based syntax for it, which uses HyTime for linking, and is therefore known as HyTM. When the standard was published it was clear that something more web-optimized was needed, and so an ad-hoc organization known as TopicMaps.Org was formed to create a topic map syntax based on XML and URIs.

TopicMaps.Org published its XML Topic Maps (XTM) 1.0 specification in early 2001, and in October of the same year that syntax was accepted into the second edition of ISO 13250 as an annex. Today, XTM is the main topic map syntax and is supported by nearly all topic map tools. In this article we use XTM as the example syntax.

To create a topic map for the example above we can start by defining topics for the three topic types. This is done as follows:


<topicMap xmlns="http://www.topicmaps.org/xtm/1.0/" 
          xmlns:xlink="http://www.w3.org/1999/xlink">

  <topic id="person">
    <baseName>
      <baseNameString>Person</baseNameString>
    </baseName>
  </topic>

  <topic id="standards-body">
    <baseName>
      <baseNameString>Standards body</baseNameString>
    </baseName>
  </topic>

  <topic id="standard">
    <baseName>
      <baseNameString>Standard</baseNameString>
    </baseName>
  </topic>

</topicMap>

This gives us three topics suitable for use as topic types in our topic map. The baseName elements give the topics names that can be used to display the topics. The next step is to add one topic to be used as an occurrence type and our three instance topics, complete with names and occurrences. (The fragment below should be inserted inside the topicMap element above. The order of topic elements in topic maps is irrelevant.)


  <topic id="xml-rec">
    <instanceOf>
      <topicRef xlink:href="#standard"/>
    </instanceOf>
    <baseName>
      <baseNameString>The XML Recommendation</baseNameString>
    </baseName>
  </topic>

  <topic id="tim-bray">
    <instanceOf>
      <topicRef xlink:href="#person"/>
    </instanceOf>
    <baseName>
      <baseNameString>Tim Bray</baseNameString>
    </baseName>
  </topic>

  <topic id="homepage">
    <baseName>
      <baseNameString>Homepage</baseNameString>
    </baseName>
  </topic>

  <topic id="w3c">
    <instanceOf>
      <topicRef xlink:href="#standards-body"/>
    </instanceOf>
    <baseName>
      <baseNameString>World Wide Web Consortium</baseNameString>
    </baseName>
    <occurrence>
      <instanceOf>
        <topicRef xlink:href="#homepage"/>
      </instanceOf>
      <resourceRef xlink:href="http://www.w3.org"/>
    </occurrence>
  </topic>

The first two topic elements create topics for the XML Recommendation and Tim Bray, making them instances of the "standard" and "person" topic types we defined earlier. Notice how instanceOf is used to provide the class and topicRef is used to point to the topic that defines the class. Then we define the occurrence type "homepage" and finally a topic for the W3C, which is of type "standards-body" and even has a "homepage" occurrence. The resourceRef element inside the occurrence gives the URI of the resource that is the occurrence.

Finally, we are ready to create topics for the association and role types and create the corresponding associations in order to complete the topic map. The fragment below does just this.


  <topic id="authorship">
    <baseName>
      <baseNameString>Authorship</baseNameString>
    </baseName>
  </topic>

  <topic id="author">
    <baseName>
      <baseNameString>Author</baseNameString>
    </baseName>
  </topic>

  <topic id="work">
    <baseName>
      <baseNameString>Work</baseNameString>
    </baseName>
  </topic>

  <association>
    <instanceOf>
      <topicRef xlink:href="#authorship"/>    
    </instanceOf>

    <member>
      <roleSpec>
        <topicRef xlink:href="#author"/>
      </roleSpec>
      <topicRef xlink:href="#tim-bray"/>
    </member>

    <member>
      <roleSpec>
        <topicRef xlink:href="#work"/>
      </roleSpec>
      <topicRef xlink:href="#xml-rec"/>
    </member>
  </association>

In order to keep this example at a reasonable length only the first association is provided here. It is of type "authorship" and has one topic playing the role of "author" (Tim Bray) and another playing the role of "work" (the XML Recommendation). The involvement of topics in the association is described using the member element type, and role types are defined with roleSpec. The participating topic is pointed to by the topicRef directly inside the member.

And that's it, really. This is a complete, although trivial, topic map. With a topic map browser you can actually browse through it, do queries on it, and so on. (See the links section at the bottom.) I've made a complete version for your convenience as well.



How to Use Topic Maps

There are two quetions here -- "how do I create a topic map?" and "how do I build an application once I have my topic map?" For creating a topic map there are four main approaches:

  • Have humans author the topic maps manually. This usually gives very high-quality and rich topic maps, but at the cost of human labor. This is appropriate for some projects, while prohibitively expensive for others.
  • Automatically generate the topic map from existing source data. This can give very good results if the existing data are well-structured (sound familiar?); if not, there are various natural-language processing tools that might help.
  • Automatically produce the topic map from structured source data like XML, RDBMSs, LDAP servers, and more specialized applications.

This all sounds very fancy, but to produce a simple topic map (or even a fancy one) you don't need anything more than a text editor, and for automatic generation XSLT stylesheets can be used perfectly well. This won't be enough for all uses, of course, and therefore there is specialized software for topic map editing and automatic generation of topic maps.

The next step is the question of where the topic map is going to live, that is, be stored and maintained. For simpler applications storing XTM documents in files suffices, but for most real applications some form of database storage will be necessary. Most topic map implementations support some form of database storage, using various approaches.

Generally, the heart of every topic map application is what is known as the topic map engine, which is roughly equivalent to an RDBMS database engine, but designed for topic maps. This component knows how to import and export XTM (and other topic map syntaxes), store, update, and query topic maps, and so on. The engine will handle the storage, and any updates will happen through it. For example, applications that implement a topic map-driven portal will sit on top of the engine and use it to access the topic map. More advanced topic map implementations have special frameworks that simplify the work of creating such applications.

But Wait, There's More

There are three additional features in topic maps that you really need to know about. The first of these is scope, which can be attached to any name, occurrence, or association in a topic map. Basically, scope ca be attached to anything you can say in a topic map. Scope allows you to qualify a statement, but still express it.

Imagine you are making a topic map about languages, and basing it on the ISO 639 and Ethnologue lists of language codes. In that case you might want to record that ISO 639 assigns English to the Germanic language group, while Ethnologue considers it a West Germanic language. This can be done by scoping the association between English and Germanic with a topic representing ISO 639, and the association between English and West Germanic with a topic representing Ethnologue. Similarly, one might use scope to record that what Ethnologue calls Maldivian, ISO 639 calls Divehi.

Users can then choose to see all information in all scopes, or only those in particular scopes, basically tailoring their view of the world as they want to see it. One common use of scope is to create topic maps where the topics have names in multiple languages, allowing topic maps to be converted between languages at the press of a button.

Another interesting feature of topic maps is the use of URIs to identify subjects. A topic may have any number of subject identifiers (URIs) which identify the subject the topic is about. These URIs should point to resources which describe the subject to a human; the resources are known as subject indicators. This allows subjects to be uniquely identified across topic maps and the entire web. For example, the URI http://www.topicmaps.org/xtm/1.0/core.xtm#superclass-subclass uniquely identifies the subclassing association type.

This unambiguous identification of subjects is used in topic maps to merge topics that, through these identifiers, are known to have the same subject. Basically, what happens is that two topics with the same subject are replaced by a new topic that has the union of the characteristics (names, occurrences, and associations) of the two originals. There is in fact a well-defined procedure for automatically merging topic maps based on this rule. The combination of globally unique identifiers and the merging procedure makes integration of diverse information sources and reuse of information very much easier.

One aspect related to this is the published subjects activity of OASIS, which is developing guidelines for how to create, publish, and maintain subject indicators intended for wide usage. One example of this is well-known URIs for all the countries in the world (based on the ISO 3166 country codes), which will allow us to tell that when you say 'Norway' in one topic map and I say 'Norge' in another, we mean the same thing. More on this in a future article.

Putting Topic Maps in Context

A question you may be asking yourself at this point is how something like topic maps fits into the larger family of XML standards. As I hinted at the beginning, topic maps are really an add-on to XML, something that adds extra value beyond what XML itself can do. You can in fact use topic maps without using XML at all. In a very real way, the two standards are similar without competing. They both have data models, interchange syntaxes, query languages, schema languages, and so on. Being developed for different purposes and doing different things well they can peacefully coexist and complement one another.

The relationship between RDF and topic maps is less obvious, however. Structurally, they are very similar, and their semantics are very close, although the distinctions in topic maps between base names, occurrences, and associations do not exist in RDF. At first glance it may appear that they are nearly the same, but on closer inspection it turns out that their respective communities think of the technologies in very different ways, and that features such as scope and merging actually make them rather different after all. Again, the conclusion seems to be that they are good for different things, and that there is room for both.

So what should be used where? Generally, use XML for interchange and document contents, RDF for fine-grained metadata, and topic maps for making information findable and anything that is mostly about relationships.

Conclusion

So, to sum up, topic maps make information findable by giving every concept in the information its own identity and providing multiple redundant navigation paths through the information space. These paths are semantic, and all points on the way are clearly identified with names and types that tell you what they are. This means you always know where you are, which prompted Charles Goldfarb to call topic maps "the GPS of the information universe."

Topic maps also help by making it possible to relate together information that comes from different sources through merging and published subjects. A future article will discuss this.

Tools and references

The following is a very partial list of places where you can find useful information about topic maps.

If you want to start creating your own topic maps I recommend downloading the Omnigator and writing an XTM or LTM file (see above). You can then browse your topic map in the Omnigator immediately, without any programming or stylesheets.


Posted by ukmie
,