[x3d-public] X3D Semantic Web updated ontology release, query progress

Don Brutzman brutzman at nps.edu
Sun Jun 28 23:00:20 PDT 2020


Preparations for weekly meeting:

1. Fixed several subtle flaws in X3D Ontology.

[1] X3D Ontology for Semantic Web
     https://www.web3d.org/x3d/content/semantics/semantics.html

[2] X3D Ontology X3dOntology4.0.ttl
     https://www.web3d.org/x3d/content/semantics/ontologies/X3dOntology4.0.ttl

Also produced a version using RDF syntax via Protege.

[3] X3D Ontology X3dOntology4.0.rdf
     https://www.web3d.org/x3d/content/semantics/ontologies/X3dOntology4.0.rdf

a. Enumeration variable Values/Choices lists had domain defined but not range.  Fixed, surprising the tools didn't flag this.

b. Enumueration variable lists were utilizing owl:unionOf lists of nodes and types, as part of rdfs:domain, which mostly worked but had some examples creating "blank nodes (bnodes)" which caused owldoc problems (and goodness knows what other potential inference problems). This problem didn't occur in rdfs:range definitions.
   
Because errors were inconsistent in Protege, very tricky to track down.

Finally got proper syntax by deleting a construct in Protege, manually re-creating it via interface, and then saving into turtle output to see what syntax Protege preferred.  Turned out to be simpler, can just omit owl:unionOf [ ] and simply list the nodes/types.

Example correct implementation:

:matchCriterion a owl:DatatypeProperty ;
   rdfs:label "X3DPickSensorNode field matchCriterion is implemented by multiple nodes." ;
   rdfs:subPropertyOf :accessTypeInputOutput ;
   rdfs:domain :X3DPickSensorNode , :LinePickSensor , :PointPickSensor , :PrimitivePickSensor , :VolumePickSensor ;
   rdfs:range :pickSensorMatchCriterionChoices .

c. Ensured that only xsd: namespace used within X3D Ontology, matching Protege approach and eliminating several apparent ambiguities.

---

2. Improvement in X3dToTurtle.xslt stylesheet.

:DEF and :USE values were not getting generated during model conversion.  This ontology feature simplifies pattern matching.  Restored, running updates to all models in X3D Example Archives overnight.

Example conversion:

     <TimeSensor DEF='OrbitalTimeInterval' cycleInterval='12'/>
to

:OrbitalTimeInterval a owl:NamedIndividual, x3do:TimeSensor ;
   x3do:hasParent :Scene ;
   x3do:DEF 'OrbitalTimeInterval' ;
   x3do:cycleInterval '12' .

---

3. Initial ROUTE query

Now that we have accessType and DEF defined throughout, can get to work on queries that check if a ROUTE connection is well-defined and matches both type and accessType.

[4] X3D Ontology for Semantic Web: Queries
     https://www.web3d.org/x3d/content/semantics/semantics.html#Queries

see last entry in table:

* https://www.web3d.org/x3d/content/semantics/examples/HelloX3dAuthorsAnimationChain.ttl

* https://www.web3d.org/x3d/content/semantics/queries/HelloX3dAuthorsAnimationChainQuery_01.rq.txt

Initial inspection/extracttion of ROUTE values works.  Now working on removing duplication entries for fromNodeTypeFound.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
| parentNode              | RouteFound    | fromNodeDEF               | fromNodeTypeFound            | fromField          | toNodeDEF               | toField        |
======================================================================================================================================================================
| "Scene"                 | "ROUTE_2_5"   | "OrbitalTimeInterval"     | owl:NamedIndividual          | "fraction_changed" | "SpinThoseThings"       | "set_fraction" |
| "Scene"                 | "ROUTE_2_5"   | "OrbitalTimeInterval"     | x3do:TimeSensor              | "fraction_changed" | "SpinThoseThings"       | "set_fraction" |
| "EarthCoordinateSystem" | "ROUTE_2_6_1" | "SpinThoseThings"         | owl:NamedIndividual          | "value_changed"    | "EarthCoordinateSystem" | "set_rotation" |
| "EarthCoordinateSystem" | "ROUTE_2_6_1" | "SpinThoseThings"         | x3do:OrientationInterpolator | "value_changed"    | "EarthCoordinateSystem" | "set_rotation" |
| "EarthCoordinateSystem" | "ROUTE_2_6_5" | "ClickTriggerTouchSensor" | owl:NamedIndividual          | "touchTime"        | "OrbitalTimeInterval"   | "startTime"    |
| "EarthCoordinateSystem" | "ROUTE_2_6_5" | "ClickTriggerTouchSensor" | x3do:TouchSensor             | "touchTime"        | "OrbitalTimeInterval"   | "startTime"    |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

# TODO Node types, field types, accessTypes, diagnostics for matches

Weekly call is Monday 0830 pacific, have fun with X3D Query!

all the best, Don
-- 
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman



More information about the x3d-public mailing list