A Developer's Guide to the Semantic Web
von: Liyang Yu
Springer-Verlag, 2011
ISBN: 9783642159701
Sprache: Englisch
608 Seiten, Download: 8926 KB
Format: PDF, auch als Online-Lesen
Preface | 5 | ||
Objectives of the Book | 5 | ||
Intended Readers | 6 | ||
Structure of the Book | 6 | ||
Where to Get the Code | 9 | ||
Acknowledgment | 9 | ||
Contents | 11 | ||
1 A Web of Data: Toward the Idea of the Semantic Web | 18 | ||
1.1 A Motivating Example: Data Integration on the Web | 18 | ||
1.1.1 A Smart Data Integration Agent | 19 | ||
1.1.2 Is Smart Data Integration Agent Possible? | 24 | ||
1.1.3 The Idea of the Semantic Web | 26 | ||
1.2 A More General Goal: A Web Understandable to Machines | 26 | ||
1.2.1 How Do We Use the Web? | 26 | ||
1.2.1.1 Searching | 27 | ||
1.2.1.2 Information Integration | 27 | ||
1.2.1.3 Web Data Mining | 28 | ||
1.2.2 What Stops Us from Doing More? | 29 | ||
1.2.3 Again, the Idea of the Semantic Web | 31 | ||
1.3 The Semantic Web: A First Look | 31 | ||
1.3.1 The Concept of the Semantic Web | 31 | ||
1.3.2 The Semantic Web, Linked Data, and the Web of Data | 32 | ||
1.3.3 Some Basic Things About the Semantic Web | 34 | ||
Reference | 35 | ||
2 The Building Block for the Semantic Web: RDF | 36 | ||
2.1 RDF Overview | 36 | ||
2.1.1 RDF in Official Language | 36 | ||
2.1.2 RDF in Plain English | 38 | ||
2.2 The Abstract Model of RDF | 42 | ||
2.2.1 The Big Picture | 42 | ||
2.2.2 Statement | 42 | ||
2.2.3 Resource and Its URI Name | 44 | ||
2.2.4 Predicate and Its URI Name | 48 | ||
2.2.5 RDF Triples: Knowledge That Machine Can Use | 50 | ||
2.2.6 RDF Literals and Blank Node | 52 | ||
2.2.6.1 Basic Terminologies So Far | 52 | ||
2.2.6.2 Literal Values | 54 | ||
2.2.6.3 Blank Nodes | 55 | ||
2.2.7 A Summary So Far | 58 | ||
2.3 RDF Serialization: RDF/XML Syntax | 59 | ||
2.3.1 The Big Picture: RDF Vocabulary | 59 | ||
2.3.2 Basic Syntax and Examples | 60 | ||
2.3.2.1 rdf:RDF, rdf:Description, rdf:about, and rdf:resource | 60 | ||
2.3.2.2 rdf:type and Typed Nodes | 62 | ||
2.3.2.3 Using Resource as Property Value | 64 | ||
2.3.2.4 Using Un-typed Literals as Property Values, rdf:value and rdf:parseType | 66 | ||
2.3.2.5 Using Typed Literal Values and rdf:datatype | 69 | ||
2.3.2.6 rdf:nodeID and More About Anonymous Resources | 72 | ||
2.3.2.7 rdf:ID, xml:base, and RDF/XML Abbreviation | 73 | ||
2.3.3 Other RDF Capabilities and Examples | 76 | ||
2.3.3.1 RDF Containers: rdf:Bag, rdf:Seq, rdf:Alt, and rdf:li | 76 | ||
2.3.3.2 RDF Collections: rdf:first, rdf:rest, rdf:nil, and rdf:List | 78 | ||
2.3.3.3 RDF Reification: rdf:statement, rdf:subject, rdf:predicate, and rdf:object | 80 | ||
2.4 Other RDF Sterilization Formats | 82 | ||
2.4.1 Notation-3, Turtle, and N-Triples | 82 | ||
2.4.2 Turtle Language | 83 | ||
2.4.2.1 Basic Language Feature | 83 | ||
2.4.2.2 Abbreviations and Shortcuts: Namespace Prefix, Default Prefix, and @base | 84 | ||
2.4.2.3 Abbreviations and Shortcuts: Token a, Comma, and Semicolons | 86 | ||
2.4.2.4 Turtle Blank Nodes | 88 | ||
2.5 Fundamental Rules of RDF | 89 | ||
2.5.1 Information Understandable by Machine | 90 | ||
2.5.2 Distributed Information Aggregation | 92 | ||
2.5.3 A Hypothetical Real-World Example | 93 | ||
2.6 More About RDF | 96 | ||
2.6.1 Dublin Core: Example of Pre-defined RDF Vocabulary | 96 | ||
2.6.2 XML vs. RDF? | 98 | ||
2.6.3 Use an RDF Validator | 101 | ||
2.7 Summary | 102 | ||
3 Other RDF-Related Technologies: Microformats, RDFa, and GRDDL | 104 | ||
3.1 Introduction: Why Do We Need These? | 104 | ||
3.2 Microformats | 105 | ||
3.2.1 Microformats: The Big Picture | 105 | ||
3.2.2 Microformats: Syntax and Examples | 106 | ||
3.2.2.1 From vCard to hCard Microformat | 106 | ||
3.2.2.2 Using hCard Microformat to Mark Up Page Content | 108 | ||
3.2.3 Microformats and RDF | 111 | ||
3.2.3.1 What Is So Good About Microformats? | 111 | ||
3.2.3.2 Microformats and RDF | 112 | ||
3.3 RDFa | 112 | ||
3.3.1 RDFa: The Big Picture | 112 | ||
3.3.2 RDFa Attributes and RDFa Elements | 113 | ||
3.3.3 RDFa: Rules and Examples | 114 | ||
3.3.3.1 RDFa Rules | 114 | ||
3.3.3.2 RDFa Examples | 116 | ||
3.3.4 RDFa and RDF | 121 | ||
3.3.4.1 What Is So Good About RDFa? | 121 | ||
3.3.4.2 RDFa and RDF | 121 | ||
3.4 GRDDL | 122 | ||
3.4.1 GRDDL: The Big Picture | 122 | ||
3.4.2 Using GRDDL with Microformats | 122 | ||
3.4.3 Using GRDDL with RDFa | 124 | ||
3.5 Summary | 124 | ||
4 RDFS and Ontology | 125 | ||
4.1 RDFS Overview | 125 | ||
4.1.1 RDFS in Plain English | 125 | ||
4.1.2 RDFS in Official Language | 126 | ||
4.2 RDFS + RDF: One More Step Toward Machine Readable | 127 | ||
4.2.1 A Common Language to Share | 127 | ||
4.2.2 Machine Inferencing Based on RDFS | 129 | ||
4.3 RDFS Core Elements | 130 | ||
4.3.1 The Big Picture: RDFS Vocabulary | 130 | ||
4.3.2 Basic Syntax and Examples | 130 | ||
4.3.2.1 Defining Classes | 130 | ||
4.3.2.2 Defining Properties | 136 | ||
4.3.2.3 More About Properties | 142 | ||
4.3.2.4 RDFS Datatypes | 145 | ||
4.3.2.5 RDFS Utility Vocabulary | 147 | ||
4.3.3 Summary So Far | 148 | ||
4.3.3.1 Our Camera Vocabulary | 148 | ||
4.3.3.2 Where Is the Knowledge? | 152 | ||
4.4 The Concept of Ontology | 152 | ||
4.4.1 What Is Ontology? | 153 | ||
4.4.2 The Benefits of Ontology | 153 | ||
4.5 Building the Bridge to Ontology: SKOS | 154 | ||
4.5.1 Knowledge Organization Systems (KOS) | 154 | ||
4.5.2 Thesauri vs. Ontologies | 156 | ||
4.5.3 Filling the Gap: SKOS | 157 | ||
4.5.3.1 What Is SKOS? | 157 | ||
4.5.3.2 SKOS Core Constructs | 158 | ||
4.5.3.3 Interlinking Concepts by Using SKOS | 163 | ||
4.6 Another Look at Inferencing Based on RDF Schema | 165 | ||
4.6.1 RDFS Ontology-Based Reasoning: Simple, Yet Powerful | 165 | ||
4.6.2 Good, Better, and Best: More Is Needed | 167 | ||
4.7 Summary | 168 | ||
5 OWL: Web Ontology Language | 170 | ||
5.1 OWL Overview | 170 | ||
5.1.1 OWL in Plain English | 170 | ||
5.1.2 OWL in Official Language: OWL 1 and OWL 2 | 171 | ||
5.1.3 From OWL 1 to OWL 2 | 173 | ||
5.2 OWL 1 and OWL 2: The Big Picture | 173 | ||
5.2.1 Basic Notions: Axiom, Entity, Expression, and IRI Names | 174 | ||
5.2.2 Basic Syntax Forms: Functional Style, RDF/XML Syntax, Manchester Syntax, and XML Syntax | 175 | ||
5.3 OWL 1 Web Ontology Language | 176 | ||
5.3.1 Defining Classes: The Basics | 176 | ||
5.3.2 Defining Classes: Localizing Global Properties | 178 | ||
5.3.2.1 Value Constraints: owl:allValuesFrom | 179 | ||
5.3.2.2 Enhanced Reasoning Power 1 | 181 | ||
5.3.2.3 Value Constraints: owl:someValuesFrom | 182 | ||
5.3.2.4 Enhanced Reasoning Power 2 | 183 | ||
5.3.2.5 Value Constraints: owl:hasValue | 183 | ||
5.3.2.6 Enhanced Reasoning Power 3 | 185 | ||
5.3.2.7 Cardinality Constraints: owl:cardinality, owl:min(max)Cardinality | 185 | ||
5.3.2.8 Enhanced Reasoning Power 4 | 187 | ||
5.3.3 Defining Classes: Using Set Operators | 187 | ||
5.3.3.1 Set Operators | 187 | ||
5.3.3.2 Enhanced Reasoning Power 5 | 189 | ||
5.3.4 Defining Classes: Using Enumeration, Equivalent, and Disjoint | 190 | ||
5.3.4.1 Enumeration, Equivalent, and Disjoint | 190 | ||
5.3.4.2 Enhanced Reasoning Power 6 | 192 | ||
5.3.5 Our Camera Ontology So Far | 192 | ||
5.3.6 Define Properties: The Basics | 194 | ||
5.3.7 Defining Properties: Property Characteristics | 199 | ||
5.3.7.1 Symmetric Properties | 199 | ||
5.3.7.2 Enhanced Reasoning Power 7 | 200 | ||
5.3.7.3 Transitive Properties | 201 | ||
5.3.7.4 Enhanced Reasoning Power 8 | 201 | ||
5.3.7.5 Functional Properties | 202 | ||
5.3.7.6 Enhanced Reasoning Power 9 | 204 | ||
5.3.7.7 Inverse Property | 204 | ||
5.3.7.8 Enhanced Reasoning Power 10 | 205 | ||
5.3.7.9 Inverse Functional Property | 205 | ||
5.3.7.10 Enhanced Reasoning Power 11 | 207 | ||
5.3.8 Camera Ontology Written Using OWL 1 | 207 | ||
5.4 OWL 2 Web Ontology Language | 211 | ||
5.4.1 What Is New in OWL 2? | 211 | ||
5.4.2 New Constructs for Common Patterns | 212 | ||
5.4.2.1 Common Pattern: Disjointness | 212 | ||
5.4.2.2 Common Pattern: Negative Assertions | 214 | ||
5.4.3 Improved Expressiveness for Properties | 215 | ||
5.4.3.1 Property Self-Restriction | 215 | ||
5.4.3.2 Property Self-Restriction: Enhanced Reasoning Power 12 | 216 | ||
5.4.3.3 Property Cardinality Restrictions | 216 | ||
5.4.3.4 Property Cardinality Restrictions: Enhanced Reasoning Power 13 | 218 | ||
5.4.3.5 More About Property Characteristics: Reflexive, Irreflexive, and Asymmetric Properties | 218 | ||
5.4.3.6 More About Property Characteristics: Enhanced Reasoning Power 14 | 220 | ||
5.4.3.7 Disjoint Properties | 220 | ||
5.4.3.8 Disjoint Properties: Enhanced Reasoning Power 15 | 221 | ||
5.4.3.9 Property Chains | 222 | ||
5.4.3.10 Property Chains: Enhanced Reasoning Power 16 | 224 | ||
5.4.3.11 Keys | 224 | ||
5.4.3.12 Keys: Enhanced Reasoning Power 17 | 225 | ||
5.4.4 Extended Support for Datatypes | 225 | ||
5.4.4.1 Wider Range of Supported Datatypes and Extra Built-In Datatypes | 226 | ||
5.4.4.2 Restrictions on Datatypes and User-Defined Datatypes | 226 | ||
5.4.4.3 Data Range Combinations | 228 | ||
5.4.5 Punning and Annotations | 229 | ||
5.4.5.1 Understanding Punning | 229 | ||
5.4.5.2 OWL Annotations, Axioms About Annotation Properties | 230 | ||
5.4.6 Other OWL 2 Features | 233 | ||
5.4.6.1 Entity Declarations | 233 | ||
5.4.6.2 Top and Bottom Properties | 234 | ||
5.4.6.3 Imports and Versioning | 234 | ||
5.4.7 OWL Constructs in Instance Documents | 237 | ||
5.4.8 OWL 2 Profiles | 241 | ||
5.4.8.1 Why We Need All These? | 241 | ||
5.4.8.2 Assigning Semantics to OWL Ontology: Description Logic vs. RDF-Based Semantics | 241 | ||
5.4.8.3 Three Faces of OWL 1 | 242 | ||
5.4.8.4 Understanding OWL 2 Profiles | 244 | ||
5.4.8.5 OWL 2 EL, QL, and RL | 245 | ||
5.4.9 Our Camera Ontology in OWL 2 | 248 | ||
5.5 Summary | 253 | ||
6 SPARQL: Querying the Semantic Web | 255 | ||
6.1 SPARQL Overview | 255 | ||
6.1.1 SPARQL in Official Language | 255 | ||
6.1.2 SPARQL in Plain English | 256 | ||
6.1.3 Other Related Concepts: RDF Data Store, RDF Database, and Triple Store | 257 | ||
6.2 Set up Joseki SPARQL Endpoint | 258 | ||
6.3 SPARQL Query Language | 261 | ||
6.3.1 The Big Picture | 263 | ||
6.3.1.1 Triple Pattern | 263 | ||
6.3.1.2 Graph Pattern | 264 | ||
6.3.2 SELECT Query | 266 | ||
6.3.2.1 Structure of a SELECT Query | 266 | ||
6.3.2.2 Writing Basic SELECT Query | 267 | ||
6.3.2.3 Using OPTIONAL Keyword for Matches | 271 | ||
6.3.2.4 Using Solution Modifier | 273 | ||
6.3.2.5 Using FILTER Keyword to Add Value Constraints | 275 | ||
6.3.2.6 Using Union Keyword for Alternative Match | 278 | ||
6.3.2.7 Working with Multiple Graphs | 281 | ||
6.3.3 CONSTRUCT Query | 286 | ||
6.3.4 DESCRIBE Query | 288 | ||
6.3.5 ASK Query | 289 | ||
6.4 What Is Missing from SPARQL? | 291 | ||
6.5 SPARQL 1.1 | 291 | ||
6.5.1 Introduction: What Is New? | 291 | ||
6.5.2 SPARQL 1.1 Query | 292 | ||
6.5.2.1 Aggregate Functions | 292 | ||
6.5.2.2 Subqueries | 294 | ||
6.5.2.3 Negation | 295 | ||
6.5.2.4 Expressions with SELECT | 297 | ||
6.5.2.5 Property Paths | 298 | ||
6.5.3 SPARQL 1.1 Update | 299 | ||
6.5.3.1 Graph Update: Adding RDF Statements | 300 | ||
6.5.3.2 Graph Update: Deleting RDF Statements | 301 | ||
6.5.3.3 Graph Update: LOAD and CLEAR | 303 | ||
6.5.3.4 Graph Management: Graph Creation | 303 | ||
6.5.3.5 Graph Management: Graph Removal | 303 | ||
6.6 Summary | 304 | ||
7 FOAF: Friend of a Friend | 305 | ||
7.1 What Is FOAF and What It Does | 305 | ||
7.1.1 FOAF in Plain English | 305 | ||
7.1.2 FOAF in Official Language | 306 | ||
7.2 Core FOAF Vocabulary and Examples | 307 | ||
7.2.1 The Big Picture: FOAF Vocabulary | 307 | ||
7.2.2 Core Terms and Examples | 308 | ||
7.3 Create Your FOAF Document and Get into the Friend Circle | 315 | ||
7.3.1 How Does the Circle Work? | 315 | ||
7.3.2 Create Your FOAF Document | 317 | ||
7.3.3 Get into the Circle: Publish Your FOAF Document | 319 | ||
7.3.4 From Web Pages for Human Eyes to Web Pages for Machines | 321 | ||
7.4 Semantic Markup: a Connection Between the Two Worlds | 322 | ||
7.4.1 What Is Semantic Markup | 322 | ||
7.4.2 Semantic Markup: Procedure and Example | 322 | ||
7.4.3 Semantic Markup: Feasibility and Different Approaches | 326 | ||
7.5 Summary | 328 | ||
8 Semantic Markup at Work: Rich Snippets and SearchMonkey | 329 | ||
8.1 Introduction | 329 | ||
8.1.1 Prerequisite: How Does a Search Engine Work? | 329 | ||
8.1.1.1 Basic Search Engine Tasks | 329 | ||
8.1.1.2 Basic Search Engine Workflow | 330 | ||
8.1.2 Rich Snippets and SearchMonkey | 332 | ||
8.2 Rich Snippets by Google | 333 | ||
8.2.1 What Is Rich Snippets: An Example | 333 | ||
8.2.2 How Does It Work: Semantic Markup Using Microformats/RDFa | 333 | ||
8.2.2.1 Rich Snippets Powered by Semantic Markup | 333 | ||
8.2.2.2 Microformats Supported by Rich Snippets | 335 | ||
8.2.2.3 Ontologies Supported by Rich Snippets | 336 | ||
8.2.3 Test It Out Yourself | 336 | ||
8.3 SearchMonkey from Yahoo | 336 | ||
8.3.1 What Is SearchMonkey: An Example | 337 | ||
8.3.2 How Does It Work: Semantic Markup Using Microformats/RDFa | 338 | ||
8.3.2.1 SearchMonkey Architecture | 339 | ||
8.3.2.2 Microformats Supported by SearchMonkey | 343 | ||
8.3.2.3 Ontologies Supported by SearchMonkey | 343 | ||
8.3.3 Test It Out Yourself | 343 | ||
8.4 Summary | 344 | ||
Reference | 344 | ||
9 Semantic Wiki | 345 | ||
9.1 Introduction: From Wiki to Semantic Wiki | 345 | ||
9.1.1 What Is a Wiki? | 345 | ||
9.1.2 From Wiki to Semantic Wiki | 347 | ||
9.2 Adding Semantics to Wiki Site | 349 | ||
9.2.1 Namespace and Category System | 350 | ||
9.2.2 Semantic Annotation in Semantic MediaWiki | 353 | ||
9.2.2.1 Semantic Annotation: Links | 353 | ||
9.2.2.2 Semantic Annotation: Text | 357 | ||
9.3 Using the Added Semantics | 361 | ||
9.3.1 Browsing | 361 | ||
9.3.1.1 FactBox | 361 | ||
9.3.1.2 Semantic Browsing Interface | 362 | ||
9.3.2 Wiki Site Semantic Search | 364 | ||
9.3.2.1 Direct Wiki Query: Basics | 364 | ||
9.3.2.2 Direct Wiki Query: Advanced Search | 367 | ||
9.3.2.3 Displaying Information | 369 | ||
9.3.3 Inferencing | 370 | ||
9.4 Where Is the Semantics? | 373 | ||
9.4.1 SWiVT: an Upper Ontology for Semantic Wiki | 374 | ||
9.4.2 Understanding OWL/RDF Exports | 376 | ||
9.4.3 Importing Ontology: a Bridge to Outside World | 386 | ||
9.5 The Power of the Semantic Web | 389 | ||
9.6 Use Semantic MediaWiki to Build Your Own Semantic Wiki | 390 | ||
9.7 Summary | 390 | ||
10 DBpedia | 392 | ||
10.1 Introduction to DBpedia | 392 | ||
10.1.1 From Manual Markup to Automatic Generation of Annotation | 392 | ||
10.1.2 From Wikipedia to DBpedia | 393 | ||
10.1.3 The Look and Feel of DBpedia: Page Redirect | 395 | ||
10.2 Semantics in DBpedia DBpedia look and feel | 398 | ||
10.2. Infobox Template | 398 | ||
10.2.2 Creating DBpedia Ontology | 401 | ||
10.2.2.1 The Need for Ontology | 401 | ||
10.2.2.2 Mapping Infobox Templates to Classes | 403 | ||
10.2.2.3 Mapping Infobox Template Attributes to Properties | 405 | ||
10.2.3 Infobox Extraction Methods | 407 | ||
10.2.3.1 Generic Infobox Extraction Method | 408 | ||
10.2.3.2 Mapping-Based Infobox Extraction Method | 408 | ||
10.3 Accessing DBpedia Dataset | 409 | ||
10.3.1 Using SPARQL to Query DBpedia | 410 | ||
10.3.1.1 SPARQL Endpoints for DBpedia | 410 | ||
10.3.1.2 Examples of Using SPARQL to Access DBpedia | 411 | ||
10.3.2 Direct Download of DBpedia Datasets | 414 | ||
10.3.2.1 The Wikipedia Datasets | 414 | ||
10.3.2.2 DBpedia Core Datasets | 414 | ||
10.3.2.3 Extended Datasets | 418 | ||
10.3.3 Access DBpedia as Linked Data | 419 | ||
10.4 Summary | 421 | ||
Reference | 421 | ||
11 Linked Open Data | 422 | ||
11.1 The Concept of Linked Data and Its Basic Rules | 422 | ||
11.1.1 The Concept of Linked Data | 422 | ||
11.1.2 How Big Is the Web of Linked Data and the LOD Project | 424 | ||
11.1.3 The Basic Rules of Linked Data | 425 | ||
11.2 Publishing RDF Data on the Web | 426 | ||
11.2.1 Identifying Things with URIs | 426 | ||
11.2.1.1 Web Document, Information Resource, and URI | 426 | ||
11.2.1.2 Non-information Resources and Their URIs | 428 | ||
11.2.1.3 URIs for Non-information Resources: 303 URIs and Content Negotiation | 429 | ||
11.2.1.4 URIs for Non-information Resources: Hash URIs | 432 | ||
11.2.1.5 URIs for Non-information Resources: 303 URIs vs. Hash URIs | 434 | ||
11.2.1.6 URI Aliases | 434 | ||
11.2.2 Choosing Vocabularies for RDF Data | 436 | ||
11.2.3 Creating Links to Other RDF Data | 440 | ||
11.2.3.1 Basic Language Constructs to Create Links | 440 | ||
11.2.3.2 Creating Links Manually | 444 | ||
11.2.3.3 Creating Links Automatically | 446 | ||
11.2.4 Serving Information as Linked Data | 447 | ||
11.2.4.1 Minimum Requirements for Being Linked Open Data | 447 | ||
11.2.4.2 Example: Publishing Linked Data on the Web | 449 | ||
11.2.4.3 Make Sure You Have Done It Right | 451 | ||
11.3 The Consumption of Linked Data | 452 | ||
11.3.1 Discover Specific Target on the Linked Data Web | 454 | ||
11.3.1.1 Semantic Web Search Engine for Human Eyes | 454 | ||
11.3.1.2 Semantic Web Search Engine for Applications | 456 | ||
11.3.2 Accessing the Web of Linked Data | 458 | ||
11.3.2.1 Using a Linked Data Browser | 458 | ||
11.3.2.2 Using SPARQL Endpoints | 463 | ||
11.3.2.3 Accessing the Linked Data Web Programmatically | 468 | ||
11.4 Linked Data Application | 468 | ||
11.4.1 Linked Data Application Example: Revyu | 469 | ||
11.4.1.1 Revyu: An Overview | 469 | ||
11.4.1.2 Revyu: Why It Is Different | 474 | ||
11.4.2 Web 2.0 Mashups vs. Linked Data Mashups | 476 | ||
11.5 Summary | 478 | ||
12 Building the Foundation for Development on the Semantic Web | 480 | ||
12.1 Development Tools for the Semantic Web | 480 | ||
12.1.1 Frameworks for the Semantic Web Applications | 480 | ||
12.1.1.1 What Is a Framework and Why We Need It? | 480 | ||
12.1.1.2 Jena | 482 | ||
12.1.1.3 Sesame | 482 | ||
12.1.1.4 Virtuoso | 482 | ||
12.1.1.5 Redland | 483 | ||
12.1.2 Reasoners for the Semantic Web Applications | 484 | ||
12.1.2.1 What Is a Reasoner and Why We Need It? | 484 | ||
12.1.2.2 Pellet | 485 | ||
12.1.2.3 RacerPro | 485 | ||
12.1.2.4 Jena | 486 | ||
12.1.2.5 Virtuoso | 486 | ||
12.1.3 Ontology Engineering Environments | 487 | ||
12.1.3.1 What Is an Ontology Engineering Environment and Why We Need It? | 487 | ||
12.1.3.2 Protégé | 488 | ||
12.1.3.3 NeOn | 489 | ||
12.1.3.4 TopBraid Composer | 490 | ||
12.1.4 Other Tools: Search Engines for the Semantic Web | 491 | ||
12.1.5 Where to Find More? | 491 | ||
12.2 Semantic Web Application Development Methodology | 491 | ||
12.2.1 From Domain Models to Ontology-Driven Architecture | 491 | ||
12.2.1.1 Domain Models and MVC Architecture | 491 | ||
12.2.1.2 The Uniqueness of Semantic Web Application Development | 493 | ||
12.2.1.3 Ontology-Driven Software Development | 495 | ||
12.2.1.4 Further Discussions | 497 | ||
12.2.2 An Ontology Development Methodology Proposed by Noy and McGuinness | 497 | ||
12.2.2.1 Basic Tasks and Fundamental Rules | 497 | ||
12.2.2.2 Basic Steps of Ontology Development | 498 | ||
12.2.2.3 Other Considerations | 500 | ||
12.3 Summary | 502 | ||
Reference | 503 | ||
13 Jena: A Framework for Development on the Semantic Web | 504 | ||
13.1 Jena: A Semantic Web Framework for Java | 504 | ||
13.1.1 What Is Jena and What It Can Do for Us? | 504 | ||
13.1.2 Getting Jena Package | 505 | ||
13.1.3 Using Jena in Your Projects | 508 | ||
13.1.3.1 Using Jena in Eclipse | 508 | ||
13.1.3.2 Hello World! from Semantic Web Application | 510 | ||
13.2 Basic RDF Model Operations | 514 | ||
13.2.1 Creating an RDF Model | 515 | ||
13.2.2 Reading an RDF Model | 520 | ||
13.2.3 Understanding an RDF Model | 522 | ||
13.3 Handling Persistent RDF Models | 528 | ||
13.3.1 From In-memory Model to Persistent Model | 528 | ||
13.3.2 Setting Up MySQL | 529 | ||
13.3.3 Database-Backed RDF Models | 530 | ||
13.3.3.1 Single Persistent RDF Model | 530 | ||
13.3.3.2 Multiple Persistent RDF Models | 535 | ||
13.4 Inferencing Using Jena | 537 | ||
13.4.1 Jena Inferencing Model | 537 | ||
13.4.2 Jena Inferencing Examples | 538 | ||
13.5 Summary | 544 | ||
14 Follow Your Nose: A Basic Semantic Web Agent | 546 | ||
14.1 The Principle of Follow-Your-Nose Method | 546 | ||
14.1.1 What Is Follow-Your-Nose Method? | 546 | ||
14.1.2 URI Declarations, Open Linked Data, and Follow-Your-Nose Method | 548 | ||
14.2 A Follow-Your-Nose Agent in Java | 549 | ||
14.2.1 Building the Agent | 549 | ||
14.2.2 Running the Agent | 556 | ||
14.2.3 More Clues for Follow Your Nose | 558 | ||
14.2.4 Can You Follow Your Nose on Traditional Web? | 559 | ||
14.3 A Better Implementation of Follow-Your-Nose Agent: Using SPARQL Queries | 561 | ||
14.3.1 In-memory SPARQL Operation | 562 | ||
14.3.2 Using SPARQL Endpoints Remotely | 566 | ||
14.4 Summary | 569 | ||
15 More Application Examples on the Semantic Web | 571 | ||
15.1 Building Your Circle of Trust: A FOAF Agent You Can Use | 571 | ||
15.1.1 Who Is on Your E-mail List? | 571 | ||
15.1.2 The Basic Idea | 572 | ||
15.1.3 Building the EmailAddressCollector Agent | 575 | ||
15.1.3.1 EmailAddressCollector | 575 | ||
15.1.3.2 Running the EmailAddressCollector Agent | 583 | ||
15.1.4 Can You Do the Same for Traditional Web? | 584 | ||
15.2 A ShopBot on the Semantic Web | 585 | ||
15.2.1 A ShopBot We Can Have | 585 | ||
15.2.2 A ShopBot We Really Want | 586 | ||
15.2.2.1 How Does It Understand Our Needs? | 586 | ||
15.2.2.2 How Does It Find the Next Candidate? | 590 | ||
15.2.2.3 How Does It Decide Whether There Is a Match or Not? | 593 | ||
15.2.3 Building Our ShopBot | 595 | ||
15.2.3.1 Utility Methods and Class | 595 | ||
15.2.3.2 Processing the Catalog Document | 601 | ||
15.2.3.3 The Main Work Flow | 605 | ||
15.2.3.4 Running Our ShopBot | 609 | ||
15.2.4 Discussion: From Prototype to Reality | 611 | ||
15.3 Summary | 612 | ||
Index | 613 |