Posted:February 27, 2019

KBpediaHere’s the Best Starting Point to Learn About the Knowledge Graph

I’ve always favored a way to describe the first successful operation of a computer program as ‘first twitch.’ It brings to mind the stirrings of Dr. Frankenstein’s monster when first zapped with electricity. It is the moment when we first see how something works, and that it might continue to work into the future.

The ‘monster’ on the table for today’s exercise is KBpedia, which I have been talking about much recently since we released it as open source in late 2018. KBpedia is a computable knowledge graph that sits astride Wikipedia and Wikidata and other leading knowledge bases. Its baseline 55,000 reference concepts provide a flexible and expandable means for relating your own data records to a common basis for reasoning and inferring logical relations and for mapping to virtually any external data source or schema. The framework is an increasingly clean starting basis for doing knowledge-based artificial intelligence (KBAI) and to train and use virtual agents. KBpedia combines seven major public knowledge bases — Wikipedia, Wikidata, schema.org, DBpedia, GeoNames, OpenCyc, and UMBEL.

It is mighty hard to describe knowledge graphs or ontologies in the abstract. This difficulty is especially hard when trying to convey a knowledge graph to someone who is not familiar with semantic technologies and tools. Thus, while in subsequent posts over the coming weeks I will dive into more details, my purpose today is to help those with little background to put in in place a sufficient basis to gain their own ‘first twitch’ for KBpedia. We will do so with only a small portion of the KBpedia distribution package and an open-source tool called Protégé. Hopefully, with about 15-30 min of effort, you can set up your own local environment to get KBpedia to twitch. (Five min if you already have Protégé installed.)

It’s alive!

Getting Set Up

We will begin our familiarization using only two files from the open source KBpedia distribution package. First, go to the KBpedia GitHub repository and download the two files of the kko.n3 and kbpedia_reference_concepts.zip. In the case of kko.n3, which is the small upper ontology for KBpedia, you will copy-and-paste the code to a local file and name it the same. In the case of kbpedia_reference_concepts.zip, which contains the main substance of KBpedia, you should download the file and then unzip it in a directory you can find on your local machine. The unzipped file is called kbpedia_reference_concepts.n3. For simplicity, put this and kko.n3 file into the same directory. (In our production settings we use multiple sub-directories.)

Second, you will need to download and install Protégé, an open-source ontology development framework with more than 300,000 users. (There are other ontology viewers or development frameworks that can readily run KBpedia, but Protégé is the most widely used, free one.) Go to the Protégé download page and follow the instructions for your particular operating system. You should fill out the new user registration (though you can claim you are already registered and still download it directly). The version I installed for this example is version 5.5 beta (though any of the version 5.2 forward should be fine as well.) The Protégé distribution comes as a zip file, so you should unzip it into a directory of your choice. To complete the set-up you will also need the most recent version of Java installed on your machine; it you do not have it, here are installation instructions.

Next, to start up Protégé, invoke the executable in your Protégé directory. It will take a few seconds for the program to load. Once the main screen appears, go to File and then Open, and then navigate to the directory to where you stored kbpedia_reference_concepts.n3. Pick that file and click the Open button.

The first time you load KBpedia you are likely to get the following error message:

Possible Loading Error

Figure 1: Possible Error Message Upon Loading

Follow the instructions on the screen to find the second needed file, kko.n3, which I just suggested you store in the same directory. (Once you save your current session, the next time you start up this error will not appear.) Also, next you work with the system, you can open KBpedia by using the File → Open Recent option. Lastly, you may encounter some performance or display issues. I conclude this article with a couple of use tips for Protégé.

Taking the Tour

Upon successful start-up, you will see the Protégé main screen as shown in Figure 2. Let me briefly cover some of the main conventions of the program. The three key structural aspects of the Protégé program are its main menu, its tab structure, and the views (or panes) shown for each tab where it appears on the standard interface ( ). At start-up we always begin at the Active ontology tab, for which I highlight some of its key panes and functionality:

Main Protégé Screen

Figure 2: Main KBpedia Screen on Protégé

The ontology header section ( ) is where all of the metadata for the knowledge graph resides. Such material includes title, creators, version notes and so forth. The metrics for the ontology resides in the second view ( ). We see, for example, that this expression of KBpedia has more than 54,000 classes (reference concepts) and more than 5,000 properties. We also see in the third view ( ) that KBpedia requires the SKOS and KKO ontology imports. Also note the search button ( ), which we will use frequently, and the tab structure and order ( ). We will modify that structure in our next set of steps.

Because Protégé, like many integrated development environments (IDEs), is highly configurable, let’s detour for a short step to see how we can modify how our program looks. I am going to delete and add tabs to make the tab structure conform to the remaining screen shots.

To change tabs in Protégé, let’s refer to Figure 3:

Adding Tab Views

Figure 3: Adding Tab Views to Protégé

We effect the general layout of the system using the Window → Tabs option from the main menu. You delete a tab by clicking on the arrow shown for each tab as presented in the standard interface. You add tabs by selecting one of the options in the Tabs menu ( ). Note that active tabs are indicated by the checkmark ( ). New tabs are added to the right of the tab sequence ( ). Thus, to change the ordering of tabs, one must delete and then add tabs in the order desired. You can follow these steps if you want the tab ordering to reflect the screen shots below.

[This same main menu Window option is where you can change the views (panes) for each tab. However, we don’t discuss that customization further in this article.]

Discovering and Inspecting Reference Concepts

When your tabs are to your liking, let’s begin inspecting KBpedia itself. Let’s first move to the Classes tab screen, the most important to understanding the hierarchy and structure of KBpedia. Note when we change tabs that the border colors also change. Each tab in Protégé is demarked with its own color.  The actual class structure is shown in the left-hand pane ( ) in Figure 4. The tree structure may be expanded or collapsed by clicking on the triangles shown for a given item (items without the triangle are terminal nodes).  The direction the triangle points indicates the expand or collapse mode. Depending on your Protégé settings, the default opening for this tree may be expanded (by levels) or collapsed. What we are showing in Figure 4 is the highest structure of KBpedia, which can also be separately inspected with the kko.n3 file alone. (Peirce scholars and ontologists may prefer to start there.)

Because KBpedia is an organized, computable structure of types (classes), the majority of the items in KBpedia may be found under the SuperTypes branch ( ). This is where you will spend most of your time inspecting the existing 55 K reference concepts (RCs).

Another thing to note is the multi-paned structure of the layout ( ), which I noted before. These panes are configurable, and may be moved and resized at any location across the tab. Figure 4 is close to the default Protégé settings.

Initial Class View

Figure 4: Initial View from the Class Tab

Search ( ) is one of the most important functions in the system, since it is the primary way to find specific RCs when there are thousands. Search is also useful for all other information in the system. Given this importance, let’s take another short detour to the search screen. Click search.

That brings up the search screen, as shown in the next Figure 5. There is some interesting functionality here, worth calling out individually. Let’s begin a search for ‘mammal’:

Class View Using 'Mammal'

Figure 5: Class View After Doing A ‘Mammal’ Search

As we enter the search term, only ‘mamma’ so far in the case shown, there is a lookahead (auto-complete) function to match the entered text ( ), beginning with three characters. It is also important to note there are some pretty powerful search options ( ); I often use the Show all results choice, though sometimes lists can grow to be huge! (Using few search characters for common letter combinations, for example).

The search screen organizes its results into multiple categories ( ) (scroll down), including descriptions and annotations. The most important matches, namely to preferred labels and IRIs, appear at the top of the listing. It is also possible to highlight results on these lists and create copies ( ) for posting to the clipboard. I use this functionality frequently.

Once we have selected ‘Mammal’ from the search results list, the search screen remains open (useful for testing many putative matches), and the tree in the Class view updates and more RC results are automatically displayed, as Figure 6 shows (in this case, I have closed the search screen so as to not obscure the main screen):

Class View Using 'Mammal'

Figure 6: Class View After Doing A ‘Mammal’ Search

We now see a much-expanded tree in the left Class hierarchy pane ( ). We can again click the triangles to collapse or expand that portion of the tree.

For the selected item in the tree, again ‘Mammal’ in this case, we can see its annotations and linkage relationships ( ), including labels, descriptions, notes and links. The Descriptions pane ( ) shows us the formal relationships and other assertions for this RC in the knowledge graph. (Since we are not working with all KBpedia files, this portion may not be as complete as when all files are included.)

Thie general process can be repeated over and over to gain an understanding. You can navigate the tree via scrolling and expanding and collapsing nodes, or searching for terms or stems as you encounter then. Of course, both navigation and searching are done concurrently during discovery mode. It is this process, in my view, that best leads to first twitch for KBpedia by better understanding the structure, scope and relationships for the graph’s 55 K reference concepts.

Discovering and Inspecting Properties

These same conventions and approaches may also be used for understanding the properties (relations) in KBpedia, as I show in Figure 7. First, note ( ) we have split our properties into three groups: object properties, data properties, and annotation properties:

Initial Object Property View

Figure 7: Initial View from the Object Property Tab

These are the standard splits in the OWL language. How we use these splits and their relation to the guidance of Charles Sanders Peirce is described in another article. In essence, object properties are those that connect to an item (with a URI or IRI) already in the system; data properties are literal strings and descriptions connected to the subject item; and annotation properties are those that describe or point to the item. We’ll just use an object property example here, though the use and navigation applies to the other two property categories as well

The Object properties tab in Figure 7 also has a search function ( ), exactly similar to what was described for classes. We also see a tree structure at the left that works the same as for classes ( ). However, besides the relations splits due to Peirce, there are two other major property differences for KBpedia compared to most knowledge graphs or ontologies. The first difference is the sheer number of properties, more than 5 K in the case of KBpedia. The second is the logical organization of those properties, beginning with the three splits due to Peirce, but extending down to an emerging, logical hierarchy of property types.

To see some of this, let’s do a search for the property ‘color’ [( ) in Figure 7]. The result, again working similar to what we saw for classes, I show in Figure 8:

Object Property View Using 'Color'

Figure 8: Object Property View for ‘color’

Like before, we now see an expanded tree highlighting the ‘color’ property ( ), again accompanied by metadata and other structural aspects of the Object properties ( ).

As before, you can use a combination of scrolling, tree expansions and searching to discover the properties in KBpedia. Do make sure and check out the Data properties and Annotation properties tabs as well.

Performance and Preferences

You very well may experience some performance issues with Protégé as it comes out of the box. One likely cause are the memory settings that you may find in the run.bat file that you can find in the main directory where you installed Protégé. As a quick fix, try updating these settings in that file to these values before the next time you start the application:

-Xmx2500M -Xms2000M

Also note there are many customization options in Protégé. If you get captivated with the tool, I encourage you to explore the plugins available and the ways to modify the application interface. See especially File → Preferences, with the Renderer and Plugin tabs good places to look.

The Framework is a Beginning

These two files are at the core of KBpedia, but do not constitute its entirety. These two files are likely the simplest, adequate representation for entering the KBpedia construct.

I will be talking in coming weeks about additional aspects of discovering what is in KBpedia and how it may be used. We’ll be talking about working with the system, use cases, and how to discover more about the system using the KBpedia Web site. I do think, however, that the basic inspections of the system outlined here are one of the better ways to get familiar and feel a twitch with the system.

There are many moving parts in KBpedia and much interconnection. We are constantly finding and fixing errors in addition to improving the scope of the system. Should you encounter questionable assignments or missing relationships, please do let us know. We welcome all suggestions for improvements and commit to continued quality improvements and releases.

Posted:February 6, 2019

KBpediaRelease Constitutes What We Consider As First, Complete Open-Source Baseline

We first released KBpedia as open source in October 2018 with version 1.60. We needed to release it then because of the pending release of my new book, A Knowledge Representation Practionary: Guidelines Based on Charles Sanders Peirce (Springer), which has liberal ties to KBpedia. We were pleased with that first open-source release of KBpedia, but did not have time to complete our full list of what we considered to be a proper baseline for the initial release. We have spent the past few months completing that list and are now pleased to announce version 2.00 of KBpedia, what we consider to be the first complete, open-source baseline of this knowledge artifact.

KBpedia is a computable knowledge graph that sits astride Wikipedia and Wikidata and other leading knowledge bases. Its baseline 55,000 reference concepts provide a flexible and expandable means for relating your own data records to a common basis for reasoning and inferring logical relations and for mapping to virtually any external data source or schema. The framework is a clean starting basis for doing knowledge-based artificial intelligence (KBAI) and to train and use virtual agents. KBpedia combines seven major public knowledge bases — Wikipedia, Wikidata, schema.org, DBpedia, GeoNames, OpenCyc, and UMBEL. KBpedia supplements these core KBs with mappings to more than a score of additional leading vocabularies. The entire KBpedia structure is computable, meaning it can be reasoned over and logically sliced-and-diced to produce training sets and reference standards for machine learning and data interoperability. KBpedia provides a coherent overlay for retrieving and organizing Wikipedia or Wikidata content. KBpedia greatly reduces the time and effort traditionally required for knowledge-based artificial intelligence (KBAI) tasks.

KBpedia is also a comprehensive knowledge structure for promoting data interoperability. KBpedia’s upper structure, the KBpedia Knowledge Ontology (KKO), is based on the universal categories and knowledge representation theories of the great 19th century American logician, philosopher, polymath and scientist, Charles Sanders Peirce. This design provides a logical and coherent underpinning to the entire KBpedia structure. The design is also modular and fairly straightforward to adapt to enterprise or domain purposes. KBpedia provides a powerful reference scaffolding for bringing together your own internal data stovepipes into a comprehensive whole. KBpedia, and extensions specific to your own domain needs, can be deployed incrementally, gaining benefits each step of the way, until you have a computable overlay tieing together all of your valuable information assets.

Major Activities to Complete the Baseline

Some areas received major attention and some were largely ignored in completing this open-source baseline of KBpedia. For example, no changes (other than minor cleanup often related to other changes) were made to the property scope of KBpedia or their mappings to Wikidata or schema.org. The typologies were also not adjusted or expanded (except for minor cleanup related to other changes). The general scope of KBpedia remained virtually unchanged. However, a number of areas were targeted for specific attention and improvement. Notably:

  • Definitions were completed for 100% of the 55,000 reference concepts. Since the decision to open source KBpedia, the number of concepts with definitions grew by nearly 40%, or new definitions for about 15,000 entries;
  • Mappings to instances and classes in Wikidata were greatly expanded. Mappings now exist to 32 million entities in Wikidata, representing over 80% of the useful data in that system [1].  Over 80% of KBpedia’s 55 K reference concepts are also now mapped to specific Wikidata entries;
  • Mappings to Wikipedia also grew and kept pace with this Wikidata mapping. Total mappings to Wikipedia only grew 10% because of the larger number of prior mappings. Still, coverage of Wikipedia is also now about 80% based on either mapped RCs or coverage of Wikipedia articles;
  • Due to early mapping choices, KBpedia was not consistent in the use of plural v singular terms. We inspected and converted about 4500 plural concepts into singular expressions, consistent with what we see as best naming practices;
  • Because of this mixed naming, and some other synonym issues, we had a pool of reference concept (RC) duplicates in the system that totaled nearly 1400 items, which were consolidated and then removed. The overall size of KBpedia, however, did not change much, since all of these inspections also resulted in the addition of about 1200 new concepts, often at intermediate layers that improved the overall graph connectivity; and
  • Since the initiation of KBpedia, about 21,000 new concepts have been added over the starting OpenCyc RC structure. Each of these 21,000 RCs was reviewed, with about 5,000 flagged for detailed scrutiny. All of these flagged items were further reviewed, frequently resulting in new definitions, new parental assignments, new altLabels, or the addition of other property relations.

Despite these massive efforts, we are certainly not claiming an error-free structure. Logic and consistency tests are a constant activity and the addition or deletion of new concepts also requires testing and sometimes changes. Nonetheless, we are proud of this version 2.00 and believe KBpedia to be the cleanest it has ever been.

Statistics on the KBpedia v 200 Release

I show in the following table the statistics and changes compared to the first open-source release of KBpedia (v. 160) and the prior and last proprietary release (v. 151). The comparison to v 151 represents the total changes in the move to open source. Please note in the table that we measure coverage as the either the larger of: a) percent of external concepts mapped; or b) percent of KBpedia RCs mapped to the external source (predominantly unique).

From 1.60 From 1.51
Structure Value % Change % Change Coverage
No. of RCs 54,713 -0.3% 2.4%
KKO 173 0.0% -0.6%
Standard RCs 54,540 -0.3% 2.4%
Std RCs w/ definitions 54,537 33.2% 38.4% 100%
No. of mapped vocabularies 23 0.0% -14.8%
Core KBs 7 0.0% 16.7%
Extended vocabs 16 0.0% -23.8%
No. of typologies 68 0.0% 7.9%
Core entity types 33 0.0% 0.0%
Other core types 5 0.0% 0.0%
Extended types 30 0.0% 20.0%
No. of properties 4,847 0.0% 92.4%
RC Mappings 158,789 14.0% 38.0%
Wikipedia 44,342 5.3% 9.9% 81%
Wikidata 44,909 63.8% 794.4% 82%
schema.org 845 0.0% 15.1% 99%
DBpedia ontology 764 0.0% 0.0% 99%
GeoNames 918 0.0% 0.0% 99%
OpenCyc 33,372 -0.5% -0.5% 61%
UMBEL 33,390 -0.3% -0.3% 61%
Extended vocabs 249 0.0% -4.2%
Property Mappings 4,847 0.0% 92.4%
Wikidata 3,970 0.0% 57.6% 86%
schema.org 877 0.0% N/A 92%

The table shows the significant improvements made to KBpedia since the decision to release it as open source. The property mappings nearly doubled, now with significant mappings to both Wikidata and schema.org properties. The amount of mappings to Wikidata entities (Q items) increased nearly eight-fold (8 x), with coverage now more than 80 percent to both Wikidata and Wikipedia. The structure is fairly clean and consistent, with all reference concepts now including a definition, and most with a slew of alternative labels to improve matching and retrieval. Through its mapped sources, KBpedia links to more than 30 million entities, most all with data attributes (Wikidata) and complete articles (Wikipedia). The system is inherently designed for expansion into multiple languages.

Moving Beyond the Baseline

Of course, a knowledge artifact like KBpedia can be bounded in many ways. It is somewhat arbitrary what we define as a proper baseline. Our general image was a clean and computable framework adhering to best practices that maps to at least 80% of both Wikipedia and Wikidata. We have accomplished this baseline in the current release.

But our ambitions for KBpedia do not end there. Here are some of the major areas we will be working on for future versions:

  • Still better definitions for many concepts, particularly those with short or limited definitions. A few thousand candidates exist for this attention;
  • Adding another 1,000 or so new Wikidata Q items will increase instance coverage to more than 97% and raise class coverage to over 80%;
  • Complete the products and services mappings to the UNSPSC (United Nations Standard Products and Services Code) classification scheme, plus the likely split of the Products typology into three distinct branches;
  • Improved automatic tests for errors and oversights. We will be documenting our mapping experiences, among other topics, in a new ‘In the Trenches’ blog series I will begin early this year;
  • Test marginal overlaps between SuperTypes (typologies) for various reference concepts in order to improve assignments and increase disjointedness assertions even further;
  • Cross-check existing mappings from external sources to Wikidata against KBpedia assignments (GeoNames features, for example) and reconcile differences;
  • Create various vector files for the KBpedia reference nodes using techniques such as explicit semantic analysis (ESA), word2vec, GloVe, and perhaps others; and
  • Open source the build code for KBpedia.

Quite a while back I estimated that KBpedia might eventually grow to 85 K reference concepts or so in order to provide an equivalent, complete baseline coverage of topics across human knowledge domains. After this most recent detailed review, I think those prior numbers to be an overestimate. After detailed inspection and comparison with Wikipedia and Wikidata, I now suspect a ‘complete’ structure may require only 60 K to 65 K reference concepts. (Of course, the depth or breadth of KBpedia are virtually expandable to capture any knowledge domain.) This reduced estimate also includes that the present KBpedia has perhaps 1000 – 2000 unduly specific items (lists of individual species, for example) that probably should be culled to bring the overall structure into balance.

In any case, we welcome suggestions for further enhancements or tackling your own improvements. Please let me know what ideas you may have.

To Get the Goodies

The KBpedia Web site provides a working KBpedia explorer and demo of how the system may be applied to local content for tagging or analysis. KBpedia splits between entities and concepts, on the one hand, and splits in predicates based on attributes, external relations, and pointers or indexes, all informed by Charles Peirce’s prescient theories of knowledge representation.

Mappings to all external sources are provided in the linkages to the external resources file in the KBpedia downloads. (A larger inferred version is also available.) The external sources keep their own record files. KBpedia distributions provide the links. However, you can access these entities through the KBpedia explorer on the project’s Web site (see these entity examples for cameras, cakes, and canyons; clicking on any of the individual entity links will bring up the full instance record. Such reachthroughs are straightforward to construct.)

Here are the various KBpedia resources that you may download or use for free with attribution:

  • The complete KBpedia v 200 knowledge graph (8.5 MB, zipped). This download is likely your most useful starting point
  • KBpedia’s upper ontology, KKO (332 KB), which is easily inspected and navigated in an editor
  • The annotated KKO (321 KB). This is NOT an active ontology, but is has the upper concepts annotated to more clearly show the Peircean categories of Firstness (1ns), Secondness (2ns), and Thirdness (3ns)
  • The 68 individual KBpedia typologies in N3 format
  • The KBpedia mappings to the seven core knowledge bases and the additional extended knowledge bases in N3 format
  • A version of the full KBpedia knowledge graph extended with linkages to the external resources (10.5 MB, zipped), and
  • A version of the full KBpedia knowledge graph extended with inferences and linkages (14.7 MB, zipped).

The last two resources require time and sufficient memory to load. We invite and welcome contributions or commentary on any of these resources.

All resources are available under the Creative Commons Attribution 4.0 International (CC BY 4.0) license. KBpedia’s development to date has been sponsored by Cognonto Corporation.

Notes

[1] Useful mappings exclude mappings to internal Wikimedia sources (such as templates, categories, or infoboxes on Wikipedia and Wikidata) and scholarly articles (linked in other manners). There are about 44 million ‘useful’ records in the current Wikipedia based on these filters.

Posted:January 2, 2019

A Knowledge Representation PractionaryAvailable in Print or E-book Forms

I’m pleased that shortly before Christmas my new book, A Knowledge Representation Practionary: Guidelines Based on Charles Sanders Peirce (Springer), became available in hardcopy form. The e-book had been available for about two weeks prior to that.

The 464 pp book is available from Springer or Amazon (or others). See my earlier announcement for book details and the table of contents.

Individuals with a Springer subscription may get a softcover copy of the e-book for $24.99 under Springer’s MyCopy program. The standard e-book is available for $129 and hardcover copies are available for $169; see the standard Springer order site. Students or individuals without Springer subscriptions who can not afford these prices should contact me directly for possible alternatives. I will do what I can to provide affordable choices.

Posted:November 20, 2018

A Knowledge Representation PractionaryPractical Guidance on How to Leverage Knowledge Graphs, Semantic Technologies, and KBpedia

As readers of this blog well know, I am passionate on topics related to semantic technologies, knowledge graphs (ontologies), data structs, and artificial intelligence. Readers also probably know that I have found Charles S. Peirce, the 19th century American logician, scientist, and philosopher, to have remarkable insights on all aspects of knowledge representation. I’m proud to now announce my new book, A Knowledge Representation Practionary: Guidelines Based on Charles Sanders Peirce (Springer), that combines these viewpoints into a comprehensive whole. The 464 pp book is available for pre-order from Springer or from Amazon (and others, I’m sure). Formal release is due the second week of December.

Peirce’s practical guidelines and universal categories provide a structured approach to knowledge representation that captures differences in events, entities, relations, attributes, types, and concepts. Besides the ability to capture meaning and context, this Peircean approach is also well-suited to machine learning and knowledge-based artificial intelligence (KBAI). Peirce is a founder of pragmatism, the uniquely American philosophy. We have already used this viewpoint to produce the KBpedia knowledge base and artifact, which we just released as open source. My book combines that viewpoint with the experience that Fred Giasson and I gained over the past decade with commercial clients in semantic and AI technologies. While KBpedia and the book stand on their own and do not depend on each other, they do reference one another, and those with serious interest may find it useful to keep KBpedia open as they progress through the book’s chapters.

I use the term practionary for the book — a decidedly new term — because the Peircean scholar Kelly Parker first coined that term to capture Charles Perice’s uniquely pragmatic way to fully explicate a particular domain of inquiry. In our case, of course, that domain is knowledge representation, which is shorthand for how to represent human symbolic information and knowledge to computers to solve complex questions. KR applications range from semantic technologies and knowledge management and machine learning to information integration, data interoperability, and natural language understanding. Knowledge representation is an essential foundation for knowledge-based AI. The practionary approach is a soup-to-nuts way to fully apprehend a given topic. To my knowledge, the book is the first attempt to put this Peircean method and framework into action.

I structure the book into five parts, following Peirce’s own approach. The first and last parts are bookends. The first bookend sets the context and background. The concluding bookend presents practical applications from following the guidelines. In between, the three main parts mirror Peirce’s three universal categories, the meat of his approach. The first of these three addresses the terminologies and grammar of knowledge representation. The next discusses the actual components or building blocks for KR systems. And the third provides what generalities we may derive about how to design, build, test, and follow best practices in putting a system together. Throughout, the book refers to and leverages the open source KBpedia knowledge graph and its public knowledge bases, including Wikipedia and Wikidata. Actual practitioners may find KBpedia, built from the ground up on these Peircean principles, a ready baseline to build their own domain knowledge graph and applications.

Here are the parts and chapters of the book:

Preface vii
 1. Introduction 1
Structure of the Book 2
Overview of Contents 3
Key Themes 10
 2. Information, Knowledge, Representation 15
What is Information? 16
What is Knowledge? 27
What is Representation? 33
Part I: Knowledge Representation in Context
 3. The Situation 45
Information and Economic Wealth 46
Untapped Information Assets 54
Impediments to Information Sharing 61
 4. The Opportunity 65
KM and A Spectrum of Applications 66
Data Interoperability 69
Knowledge-based Artificial Intelligence 74
 5. The Precepts 85
Equal Class Data Citizens 86
Addressing Semantic Heterogeneity 91
Carving Nature at the Joints 97
Part II: A Grammar for Knowledge Representation
 6. The Universal Categories 107
A Foundational Mindset 108
Firstness, Secondness, Thirdness 112
The Lens of the Universal Categories 116
 7. A KR Terminology 129
Things of the World 131
Hierarchies in Knowledge Representation 135
A Three-Relations Model 143
 8. KR Vocabulary and Languages 151
Logical Considerations 153
Pragmatic Model and Language Choices 163
The KBpedia Vocabulary 167
Part III: Components of Knowledge Representation
 9. Keeping the Design Open 183
The Context of Openness 184
Information Management Concepts 193
Taming a Bestiary of Data Structs 200
10. Modular, Expandable Typologies 207
Types as Organizing Constructs 208
A Flexible Typology Design 215
KBpedia’s Typologies 219
11. Knowledge Graphs and Bases 227
Graphs and Connectivity 228
Upper, Domain and Administrative Ontologies 237
KBpedia’s Knowledge Bases 242
Part IV: Building KR Systems
12. Platforms and Knowledge Management 251
Uses and Work Splits 252
Platform Considerations 262
A Web-oriented Architecture 268
13. Building Out The System 273
Tailoring for Domain Uses 274
Mapping Schema and Knowledge Bases 280
‘Pay as You Benefit’ 291
14. Testing and Best Practices 295
A Primer on Knowledge Statistics 296
Builds and Testing 304
Some Best Practices 309
Part V: Practical Potentials and Outcomes
15. Potential Uses in Breadth 319
Near-term Potentials 320
Logic and Representation 327
Potential Methods and Applications 332
16. Potential Uses in Depth 343
Workflows and BPM 343
Semantic Parsing 349
Cognitive Robotics and Agents 361
17. Conclusion 371
The Sign and Information Theoretics 372
Peirce: The Philosopher of KR 373
Reasons to Question Premises 377
Appendix A: Perspectives on Peirce 381
Appendix B: The KBpedia Resource 409
Appendix C: KBpedia Feature Possibilities 421
Glossary 435
Index 451

My intent is to produce a book of enduring, practical guidelines for how to think about KR and to design knowledge management (KM) systems. I emphasize how-to guidance and ways to think about KR problems. The audience in my mind are enterprise information and knowledge managers who are contemplating a new knowledge initiative. However, early reviewers have told me the basics are useful to students and researchers at all levels.

I am not even-handed in this book. My explicit purpose is to offer a fresh viewpoint on KR as informed by Peirce and our experience in building systems. For more balanced treatments, I recommend the excellent reference texts by van Harmelan et al. or Brachman and Levesque. Still, for those looking at the practical side of things, I hope this book may become an essential addition to theory and practice for KR and semantic technology. Peirce has a profound understanding of meaning and context that I believe is of benefit to knowledge management practitioners and AI researchers alike.

Individuals with a Springer subscription may get a softcover copy of the e-book for $24.99 under Springer’s MyCopy program. The standard e-book is available for $129 and hardcover copies are available for $169; see the standard Springer order site. Students or individuals without Springer subscriptions who can not afford these prices should contact me directly for possible alternatives.

Posted:November 13, 2018

KBpediaBetter Mappings, More Properties

When we released KBpedia v 1.60 as open source a couple of weeks back, I noted that I would follow-up the announcement with more details on the changes made in preparation for the release. This post provides that update.

KBpedia is a computable knowledge structure that combines seven major public knowledge bases — Wikipedia, Wikidata, schema.org, DBpedia, GeoNames, OpenCyc, and UMBEL. KBpedia supplements these core KBs with mappings to more than a score of additional leading vocabularies. The entire KBpedia structure is computable, meaning it can be reasoned over and logically sliced-and-diced to produce training sets and reference standards for machine learning and data interoperability. KBpedia provides a coherent overlay for retrieving and organizing Wikipedia or Wikidata content. KBpedia greatly reduces the time and effort traditionally required for knowledge-based artificial intelligence (KBAI) tasks.

KBpedia is a comprehensive knowledge structure for promoting data interoperability and KBAI. KBpedia’s upper structure, the KBpedia Knowledge Ontology (KKO), is based on the universal categories and knowledge representation theories of the great 19th century American logician, philosopher, polymath and scientist, Charles Sanders Peirce. This design provides a logical and coherent underpinning to the entire KBpedia structure. The design is also modular and fairly straightforward to adapt to enterprise or domain purposes. KBpedia was first released in October 2016. My initial announcement provides further details on KBpedia and how to download it.

Besides prepping the KBpedia knowledge artifiact for open-source release, we also made these improvement to the base structure in comparison to the prior v 1.51, the last proprietary version:

  • The major effort was to increase the mapping to Wikidata, with most mappings represented as owl:equivalentClass. Coverage of KBpedia to Wikidata is now 50%, with 27,423 of KBpedia’s reference concepts now mapped to Wikidata. Version 1.60 has 4.5x more coverage than the previous v. 1.51
  • We also continued to increase coverage to Wikipedia, with coverage now at 77%
  • We now have essentially complete coverage to DBpedia ontology, schema.org and GeoNames
  • We doubled the number of mapped properties to nearly 5 K and added schema.org property mappings
  • We organized the properties into attributes, indexes/indices, and external relations.

Please note we measure coverage as the larger of percent of external concepts mapped or percent of KBpedia mapped to the external source. The % Change figures represent the changes from v 1.51 to the new open source v 1.60.

Besides the property organization, we made few changes in this latest v 1.60 release to the overall structure or scope of KBpedia. The emphasis was on mapping to existing sources and clean up for public release. Here are the major statistics for v 1.60:

Structure Value % Change Coverage
No. of RCs 54,867 2.7%
KKO 173 -0.6%
Standard RCs 54,694 2.7%
No. of mapped vocabularies 23 -14.8%
Core KBs 7 16.7%
Extended vocabs 16 -23.8%
No. of typologies 68 7.9%
Core entity types 33 0.0%
Other core types 5 0.0%
Extended types 30 20.0%
No. of properties 4,847 92.4%
RC Mappings 139,311 21.1%
Wikipedia 42,108 4.3% 77%
Wikidata 27,423 446.2% 50%
schema.org 845 15.1% 99%
DBpedia ontology 764 0.0% 99%
GeoNames 918 0.0% 99%
OpenCyc 33,526 0.0% 61%
UMBEL 33,478 0.0% 99%
Extended vocabs 249 -4.2%
Property Mappings 4,847 92.4%
Wikidata 3,970 57.6%
schema.org 877 N/A

Through its mapped sources, KBpedia links to more than 30 million entities, the largest percentage coming from Wikidata. The mappings to these external sources are provided in the linkages to the external resources file in the KBpedia downloads. (A larger inferred version is also available.) The external sources keep their own record files. KBpedia distributions provide the links. However, you can access these entities through the KBpedia explorer on the project’s Web site (see these entity examples for cameras, cakes, and canyons; clicking on any of the individual entity links will bring up the full instance record.)

Please know that KBpedia remains under active development, with new updates anticipated in the near future. We are incorporating feedback gained from the initial open source release, and are also committed to increasing the mapping coverage for the artifact and other baseline improvements. Our plan is to complete this baseline before new external sources are added to the system.

KBpedia is available under the Creative Commons Attribution 4.0 International (CC BY 4.0) license. KBpedia’s development to date has been sponsored by Cognonto Corporation.