story.scheherazade.links
Class SCHLinkProperties

java.lang.Object
  extended by story.scheherazade.links.SCHLinkProperties
All Implemented Interfaces:
LinkPropertiesInterface

public class SCHLinkProperties
extends java.lang.Object
implements LinkPropertiesInterface

This class implements LinkPropertiesInterface to give Scheherazade's semantic rules for the ways nodes can be linked.


Constructor Summary
SCHLinkProperties()
           
 
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?
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SCHLinkProperties

public SCHLinkProperties()
Method Detail

validLeftTypes

public java.util.HashSet validLeftTypes(LinkType lt)
                                 throws Scheherexception
Description copied from interface: LinkPropertiesInterface
What types of nodes can appear to the left of a certain link type?

Specified by:
validLeftTypes in interface LinkPropertiesInterface
Throws:
Scheherexception

validRightTypes

public java.util.HashSet validRightTypes(LinkType lt)
                                  throws Scheherexception
Description copied from interface: LinkPropertiesInterface
What types of nodes can appear to the right of a certain link type?

Specified by:
validRightTypes in interface LinkPropertiesInterface
Throws:
Scheherexception

mustHaveSameTypes

public boolean mustHaveSameTypes(LinkType lt)
Description copied from interface: LinkPropertiesInterface
Does a certain link type need to have the same type of node on both sides?

Specified by:
mustHaveSameTypes in interface LinkPropertiesInterface

canHaveMultipleLabels

public boolean canHaveMultipleLabels(LinkType lt)
Description copied from interface: LinkPropertiesInterface
Does a certain link type allow two nodes to be linked several times with different labels?

Specified by:
canHaveMultipleLabels in interface LinkPropertiesInterface

inferSupertypesOfToSideNodesAreLinked

public boolean inferSupertypesOfToSideNodesAreLinked(LinkType lt)
Description copied from interface: LinkPropertiesInterface
Are the supertypes and prototypes of nodes on the "to" side of the link also inferred to be linked?

Specified by:
inferSupertypesOfToSideNodesAreLinked in interface LinkPropertiesInterface

inferSupertypesOfFromSideNodesAreLinked

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

Specified by:
inferSupertypesOfFromSideNodesAreLinked in interface LinkPropertiesInterface

inferFromSideNodesInheritLinksFromSupertypes

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

Specified by:
inferFromSideNodesInheritLinksFromSupertypes in interface LinkPropertiesInterface

inferFromSideNodesInheritLinksFromSubtypes

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

Specified by:
inferFromSideNodesInheritLinksFromSubtypes in interface LinkPropertiesInterface

inferToSideNodesInheritLinksToSupertypes

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

Specified by:
inferToSideNodesInheritLinksToSupertypes in interface LinkPropertiesInterface

inferToSideNodesInheritLinksToSubtypes

public boolean inferToSideNodesInheritLinksToSubtypes(LinkType lt)
Description copied from interface: LinkPropertiesInterface
When querying a node for nodes that link to it, are the nodes linked to the the given node's subnodes also results?

Specified by:
inferToSideNodesInheritLinksToSubtypes in interface LinkPropertiesInterface

canHaveCircularLinks

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

Specified by:
canHaveCircularLinks in interface LinkPropertiesInterface

canHaveReflexiveLinks

public boolean canHaveReflexiveLinks(LinkType lt)
Description copied from interface: LinkPropertiesInterface
Does a certain link type allow a node to link directly to itself?

Specified by:
canHaveReflexiveLinks in interface LinkPropertiesInterface

cannotRemoveIfLinkedTo

public boolean cannotRemoveIfLinkedTo(LinkType lt)
Description copied from interface: LinkPropertiesInterface
Is it critically bad to remove a node if it is linked to by another node for a certain link type?

Specified by:
cannotRemoveIfLinkedTo in interface LinkPropertiesInterface

cannotRemoveIfLinks

public boolean cannotRemoveIfLinks(LinkType lt)
Description copied from interface: LinkPropertiesInterface
Is it critically bad to remove a node if links to another node for a certain link type?

Specified by:
cannotRemoveIfLinks in interface LinkPropertiesInterface

multipleForwardLinksAllowed

public boolean multipleForwardLinksAllowed(LinkType lt)
Description copied from interface: LinkPropertiesInterface
Can a node link to more than one other node by a certain link type?

Specified by:
multipleForwardLinksAllowed in interface LinkPropertiesInterface

multipleBackwardLinksAllowed

public boolean multipleBackwardLinksAllowed(LinkType lt)
Description copied from interface: LinkPropertiesInterface
Can a node have more than one node linked to it by a certain link type?

Specified by:
multipleBackwardLinksAllowed in interface LinkPropertiesInterface

linksToInstancingsIncludeArguments

public boolean linksToInstancingsIncludeArguments(LinkType lt)
Description copied from interface: LinkPropertiesInterface
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?

Specified by:
linksToInstancingsIncludeArguments in interface LinkPropertiesInterface

missingAttributesInheritedForward

public boolean missingAttributesInheritedForward(LinkType lt)
Description copied from interface: LinkPropertiesInterface
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?

Specified by:
missingAttributesInheritedForward in interface LinkPropertiesInterface

missingAttributesInheritedBackward

public boolean missingAttributesInheritedBackward(LinkType lt)
Description copied from interface: LinkPropertiesInterface
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?

Specified by:
missingAttributesInheritedBackward in interface LinkPropertiesInterface


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