A
SemanticNet is a
DirectedGraph with nodes representing objects, classes or concepts, and the arcs representing relations between them (such as is-a, part-of etc). They are an old construct from
ArtificialIntelligence but other diagramming methods such as
EntityRelationshipDiagrams and
ClassDiagrams (from
UnifiedModelingLanguage) can be thought of as an evolution of these ideas. It has been shown that
PredicateLogic is equivalent to
SemanticNets but since a picture is worth a thousand words they can be useful, especially to learn new
DomainKnowledge quickly. A simplified version can be found in the
GalacticModelingLanguage.
See
http://www.cee.hw.ac.uk/~alison/ai3notes/subsection2_4_2_1.html
An example of how a
SemanticNet,
SymbolicLogic, ER Diagram and UML can represent the same thing:
SemanticNet: (customer)---has--->(purchases)
Logic: Has(Customer,Purchases) or more cryptically, H(C,P)
ER: [Customer]---<has>---[Purchases]
UML ClassDiagram:[Customer]<>---[Purchases]
From which
RelationalDatabase tables CUSTOMER, PURCHASES could be derived and code ie in Java from the
ClassDiagram once attributes and methods created. Doing it as a semantic net first can help enumerate attributes and methods ie
has---(address)
/
(customer)---has---(name)
can---(register)
May become
------------
|Customer |
============
|Name |
|Address |
|... |
------------
|Register()|
|... |
------------
Rolled into one Class.
SemanticNets are more
FreeForm and easier to think in initially, then structure into other formalisms later on. Different ways of modelling the same domain.
See also:
SemanticWeb,
ResourceDescriptionFramework
CategorySemanticWeb