Content deleted Content added
AdaHephais (talk | contribs) Internal link Tags: Visual edit Mobile edit Mobile web edit Advanced mobile edit |
m clean up |
||
Line 1:
'''Frames''' are an [[artificial intelligence]] [[data structure]] used to divide [[knowledge]] into substructures by representing "[[stereotype]]d situations".
They were proposed by [[Marvin Minsky]] in his 1974 article "A Framework for Representing Knowledge". Frames are the primary data structure used in artificial intelligence frame languages; they are stored as [[Ontology (information science)|ontologies]] of [[Set theory|sets]].
Frames are also an extensive part of [[knowledge representation and reasoning]] schemes. They were originally derived from [[semantic network]]s and are therefore part of structure-based [[Knowledge representation and reasoning|knowledge representations]].
According to [[Stuart J. Russell|Russell]] and [[Peter Norvig|Norvig]]'s ''[[Artificial Intelligence: A Modern Approach]]'', structural representations assemble "[...]facts about particular objects and event types and arrange the types into a large [[taxonomy|taxonomic]] hierarchy analogous to a [[biological taxonomy]]".
== Frame structure ==
The frame contains information on how to use the frame, what to expect next, and what to do when these expectations are not met.
Some information in the frame is generally unchanged while other information, stored in "terminals", usually change. Terminals can be considered as variables.
Top-level frames carry information, that is always true about the problem in hand, however, terminals do not have to be true. Their value might change with the new information encountered. Different frames may share the same terminals.
Each piece of information about a particular frame is held in a slot.
The information can contain:
Line 30:
== Features and advantages ==
A frame's terminals are already filled with default values, which is based on how the [[Mind|human mind]] works.
For example, when a person is told "a boy kicks a ball", most people will visualize a particular ball (such as a familiar [[soccer ball]]) rather than imagining some abstract ball with no attributes.
Line 117:
==Frame language==
A '''frame language''' is a technology used for [[knowledge representation]] in [[artificial intelligence]]. They are similar to [[class hierarchies]] in [[object-oriented languages]] although their fundamental design goals are different.
Frames are focused on explicit and intuitive representation of knowledge whereas objects focus on [[Encapsulation (object-oriented programming)|encapsulation]] and [[information hiding]]. Frames originated in AI research and objects primarily in [[software engineering]].
However, in practice, the techniques and capabilities of frame and [[Object-oriented programming|object-oriented languages]] overlap significantly.
===Example===
A simple example of concepts modeled in a frame language is the [[FOAF (ontology)|Friend of A Friend (FOAF) ontology]] defined as part of the [[Semantic Web]] as a foundation for social networking and calendar systems.
The primary frame in this simple example is a ''Person''.
Example slots are the person's ''email'', ''home page, phone,'' etc.
The interests of each person can be represented by additional frames describing the space of business and entertainment domains.
The slot ''knows'' links each person with other persons.
Default values for a person's interests can be [[Inference|inferred]] by the web of people they are friends of.<ref>{{cite web|title=FOAF|url=http://semanticweb.org/wiki/FOAF|website=semanticweb.org|access-date=7 June 2014|archive-url=https://web.archive.org/web/20130210123012/http://semanticweb.org/wiki/FOAF|archive-date=10 February 2013|url-status=dead}}</ref>
===Implementations===
The earliest frame-based languages were custom developed for specific research projects and were not packaged as tools to be re-used by other researchers.
Just as with [[expert system]] [[inference engine]]s, researchers soon realized the benefits of extracting part of the core infrastructure and developing general-purpose frame languages that were not coupled to specific applications.
One of the first general-purpose frame languages was KRL.<ref>{{cite journal|last=Bobrow|first=D.G.|author2=Terry Winograd|title=An Overview of KRL: A Knowledge Representation Language|journal=Cognitive Science|year=1977|volume=1|pages=3–46|doi=10.1207/s15516709cog0101_2|doi-access=free}}</ref> One of the most influential early frame languages was [[KL-ONE]].<ref>{{cite journal|last=Brachman|first=Ron|title=A Structural Paradigm for Representing Knowledge|journal=Bolt, Beranek, and Neumann Technical Report|year=1978|issue=3605}}}{{cbignore|bot=medic}}</ref> KL-ONE spawned several subsequent Frame languages.
One of the most widely used successors to KL-ONE was the [[LOOM (ontology)|Loom language]] developed by Robert MacGregor at the [[Information Sciences Institute]].<ref>{{cite journal|last=MacGregor|first=Robert|title=Using a description classifier to enhance knowledge representation|journal=IEEE Expert|date=June 1991|volume=6|issue=3|doi=10.1109/64.87683|pages=41–46|s2cid=29575443 }}</ref>
In the 1980s, Artificial Intelligence generated a great deal of interest in the business world fueled by [[expert system]]
One of the most well known of these early Lisp knowledge-base tools was the [[Knowledge Engineering Environment]] (KEE) from [[IntelliCorp (software)|Intellicorp]]. KEE provided a full Frame language with multiple inheritance, slots, triggers, default values, and a rule engine that supported backward and forward chaining. As with most early commercial versions of AI software KEE was originally deployed in [[Lisp (programming language)|Lisp]] on [[Lisp machine]] platforms but was eventually ported to [[Personal computer|PCs]] and [[Workstation|Unix workstations]].<ref>{{cite journal|last=Mettrey|first=William|title=An Assessment of Tools for Building Large Knowledge-Based Systems|journal=AI Magazine|year=1987|volume=8|issue=4|url=http://www.aaai.org/ojs/index.php/aimagazine/article/viewArticle/625|access-date=2013-12-09|archive-url=https://web.archive.org/web/20131110022104/http://www.aaai.org/ojs/index.php/aimagazine/article/viewArticle/625|archive-date=2013-11-10|url-status=dead}}</ref>
Line 156:
===Comparison of frames and objects===
Frame languages have a significant overlap with [[object-oriented]] languages. The terminologies and goals of the two communities were different but as they moved from the academic world and labs to the commercial world developers tended to not care about philosophical issues and focused primarily on specific capabilities, taking the best from either camp regardless of where the idea began. What both paradigms have in common is a desire to reduce the distance between concepts in the real world and their implementation in software. As such both [[
The following table illustrates the [[correlation]] between standard terminology from the object-oriented and frame language communities:
|