Adding an RDFS+ Inference Step

Follow the instructions below to add a step to a data layer that uses RDFS-plus and OWL rules to create new relationships based on the vocabularies in the existing data.

  1. In the Anzo application, expand the Blend menu and click Graphmarts. Anzo displays a list of the existing graphmarts. For example:

  2. On the Graphmarts screen, click the name of the graphmart that you want to change.
  3. Click the Data Layers tab. Anzo displays the existing data layers.
  4. Click the menu icon () on the layer for which you want to create a step, and then select Add Step/View. Anzo opens the Add step dialog box.

  5. Follow one of the options in this step, depending on whether you want to create a step from scratch or clone an existing inference step for reuse:
    • Select RDFS+ Inference Step, and then click OK. Anzo opens the Create RDFS inference step screen. Proceed to the next step.

    • If you want to clone an existing step and add it to this layer, click the Existing Steps tab and follow these steps:
      1. Select the inference step that you want to clone and click OK. Anzo displays the Clone dialog box, which asks if you want to copy the permissions from the existing step.

      2. On the Clone dialog box, click Yes to copy the permission configuration from the existing step or click No to copy the step without the permission configuration.

        Anzo clones the step, adds the copy to the layer, and returns to the Data Layers screen.

      3. On the Data Layers screen, click the menu icon () on the cloned step and select Edit. Anzo opens the Edit inference step screen. Proceed to the next step.
  6. Under Details, type a name for the step in the Title field and add an optional description in the Description field.
  7. By default the Enabled option is selected, indicating that the step is enabled and will run when the layer is loaded. If you want to disable the step so that it is not processed, clear the Enabled check box.
  8. By default the step runs all of the RDFS-plus inference rules and a subset of the OWL 2 RL rules (see Inference Rule Reference below for specifics). If you want to customize the step to include or exclude certain rules, specify any combination of the following options in the Inference Rules To Run field. Specify multiple options in a comma-separated list:
    • all: Run all rules.
    • rdfsplus: Run only the RDFS-plus rules.
    • rule_names: List specific rules to run only those rules. For a list of rule names, see Inference Rule Reference.
    • -rule_name: Specify a hyphen (-) in front of a rule name to exclude that rule. For example, -scm-svf2 excludes the scm-svf2 rule.

    For example, the following value runs all of the inference rules except prp-fp and prp-ifp:

    all,-prp-fp,-prp-ifp

    Certain inference rules are coupled. Specifying either of the rules in the pair automatically runs the coupled rule. The list below describes the paired rules:

    • scm-dom1 and scm-rng1
    • scm-dom2 and scm-rng2
    • prp-inv1 and prp-inv2

    In addition, running scm-eqc1 or cax-sco also runs cax-eqc1 and cax-eqc2. And running scm-eqp1 or prp-spo1 also runs prp-eqp1 and prp-eqp2.

  9. Click the Source drop-down list and configure the source data for this step. Steps can build upon the data generated by steps in other layers or can be self-contained, applying changes that relate only to the data defined in the layer that contains this step. You can select any number of the following options:
    • Self: This option is selected by default and means that inferences rules run against only the data that is generated in the layer to which this step belongs.
    • All Previous Layers Within Graphmart: Choosing this option means that inference runs against the data that is generated by all of the layers in the graphmart that precede this layer.
    • Previous Layer Within Graphmart: Choosing this option means that inference runs against only the data that is generated by the one layer that precedes this layer.
    • Layer Name: The Source drop-down list also includes options for specific layer names. You can choose a specific layer to run inferences against only the data that is generated by that layer.

      You can remove any of the source options by clicking the X to the left of the option name.

  10. Click the Data Models drop-down list and select the model or models to use for this layer to run inference against.
  11. Click Save to add the step to the data layer. Anzo adds the step as the last step in the layer. If you want to change the order of the steps, click the black bar on the left side of a step and drag it up or down.

Inference Rule Reference

This topic provides reference information for the RDFS-plus rules and the subset of OWL 2 RL rules that inference steps run.

RDFS-Plus Rules

The tables below define the RDFS-plus inference rules.

Semantics of Class Axioms

Rule Description IF THEN
cax-eqc1 Two classes are synonymous. T(?c1, owl:equivalentClass, ?c2)
T(?x, rdf:type, ?c1)
T(?x, rdf:type, ?c2)
cax-eqc2 Two classes are synonymous. T(?c1, owl:equivalentClass, ?c2)
T(?x, rdf:type, ?c2)
T(?x, rdf:type, ?c1)
cax-sco Members of a subclass are also members of the superclass. T(?c1, rdfs:subClassOf, ?c2)
T(?x, rdf:type, ?c1)
T(?x, rdf:type, ?c2)

Semantics of Axioms about Properties

Rule Description IF THEN
prp-dom Infer the subject's type from the predicate's domain. T(?p, rdfs:domain, ?c)
T(?x, ?p, ?y)
T(?x, rdf:type, ?c)
prp-eqp1 Two properties are synonymous. T(?p1, owl:equivalentProperty, ?p2)
T(?x, ?p1, ?y)
T(?x, ?p2, ?y)
prp-eqp2 Two properties are synonymous. T(?p1, owl:equivalentProperty, ?p2)
T(?x, ?p2, ?y)
T(?x, ?p1, ?y)
prp-fp If predicate p is a functional property, then a subject can be related to only one specific object by p. T(?p, rdf:type, owl:FunctionalProperty)
T(?x, ?p, ?y1)
T(?x, ?p, ?y2)
T(?y1, owl:sameAs, ?y2)
prp-ifp If predicate p is an inverse functional property, then a specific object can be related to only one subject by p. T(?p, rdf:type, owl:InverseFunctionalProperty)
T(?x1, ?p, ?y)
T(?x2, ?p, ?y)
T(?x1, owl:sameAs, ?x2)
prp-inv1 Two properties are the inverse of each other. T(?p1, owl:inverseOf, ?p2)
T(?x, ?p1, ?y)
T(?y, ?p2, ?x)
prp-inv2 Two properties are the inverse of each other. T(?p1, owl:inverseOf, ?p2)
T(?x, ?p2, ?y)
T(?y, ?p1, ?x)
prp-rng Infer the object's type from the predicate's range. T(?p, rdfs:range, ?c)
T(?x, ?p, ?y)
T(?y, rdf:type, ?c)
prp-spo1 Relationships that are described by a subproperty also hold for the superproperty. T(?p1, rdfs:subPropertyOf, ?p2)
T(?x, ?p1, ?y)
T(?x, ?p2, ?y)
prp-symp The inverse is true for a property. T(?p, rdf:type, owl:SymmetricProperty)
T(?x, ?p, ?y)
T(?y, ?p, ?x)
prp-trp Chains of relationships collapse into a single relationship. T(?p, rdf:type, owl:TransitiveProperty)
T(?x, ?p, ?y)
T(?y, ?p, ?z)
T(?x, ?p, ?z)

Semantics of Schema Vocabulary

Rule Description IF THEN
scm-cls Every class is its own subclass and equivalent class, and it is a subclass of owl:Thing. T(?c, rdf:type, owl:Class) T(?c, rdfs:subClassOf, ?c)
T(?c, owl:equivalentClass, ?c)
T(?c, rdfs:subClassOf, owl:Thing)
T(owl:Nothing, rdfs:subClassOf, ?c)
scm-dom1 A property with domain c also has domain c's superclasses. T(?p, rdfs:domain, ?c1)
T(?c1, rdfs:subClassOf, ?c2)
T(?p, rdfs:domain, ?c2)
scm-dom2 A subproperty inherits the domains of the superproperties. T(?p2, rdfs:domain, ?c)
T(?p1, rdfs:subPropertyOf, ?p2)
T(?p1, rdfs:domain, ?c)
scm-eqc1 Equivalent classes are subclasses of each other. T(?c1, owl:equivalentClass, ?c2) T(?c1, rdfs:subClassOf, ?c2)
T(?c2, rdfs:subClassOf, ?c1)
scm-eqc2 If two classes are subclasses, they are also equivalent classes. T(?c1, rdfs:subClassOf, ?c2)
T(?c2, rdfs:subClassOf, ?c1)
T(?c1, owl:equivalentClass, ?c2)
scm-eqp1 Equivalent properties are subproperties of each other. T(?p1, owl:equivalentProperty, ?p2) T(?p1, rdfs:subPropertyOf, ?p2)
T(?p2, rdfs:subPropertyOf, ?p1)
scm-eqp2 If two properties are subproperties, they are also equivalent properties. T(?p1, rdfs:subPropertyOf, ?p2)
T(?p2, rdfs:subPropertyOf, ?p1)
T(?p1, owl:equivalentProperty, ?p2)
scm-rng1 A property with range c also has range c's superclasses. T(?p, rdfs:range, ?c1)
T(?c1, rdfs:subClassOf, ?c2)
T(?p, rdfs:range, ?c2)
scm-rng2 A subproperty inherits the ranges of its superproperties. T(?p2, rdfs:range, ?c)
T(?p1, rdfs:subPropertyOf, ?p2)
T(?p1, rdfs:range, ?c)
scm-sco owl:subClassOf relationships are transitive T(?c1, rdfs:subClassOf, ?c2)
T(?c2, rdfs:subClassOf, ?c3)
T(?c1, rdfs:subClassOf, ?c3)
scm-spo owl:subPropertyOf relationships are transitive. T(?p1, rdfs:subPropertyOf, ?p2)
T(?p2, rdfs:subPropertyOf, ?p3)
T(?p1, rdfs:subPropertyOf, ?p3)

The scm-dp and scm-op schema vocabulary rules are not run. Those rules add significant compute overhead but do not result in meaningful inference results.

OWL 2 RL Rules

The tables below define the subset of OWL 2 RL inference rules that inference steps run.

Semantics of Equality

Rule Description IF THEN
eq-rep-o Describes the replacement property of the owl:sameAs axiom. T(?o, owl:sameAs, ?o')
T(?s, ?p, ?o)
T(?s, ?p, ?o')
eq-rep-p Describes the replacement property of the owl:sameAs axiom. T(?p, owl:sameAs, ?p')
T(?s, ?p, ?o)
T(?s, ?p', ?o)
eq-rep-s Describes the replacement property of the owl:sameAs axiom. T(?s, owl:sameAs, ?s')
T(?s, ?p, ?o)
T(?s', ?p, ?o)
eq-sym Describes the symmetric property of the owl:sameAs axiom. T(?x, owl:sameAs, ?y) T(?y, owl:sameAs, ?x)
eq-trans Describes the transitive property of the owl:sameAs axiom. T(?x, owl:sameAs, ?y)
T(?y, owl:sameAs, ?z)
T(?x, owl:sameAs, ?z)

Semantics of Schema Vocabulary

Rule Description IF THEN
scm-svf1 A property restriction c1 is a subclass of c2 if they are both someValuesFrom restrictions on the same property and c1's target class is a subclass of c2's target class. T(?c1, owl:someValuesFrom, ?y1)
T(?c1, owl:onProperty, ?p)
T(?c2, owl:someValuesFrom, ?y2)
T(?c2, owl:onProperty, ?p)
T(?y1, rdfs:subClassOf, ?y2)
T(?c1, rdfs:subClassOf, ?c2)
scm-svf2 A property restriction c1 is a subclass of c2 if they are both someValuesFrom restrictions on the same class where c1's target property is a subproperty of c2's target property. T(?c1, owl:someValuesFrom, ?y)
T(?c1, owl:onProperty, ?p1)
T(?c2, owl:someValuesFrom, ?y)
T(?c2, owl:onProperty, ?p2)
T(?p1, rdfs:subPropertyOf, ?p2)
T(?c1, rdfs:subClassOf, ?c2)
scm-int   T(?c, owl:intersectionOf, ?x)
LIST[?x, ?c1, ..., ?cn]
T(?c, rdfs:subClassOf, ?c1)
T(?c, rdfs:subClassOf, ?c2)
...
T(?c, rdfs:subClassOf, ?cn)

Semantics of Classes

Rule Description IF THEN
cls-svf1 At least one object of a property is a member of the specified class. T(?x, owl:someValuesFrom, ?y)
T(?x, owl:onProperty, ?p)
T(?u, ?p, ?v)
T(?v, rdf:type, ?y)
T(?u, rdf:type, ?x)
cls-int1 An instance belongs to every one of the specified classes. T(?c, owl:intersectionOf, ?x)
LIST[?x, ?c1, ..., ?cn]
T(?y, rdf:type, ?c1)
T(?y, rdf:type, ?c2)
...
T(?y, rdf:type, ?cn)
T(?y, rdf:type, ?c)

Example RDFS+ Inference Step

The following example inference step runs the RDFS-plus rules to generate inferences for the layers in a graphmart.

Related Topics