You are here

Liyang Yu. A Developer’s Guide to the Semantic Web.

Liyang Yu
A Developer’s Guide to the Semantic Web

Heidelberg; New York : Springer, 2011. xix, 608 p.

Contents

 

Preface
Objectives of the Book
Intended Readers
Structure of the Book
Where to Get the Code
Acknowledgment
1. A Web of Data: Toward the Idea of the Semantic Web
    1.1 A Motivating Example: Data Integration on the Web
        1.1.1 A Smart Data Integration Agent
        1.1.2 Is Smart Data Integration Agent  Possible?
        1.1.3 The Idea of the Semantic Web
    1.2 A More General Goal: A Web Understandable to Machines
        1.2.1 How Do We Use the Web?
            1.2.1.1 Searching
            1.2.1.2 Information Integration
            1.2.1.3 Web Data Mining
        1.2.2 What Stops Us from Doing More?
        1.2.3 Again, the Idea of the Semantic Web
    1.3 The Semantic Web: A First Look
        1.3.1 The Concept of the Semantic Web
        1.3.2 The Semantic Web, Linked Data, and
            the Web of Data
        1.3.3 Some Basic Things About the Semantic Web Reference
2. The Building Block for the Semantic Web: RDF
    2.1 RDF Overview
        2.1.1 RDF in Official Language
        2.1.2 RDF in Plain English
    2.2 The Abstract Model of RDF
        2.2.1 The Big Picture
        2.2.2 Statement
        2.2.3 Resource and Its URI Name
        2.2.4 Predicate and Its URI Name
        2.2.5 RDF Triples: Knowledge That Machine Can Use
        2.2.6 RDF Literals and Blank Node
            2.2.6.1 Basic Terminologies So Far
            2.2.6.2 Literal Values
            2.2.6.3 Blank Nodes
        2.2.7 A Summary So Far
    2.3 RDF Serialization: RDF/XML Syntax
        2.3.1 The Big Picture: RDF Vocabulary
        2.3.2 Basic Syntax and Examples
            2.3.2.1 rdf:RDF, rdf:Description, rdf:about, and rdf:resource
            2.3.2.2 rdf:type and Typed Nodes
            2.3.2.3 Using Resource as Property Value
            2.3.2.4 Using Un-typed Literals as Property Values, rdf:value and rdf:parseType
            2.3.2.5 Using Typed Literal Values and rdf:datatype
            2.3.2.6 rdf:nodeID and More About Anonymous Resources
            2.3.2.7 rdf:ID, xml:base, and RDF/XML Abbreviation
        2.3.3 Other RDF Capabilities and Examples
            2.3.3.1 RDF Containers: rdf:Bag, rdf:Seq, rdf:Alt, and rdf:li
            2.3.3.2 RDF Collections: rdf:first, rdf:rest, rdf:nil, and rdf:List
            2.3.3.3 RDF Reification: rdf:statement, rdf:subject, rdf:predicate, and rdf:object
    2.4 Other RDF Sterilization Formats
        2.4.1 Notation-3, Turtle, and N-Triples
        2.4.2 Turtle Language
            2.4.2.1 Basic Language Feature
            2.4.2.2 Abbreviations and Shortcuts: Namespace Prefix, Default Prefix, and @base
            2.4.2.3 Abbreviations and Shortcuts: Token a, Comma, and Semicolons
            2.4.2.4 Turtle Blank Nodes
    2.5 Fundamental Rules of RDF
        2.5.1 Information Understandable by Machine
        2.5.2 Distributed Information Aggregation
        2.5.3 A Hypothetical Real-World Example
    2.6 More About RDF
        2.6.1 Dublin Core: Example of Pre-defined RDF Vocabulary
        2.6.2 XML vs. RDF?
        2.6.3 Use an RDF Validator
    2.7 Summary
3 Other RDF-Related Technologies: Microformats, RDFa, and GRDDL
    3.1 Introduction: Why Do We Need These?
    3.2 Microformats
        3.2.1 Microformats: The Big Picture
        3.2.2 Microformats: Syntax and Examples
            3.2.2.1 From vCard to hCard Microformat
            3.2.2.2 Using hCard Microformat to Mark Up Page Content
        3.2.3 Microformats and RDF
            3.2.3.1 What Is So Good About Microformats?
            3.2.3.2 Microformats and RDF
    3.3 RDFa
        3.3.1 RDFa: The Big Picture
        3.3.2 RDFa Attributes and RDFa Elements
        3.3.3 RDFa: Rules and Examples
            3.3.3.1 RDFa Rules
            3.3.3.2 RDFa Examples
        3.3.4 RDFa and RDF
            3.3.4.1 What Is So Good About RDFa?
            3.3.4.2 RDFa and RDF
    3.4 GRDDL
        3.4.1 GRDDL: The Big Picture
        3.4.2 Using GRDDL with Microformats
        3.4.3 Using GRDDL with RDFa
    3.5 Summary
4 RDFS and Ontology
    4.1 RDFS Overview
        4.1.1 RDFS in Plain English
        4.1.2 RDFS in Official Language
    4.2 RDFS + RDF: One More Step Toward Machine Readable
        4.2.1 A Common Language to Share
        4.2.2 Machine Inferencing Based on RDFS
    4.3 RDFS Core Elements
        4.3.1 The Big Picture: RDFS Vocabulary
        4.3.2 Basic Syntax and Examples
            4.3.2.1 Defining Classes
            4.3.2.2 Defining Properties
            4.3.2.3 More About Properties
            4.3.2.4 RDFS Datatypes
            4.3.2.5 RDFS Utility Vocabulary
        4.3.3 Summary So Far
            4.3.3.1 Our Camera Vocabulary
            4.3.3.2 Where Is the Knowledge?
    4.4 The Concept of Ontology
        4.4.1 What Is Ontology?
        4.4.2 The Benefits of Ontology
    4.5 Building the Bridge to Ontology: SKOS
        4.5.1 Knowledge Organization Systems (KOS)
        4.5.2 Thesauri vs. Ontologies
        4.5.3 Filling the Gap: SKOS
            4.5.3.1 What Is SKOS?
            4.5.3.2 SKOS Core Constructs
            4.5.3.3 Interlinking Concepts by Using SKOS
    4.6 Another Look at Inferencing Based on RDF Schema
        4.6.1 RDFS Ontology-Based Reasoning: Simple, Yet Powerful
        4.6.2 Good, Better, and Best: More Is Needed
    4.7 Summary
5 OWL: Web Ontology Language
    5.1 OWL Overview
        5.1.1 OWL in Plain English
        5.1.2 OWL in Official Language: OWL 1 and OWL 2
        5.1.3 From OWL 1 to OWL 2
    5.2 OWL 1 and OWL 2: The Big Picture
        5.2.1 Basic Notions: Axiom, Entity, Expression, and IRI Names
        5.2.2 Basic Syntax Forms: Functional Style, RDF/XML Syntax, Manchester Syntax, and XML Syntax
    5.3 OWL 1 Web Ontology Language
        5.3.1 Defining Classes: The Basics
        5.3.2 Defining Classes: Localizing Global Properties
            5.3.2.1 Value Constraints: owl:allValuesFrom
            5.3.2.2 Enhanced Reasoning Power 1
            5.3.2.3 Value Constraints: owl:someValuesFrom
            5.3.2.4 Enhanced Reasoning Power
            5.3.2.5 Value Constraints: owl:hasValue
            5.3.2.6 Enhanced Reasoning Power
            5.3.2.7 Cardinality Constraints: owl:cardinality, owl:min(max)Cardinality
            5.3.2.8 Enhanced Reasoning Power
        5.3.3 Defining Classes: Using Set Operators
            5.3.3.1 Set Operators
            5.3.3.2 Enhanced Reasoning Power
        5.3.4 Defining Classes: Using Enumeration, Equivalent, and Disjoint
            5.3.4.1 Enumeration, Equivalent, and Disjoint
            5.3.4.2 Enhanced Reasoning Power
        5.3.5 Our Camera Ontology So Far
        5.3.6 Define Properties: The Basics
        5.3.7 Defining Properties: Property Characteristics
            5.3.7.1 Symmetric Properties
            5.3.7.2 Enhanced Reasoning Power
            5.3.7.3 Transitive Properties
            5.3.7.4 Enhanced Reasoning Power
            5.3.7.5 Functional Properties
            5.3.7.6 Enhanced Reasoning Power
            5.3.7.7 Inverse Property
            5.3.7.8 Enhanced Reasoning Power
            5.3.7.9 Inverse Functional Property
            5.3.7.10 Enhanced Reasoning Power
        5.3.8 Camera Ontology Written Using OWL 1
    5.4 OWL 2 Web Ontology Language
        5.4.1 What Is New in OWL 2?
        5.4.2 New Constructs for Common Patterns
            5.4.2.1 Common Pattern: Disjointness
            5.4.2.2 Common Pattern: Negative Assertions
        5.4.3 Improved Expressiveness for Properties
            5.4.3.1 Property Self-Restriction
            5.4.3.2 Property Self-Restriction: Enhanced Reasoning Power
            5.4.3.3 Property Cardinality Restrictions
            5.4.3.4 Property Cardinality Restrictions: Enhanced Reasoning Power
            5.4.3.5 More About Property Characteristics: Reflexive, Irreflexive, and Asymmetric Properties
            5.4.3.6 More About Property Characteristics: Enhanced Reasoning Power
            5.4.3.7 Disjoint Properties
            5.4.3.8 Disjoint Properties: Enhanced Reasoning Power
            5.4.3.9 Property Chains
            5.4.3.10 Property Chains: Enhanced Reasoning Power
            5.4.3.11 Keys
            5.4.3.12 Keys: Enhanced Reasoning Power
        5.4.4 Extended Support for Datatypes
            5.4.4.1 Wider Range of Supported Datatypes and Extra Built-In Datatypes
            5.4.4.2 Restrictions on Datatypes and User-Defined Datatypes
            5.4.4.3 Data Range Combinations
        5.4.5 Punning and Annotations
            5.4.5.1 Understanding Punning
            5.4.5.2 OWL Annotations, Axioms About Annotation Properties
        5.4.6 Other OWL 2 Features
            5.4.6.1 Entity Declarations
            5.4.6.2 Top and Bottom Properties
            5.4.6.3 Imports and Versioning
        5.4.7 OWL Constructs in Instance Documents
        5.4.8 OWL 2 Profiles
            5.4.8.1 Why We Need All These?
            5.4.8.2 Assigning Semantics to OWL Ontology: Description Logic vs. RDF-Based Semantics
            5.4.8.3 Three Faces of OWL 1
            5.4.8.4 Understanding OWL 2 Profiles
            5.4.8.5 OWL 2 EL, QL, and RL
        5.4.9 Our Camera Ontology in OWL 2
    5.5 Summary
6 SPARQL: Querying the Semantic Web
    6.1 SPARQL Overview
        6.1.1 SPARQL in Official Language
        6.1.2 SPARQL in Plain English
        6.1.3 Other Related Concepts: RDF Data Store, RDF Database, and Triple Store
    6.2 Set up Joseki SPARQL Endpoint
    6.3 SPARQL Query Language
        6.3.1 The Big Picture
            6.3.1.1 Triple Pattern
            6.3.1.2 Graph Pattern
        6.3.2 SELECT Query
            6.3.2.1 Structure of a SELECT Query
            6.3.2.2 Writing Basic SELECT Query
            6.3.2.3 Using OPTIONAL Keyword for Matches
            6.3.2.4 Using Solution Modifier
            6.3.2.5 Using FILTER Keyword to Add Value Constraints
            6.3.2.6 Using Union Keyword for Alternative Match
            6.3.2.7 Working with Multiple Graphs
        6.3.3 CONSTRUCT Query
        6.3.4 DESCRIBE Query
        6.3.5 ASK Query
    6.4 What Is Missing from SPARQL?
    6.5 SPARQL 1.1
        6.5.1 Introduction: What Is New?
        6.5.2 SPARQL 1.1 Query
            6.5.2.1 Aggregate Functions
            6.5.2.2 Subqueries
            6.5.2.3 Negation
            6.5.2.4 Expressions with SELECT
            6.5.2.5 Property Paths
        6.5.3 SPARQL 1.1 Update
            6.5.3.1 Graph Update: Adding RDF Statements
            6.5.3.2 Graph Update: Deleting RDF Statements
            6.5.3.3 Graph Update: LOAD and CLEAR
            6.5.3.4 Graph Management: Graph Creation
            6.5.3.5 Graph Management: Graph Removal
6.6 Summary
7 FOAF: Friend of a Friend
    7.1 What Is FOAF and What It Does
        7.1.1 FOAF in Plain English
        7.1.2 FOAF in Official Language
    7.2 Core FOAF Vocabulary and Examples
        7.2.1 The Big Picture: FOAF Vocabulary
        7.2.2 Core Terms and Examples
    7.3 Create Your FOAF Document and Get into the Friend Circle
        7.3.1 How Does the Circle Work?
        7.3.2 Create Your FOAF Document
        7.3.3 Get into the Circle: Publish Your FOAF Document
        7.3.4 From Web Pages for Human Eyes to Web Pages for Machines
    7.4 Semantic Markup: a Connection Between the Two Worlds
        7.4.1 What Is Semantic Markup
        7.4.2 Semantic Markup: Procedure and Example
        7.4.3 Semantic Markup: Feasibility and Different Approaches
    7.5 Summary
8 Semantic Markup at Work: Rich Snippets and SearchMonkey
    8.1 Introduction
        8.1.1 Prerequisite: How Does a Search Engine Work?
            8.1.1.1 Basic Search Engine Tasks
            8.1.1.2 Basic Search Engine Workflow
        8.1.2 Rich Snippets and SearchMonkey
    8.2 Rich Snippets by Google
        8.2.1 What Is Rich Snippets: An Example
        8.2.2 How Does It Work: Semantic Markup Using Microformats/RDFa
            8.2.2.1 Rich Snippets Powered by Semantic Markup
            8.2.2.2 Microformats Supported by Rich Snippets
            8.2.2.3 Ontologies Supported by Rich Snippets
        8.2.3 Test It Out Yourself
    8.3 SearchMonkey from Yahoo
        8.3.1 What Is SearchMonkey: An Example
        8.3.2 How Does It Work: Semantic Markup Using Microformats/RDFa
            8.3.2.1 SearchMonkey Architecture
            8.3.2.2 Microformats Supported by SearchMonkey
            8.3.2.3 Ontologies Supported by SearchMonkey
        8.3.3 Test It Out Yourself
    8.4 Summary
    Reference
9 Semantic Wiki
    9.1 Introduction: From Wiki to Semantic Wiki
        9.1.1 What Is a Wiki?
        9.1.2 From Wiki to Semantic Wiki
    9.2 Adding Semantics to Wiki Site
        9.2.1 Namespace and Category System
        9.2.2 Semantic Annotation in Semantic MediaWiki
            9.2.2.1 Semantic Annotation: Links
            9.2.2.2 Semantic Annotation: Text
    9.3 Using the Added Semantics
        9.3.1 Browsing
            9.3.1.1 FactBox
            9.3.1.2 Semantic Browsing Interface
        9.3.2 Wiki Site Semantic Search
            9.3.2.1 Direct Wiki Query: Basics
            9.3.2.2 Direct Wiki Query: Advanced Search
            9.3.2.3 Displaying Information
        9.3.3 Inferencing
    9.4 Where Is the Semantics?
        9.4.1 SWiVT: an Upper Ontology for Semantic Wiki
        9.4.2 Understanding OWL/RDF Exports
        9.4.3 Importing Ontology: a Bridge to Outside World
    9.5 The Power of the Semantic Web
    9.6 Use Semantic MediaWiki to Build Your Own Semantic Wiki
    9.7 Summary
10 DBpedia
    10.1 Introduction to DBpedia
        10.1.1 From Manual Markup to Automatic Generation of Annotation
        10.1.2 From Wikipedia to DBpedia
        10.1.3 The Look and Feel of DBpedia: Page Redirect
    10.2 Semantics in DBpedia DBpedia look and feel
        10.2.1 Infobox Template
        10.2.2 Creating DBpedia Ontology
            10.2.2.1 The Need for Ontology
            10.2.2.2 Mapping Infobox Templates to Classes
            10.2.2.3 Mapping Infobox Template Attributes to Properties
        10.2.3 Infobox Extraction Methods
            10.2.3.1 Generic Infobox Extraction Method
            10.2.3.2 Mapping-Based Infobox Extraction Method
    10.3 Accessing DBpedia Dataset
        10.3.1 Using SPARQL to Query DBpedia
            10.3.1.1 SPARQL Endpoints for DBpedia
            10.3.1.2 Examples of Using SPARQL to Access DBpedia
        10.3.2 Direct Download of DBpedia Datasets
            10.3.2.1 The Wikipedia Datasets
            10.3.2.2 DBpedia Core Datasets
            10.3.2.3 Extended Datasets
        10.3.3 Access DBpedia as Linked Data
    10.4 Summary
    Reference
11 Linked Open Data
    11.1 The Concept of Linked Data and Its Basic Rules
        11.1.1 The Concept of Linked Data
        11.1.2 How Big Is the Web of Linked Data and the LOD   Project
        11.1.3 The Basic Rules of Linked Data
    11.2 Publishing RDF Data on the Web
        11.2.1 Identifying Things with URIs
            11.2.1.1 Web Document, Information Resource, and URI
            11.2.1.2 Non-information Resources and Their URIs
            11.2.1.3 URIs for Non-information Resources: URIs and Content Negotiation
            11.2.1.4 URIs for Non-information Resources: Hash URIs
            11.2.1.5 URIs for Non-information Resources: URIs vs. Hash URIs
            11.2.1.6 URI Aliases
        11.2.2 Choosing Vocabularies for RDF Data
        11.2.3 Creating Links to Other RDF Data
            11.2.3.1 Basic Language Constructs to Create Links
            11.2.3.2 Creating Links Manually
            11.2.3.3 Creating Links Automatically
        11.2.4 Serving Information as Linked Data
            11.2.4.1 Minimum Requirements for Being Linked Open Data
            11.2.4.2 Example: Publishing Linked Data on the Web
            11.2.4.3 Make Sure You Have Done It Right
    11.3 The Consumption of Linked Data
        11.3.1 Discover Specific Target on the Linked Data Web
            11.3.1.1 Semantic Web Search Engine for Human Eyes
            11.3.1.2 Semantic Web Search Engine for Applications
        11.3.2 Accessing the Web of Linked Data
            11.3.2.1 Using a Linked Data Browser
            11.3.2.2 Using SPARQL Endpoints
            11.3.2.3 Accessing the Linked Data Web Programmatically
    11.4 Linked Data Application
        11.4.1 Linked Data Application Example: Revyu
            11.4.1.1 Revyu: An Overview
            11.4.1.2 Revyu: Why It Is Different
        11.4.2 Web 2.0 Mashups vs. Linked Data Mashups
    11.5 Summary
12 Building the Foundation for Development on the Semantic Web
    12.1 Development Tools for the Semantic Web
        12.1.1 Frameworks for the Semantic Web Applications
            12.1.1.1 What Is a Framework and Why We Need It?
            12.1.1.2 Jena
            12.1.1.3 Sesame
            12.1.1.4 Virtuoso
            12.1.1.5 Redland
        12.1.2 Reasoners for the Semantic Web Applications
            12.1.2.1 What Is a Reasoner and Why We Need It?
            12.1.2.2 Pellet
            12.1.2.3 RacerPro
            12.1.2.4 Jena
            12.1.2.5 Virtuoso
        12.1.3 Ontology Engineering Environments
            12.1.3.1 What Is an Ontology Engineering Environment and Why We Need It?
            12.1.3.2 Protégé
            12.1.3.3 NeOn
            12.1.3.4 TopBraid Composer
        12.1.4 Other Tools: Search Engines for the Semantic Web
        12.1.5 Where to Find More?
    12.2 Semantic Web Application Development Methodology
        12.2.1 From Domain Models to Ontology-Driven Architecture
            12.2.1.1 Domain Models and MVC Architecture
            12.2.1.2 The Uniqueness of Semantic Web Application Development
            12.2.1.3 Ontology-Driven Software Development
            12.2.1.4 Further Discussions
        12.2.2 An Ontology Development Methodology Proposed by Noy and McGuinness
            12.2.2.1 Basic Tasks and Fundamental Rules
            12.2.2.2 Basic Steps of Ontology Development
            12.2.2.3 Other Considerations
    12.3 Summary
    Reference
13 Jena: A Framework for Development on the Semantic Web
    13.1 Jena: A Semantic Web Framework for Java
        13.1.1 What Is Jena and What It Can Do for Us?
        13.1.2 Getting Jena Package
        13.1.3 Using Jena in Your Projects
            13.1.3.1 Using Jena in Eclipse
            13.1.3.2 Hello World! from Semantic Web Application
    13.2 Basic RDF Model Operations
        13.2.1 Creating an RDF Model
        13.2.2 Reading an RDF Model
        13.2.3 Understanding an RDF Model
    13.3 Handling Persistent RDF Models
        13.3.1 From In-memory Model to Persistent Model
        13.3.2 Setting Up MySQL
        13.3.3 Database-Backed RDF Models
            13.3.3.1 Single Persistent RDF Model
            13.3.3.2 Multiple Persistent RDF Models
    13.4 Inferencing Using Jena
        13.4.1 Jena Inferencing Model
        13.4.2 Jena Inferencing Examples
    13.5 Summary
14 Follow Your Nose: A Basic Semantic Web Agent
    14.1 The Principle of Follow-Your-Nose Method
        14.1.1 What Is Follow-Your-Nose Method?
        14.1.2 URI Declarations, Open Linked Data, and Follow-Your-Nose Method
    14.2 A Follow-Your-Nose Agent in Java
        14.2.1 Building the Agent
        14.2.2 Running the Agent
        14.2.3 More Clues for Follow Your Nose
        14.2.4 Can You Follow Your Nose on Traditional Web?
    14.3 A Better Implementation of Follow-Your-Nose Agent: Using SPARQL Queries
        14.3.1 In-memory SPARQL Operation
        14.3.2 Using SPARQL Endpoints Remotely
    14.4 Summary
15 More Application Examples on the Semantic Web
    15.1 Building Your Circle of Trust: A FOAF Agent You Can Use
        15.1.1 Who Is on Your E-mail List?
        15.1.2 The Basic Idea
        15.1.3 Building the Email Address Collector Agent
            15.1.3.1 Email Address Collector
            15.1.3.2 Running the Email Address Collector Agent
        15.1.4 Can You Do the Same for Traditional Web?
    15.2 A ShopBot on the Semantic Web
        15.2.1 A ShopBot We Can Have
        15.2.2 A ShopBot We Really Want
            15.2.2.1 How Does It Understand Our Needs?
            15.2.2.2 How Does It Find the Next Candidate?
            15.2.2.3 How Does It Decide Whether There Is a Match or Not?
        15.2.3 Building Our ShopBot
            15.2.3.1 Utility Methods and Class
            15.2.3.2 Processing the Catalog Document
            15.2.3.3 The Main Work Flow
            15.2.3.4 Running Our ShopBot
        15.2.4 Discussion: From Prototype to Reality
    15.3 Summary
Index