story.dbcore.links
Interface LinkPropertiesInterface

All Known Implementing Classes:
AesopLinkProperties, FlashbackLinkProperties, SCHLinkProperties

public interface LinkPropertiesInterface

This is an interface to the LinkProperties object of the application calling the db-core. This is where calling applications (scheherazade, flashback, etc) can define semantic rules for what kinds of nodes can be linked by what kinds of links.

There are several different analogies at play here. Here's what they mean: Picture two nodes side by side with a directed arrow going from the one on the left to the one on the right. The node on the left is the "from" node of the link, and has one forward link; the link on the right is the "to" node and has one backward link.


Method Summary
 boolean canHaveCircularLinks(LinkType lt)
          Does a certain link type allow a node to link indirectly to itself (i.e., passing through one or more nodes in a circuit)?
 boolean canHaveMultipleLabels(LinkType lt)
          Does a certain link type allow two nodes to be linked several times with different labels?
 boolean canHaveReflexiveLinks(LinkType lt)
          Does a certain link type allow a node to link directly to itself?
 boolean cannotRemoveIfLinkedTo(LinkType lt)
          Is it critically bad to remove a node if it is linked to by another node for a certain link type?
 boolean cannotRemoveIfLinks(LinkType lt)
          Is it critically bad to remove a node if links to another node for a certain link type?
 boolean inferFromSideNodesInheritLinksFromSubtypes(LinkType lt)
          When querying a node for nodes it links to, are the nodes linked from the given node's subnodes also results?
 boolean inferFromSideNodesInheritLinksFromSupertypes(LinkType lt)
          When querying a node for nodes int links to, are the nodes linked from the given node's super-nodes also results?
 boolean inferSupertypesOfFromSideNodesAreLinked(LinkType lt)
          Are the supertypes and prototypes of nodes on the "from" side of a link also inferred to be linked?
 boolean inferSupertypesOfToSideNodesAreLinked(LinkType lt)
          Are the supertypes and prototypes of nodes on the "to" side of the link also inferred to be linked?
 boolean inferToSideNodesInheritLinksToSubtypes(LinkType lt)
          When querying a node for nodes that link to it, are the nodes linked to the the given node's subnodes also results?
 boolean inferToSideNodesInheritLinksToSupertypes(LinkType lt)
          When querying a node for nodes that link to it, are the nodes linked to the the given node's super-nodes also results?
 boolean linksToInstancingsIncludeArguments(LinkType lt)
          For which link types is it desirable to link to the arguments of an instsancing as well as the frame node?
 boolean missingAttributesInheritedBackward(LinkType lt)
          For which link types is it desirable for a node to inherit an attribute from another node to which it links (i.e., inheriting over a backward link) if it lacks the attribute entirely?
 boolean missingAttributesInheritedForward(LinkType lt)
          For which link types is it desirable for a node to inherit an attribute from another node linked to it (i.e., inheriting over a forward link) if it lacks the attribute entirely?
 boolean multipleBackwardLinksAllowed(LinkType lt)
          Can a node have more than one node linked to it by a certain link type?
 boolean multipleForwardLinksAllowed(LinkType lt)
          Can a node link to more than one other node by a certain link type?
 boolean mustHaveSameTypes(LinkType lt)
          Does a certain link type need to have the same type of node on both sides?
 java.util.HashSet validLeftTypes(LinkType lt)
          What types of nodes can appear to the left of a certain link type?
 java.util.HashSet validRightTypes(LinkType lt)
          What types of nodes can appear to the right of a certain link type?
 

Method Detail

multipleForwardLinksAllowed

boolean multipleForwardLinksAllowed(LinkType lt)
Can a node link to more than one other node by a certain link type?


multipleBackwardLinksAllowed

boolean multipleBackwardLinksAllowed(LinkType lt)
Can a node have more than one node linked to it by a certain link type?


validLeftTypes

java.util.HashSet validLeftTypes(LinkType lt)
                                 throws Scheherexception
What types of nodes can appear to the left of a certain link type?

Throws:
Scheherexception

validRightTypes

java.util.HashSet validRightTypes(LinkType lt)
                                  throws Scheherexception
What types of nodes can appear to the right of a certain link type?

Throws:
Scheherexception

mustHaveSameTypes

boolean mustHaveSameTypes(LinkType lt)
Does a certain link type need to have the same type of node on both sides?


canHaveMultipleLabels

boolean canHaveMultipleLabels(LinkType lt)
Does a certain link type allow two nodes to be linked several times with different labels?


canHaveReflexiveLinks

boolean canHaveReflexiveLinks(LinkType lt)
Does a certain link type allow a node to link directly to itself?


canHaveCircularLinks

boolean canHaveCircularLinks(LinkType lt)
Does a certain link type allow a node to link indirectly to itself (i.e., passing through one or more nodes in a circuit)?


inferSupertypesOfToSideNodesAreLinked

boolean inferSupertypesOfToSideNodesAreLinked(LinkType lt)
Are the supertypes and prototypes of nodes on the "to" side of the link also inferred to be linked?


inferSupertypesOfFromSideNodesAreLinked

boolean inferSupertypesOfFromSideNodesAreLinked(LinkType lt)
Are the supertypes and prototypes of nodes on the "from" side of a link also inferred to be linked?


inferFromSideNodesInheritLinksFromSupertypes

boolean inferFromSideNodesInheritLinksFromSupertypes(LinkType lt)
When querying a node for nodes int links to, are the nodes linked from the given node's super-nodes also results?


inferFromSideNodesInheritLinksFromSubtypes

boolean inferFromSideNodesInheritLinksFromSubtypes(LinkType lt)
When querying a node for nodes it links to, are the nodes linked from the given node's subnodes also results?


inferToSideNodesInheritLinksToSupertypes

boolean inferToSideNodesInheritLinksToSupertypes(LinkType lt)
When querying a node for nodes that link to it, are the nodes linked to the the given node's super-nodes also results?


inferToSideNodesInheritLinksToSubtypes

boolean inferToSideNodesInheritLinksToSubtypes(LinkType lt)
When querying a node for nodes that link to it, are the nodes linked to the the given node's subnodes also results?


cannotRemoveIfLinkedTo

boolean cannotRemoveIfLinkedTo(LinkType lt)
Is it critically bad to remove a node if it is linked to by another node for a certain link type?


cannotRemoveIfLinks

boolean cannotRemoveIfLinks(LinkType lt)
Is it critically bad to remove a node if links to another node for a certain link type?


linksToInstancingsIncludeArguments

boolean linksToInstancingsIncludeArguments(LinkType lt)
For which link types is it desirable to link to the arguments of an instsancing as well as the frame node? For example: if movie1 = example(protection(health)), should an example link be drawn between movie1 and health as well as between movie1 and example?


missingAttributesInheritedForward

boolean missingAttributesInheritedForward(LinkType lt)
For which link types is it desirable for a node to inherit an attribute from another node linked to it (i.e., inheriting over a forward link) if it lacks the attribute entirely?


missingAttributesInheritedBackward

boolean missingAttributesInheritedBackward(LinkType lt)
For which link types is it desirable for a node to inherit an attribute from another node to which it links (i.e., inheriting over a backward link) if it lacks the attribute entirely?



Copyright © 2011 David K. Elson. All Rights Reserved.