Group Abstract Group Abstract

Message Boards Message Boards

0
|
7.7K Views
|
8 Replies
|
1 Total Like
View groups...
Share
Share this post:

Entities and Knowledge Representation

Posted 11 years ago
POSTED BY: Mark Linehan
8 Replies

Sean Clarke - Well, in my first reply I did give an example of the type of things I might want to do. But I'll try to start a separate discussion.

Within the Wolfram Language facilities, what is the best alternative to creating one's own interactive data base of knowledge on some subject?

That's a very large question. If you can provide more specifics, that would help. I would again ask that you post this as a new question. It is in a sense most certainly related to this one, but you'd be better served by new thread and it would help keep this thread on focused on the original topic should more questions arise about using the Entity framework, esp with respect to finding Entities. This thread has already addressed many topics as it is and your question is a very broad one.

"Interactive Base of Knowledge" is a very vague term that could mean lots of things. Are you looking to make a framework that's like parts of the Entity Framework? If so which parts? It's a very large framework. You of course have to pay attention to how you structure the relationships between kinds of objects.

Any symbolic program is an interactive base of knowledge about the symbols it uses. The key of course is how to best structure these programs. That depends very heavily on what you want to do. Having a small and specific case will help someone answer your question.

POSTED BY: Sean Clarke

Sean Clarke - I rather think my question does belong here. My question was not specifically about differential geometry, it was about how one could best construct an interactive data base centered around some specific subject. Mark Linehan was asking about "Knowledge Representation" and this is in the "Wolfram Language" Group. He wanted to approach it using Entities but the answer seems to be that Entities can only be consumed by users and not created by users. So then, my question is: Within the Wolfram Language facilities, what is the best alternative to creating one's own interactive data base of knowledge on some subject?

POSTED BY: Sean Clarke

Let's pick an example that is closely aligned to mathematics.

Suppose I want to study some particular subject such as smooth manifold theory. I want to study it, work examples, do calculations, write tutorial notebooks. I would like to justify various steps by referring to various theorems, form various sources, that pertain to the subject . I would like to have a data set of the theorems and the ability to call up a display of particular theorems when writing didactic examples. The display might be in a separate window or embedded in a dynamic structure. I might even want to be able to substitute generic symbols in the theorem with specific symbols used in a particular example. Each theorem might refer to various concepts: open/closed sets, boundary, maps, differentials, etc. I would like to have the ability to easily add new concepts as the data set is developed. And finally the ability to search the data set for theorems that relate to specific concepts.

What would be the most appropriate Wolfram Language facilities to use for such a project?

This is a very helpful thread. Thank you.

POSTED BY: David Reiss
Posted 11 years ago
POSTED BY: Mark Linehan
  1. Ignore the existence of "ToEntity" for right now. It only handles a select class of objects. These are the objects which have concrete representations in Mathematica and in the entity framework, which is a tiny, tiny fraction of the total number of entities.
  • You can get Entities in many different ways. One way is through the curated lists of Entities called Entity Classes. See an explanation of them below.

  • You can also get specific Entities using "Ctrl" + "=" for free-form input. For example if I wanted Chicago as a City I would type:

"Ctrl" + "=" Followed by Chicago

If instead I wanted Chicago as a Movie, I click the ellipsis just to the right of the result and a menu with alternate interpretations appears. Movie is one of the options available.

  • You can use Interpreter:

    Interpreter["City"]["Chicago"]
    
    Interpreter["Movie"]["Chicago"]
    
  • You can use SemanticInterpretation:

    SemanticInterpretation["Chicago"]

    This gives the default interpretation for "Chicago" which is as a City. Instead you might as for every possible interpretation of Chicago:

    SemanticInterpretation["Chicago", AmbiguityFunction -> All]

  1. Types and Classes are different. A type is fundamental kind of a thing such as a "Country", or a "Movie", or a "Person". An Entity expression has two arguments. The first argument is a string of what type it is. The second argument is a string which uniquely identifies a specific instance of that type. For example the Entity expression for Elvis Presley is:

Entity["Person", "ElvisPresley::2kzg4"]

There could be multiple Elvis Presleys, so there's a unique tag added to the end of the second string. An EntityClass is a curated list of a specific kind of Entity. For example, EntityClass["Country", "Europe"] is a curated list of Entities of type "Country" that are located in Europe. And EntityClass can be turned into a list of Entities using EntityList. There is no Entity type specifically for countries in Europe. There is only a Entity type for countries in general. However there is an EntityClass which lists which countries are in Europe.

  1. Basically, No. The inner workings of entities are really complex and you don't want to have to reimplement all that. If you want to incorporate outside data sources, it's best to do so alongside the framework, not using it.

  2. You don't. You could write your own function to do the essentially the same thing but it wouldn't integrate with the entire framework.

POSTED BY: Sean Clarke
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard