예제 #1
0
        /// <summary>
        /// Implementation of the visit function to generate some output, used in the visitor pattern
        /// </summary>
        /// <param name="node">The actual node which needs to be generated</param>
        /// <param name="parent">The parent object of the node</param>
        public override void Visit(OwlDatatypeProperty node, Object parent)
        {
            XmlElement parentElement = parent as XmlElement;

            if (parentElement != null)
            {
                XmlElement propertyElement = _owlDocument.CreateElement("owl:DatatypeProperty", OwlNamespaceCollection.OwlNamespace);
                // Add the name attribute to the node
                AddNameAttribute(propertyElement, node);

                // Generate all the edges going out of this node
                if (!_visited.Contains(node))
                {
                    VisitEdges(node, propertyElement);
                }

                // Attach the node eventually to its parent
                parentElement.AppendChild(propertyElement);
                _visited.Add(node);
            }
        }
예제 #2
0
 /// <summary>
 /// Adds an OWL Resource of type owl:DatatypeProperty to the graph</summary>
 /// <param name="nodeUri">The Uri of the resource.</param>
 /// <returns>Returns a reference to the newly added resource.</returns>
 /// <exception cref="UriFormatException">The specified nodeUri is not a well formed Uri.</exception>
 private OwlDatatypeProperty AddDatatypePropertyToGraph(string nodeUri)
 {
     //if the uri is null then create a blank node uri
     if(nodeUri == null)
         nodeUri = GetBlankNodeUri(null);
     OwlNode node = (OwlNode)_owlGraph[nodeUri];
     if((node != null) && (node is OwlDatatypeProperty))
         return (OwlDatatypeProperty)node;
     OwlNode typeNode = (OwlNode)_owlGraph.AddNode(OwlNamespaceCollection.OwlNamespace+"DatatypeProperty");
     if(node == null)
     {
         node = new OwlDatatypeProperty(nodeUri,typeNode);
         _owlGraph.AddEdge(((OwlDatatypeProperty)node).Type);
         _owlGraph.AddNode(node);
         return (OwlDatatypeProperty)node;
     }
     OwlDatatypeProperty newNode = new OwlDatatypeProperty(nodeUri,typeNode);
     _owlGraph.AddEdge(newNode.Type);
     MoveEdges(node, newNode);
     _owlGraph.Nodes.Remove(node);
     _owlGraph.AddNode(newNode);
     return newNode;
 }
예제 #3
0
        /// <summary>
        /// Parses the OWL syntax on an edge.
        /// </summary>
        /// <param name="node">The XML Node representing the OWL edge</param>
        /// <param name="rEdge">The edge</param>
        /// <param name="parentNode">The parent OWL node</param>
        /// <returns>True if the edge was given an ID and attached to the parent node</returns>
        private bool ParseEdgeSyntax(XmlNode node, OwlEdge rEdge, OwlNode parentNode)
        {
            //first get the NameSpace URI, NameSpace prefix and the LocalName for the node
            String nameSpaceURI = node.NamespaceURI;
            String nameSpacePrefix = node.Prefix;
            String localName = node.LocalName;
            if(IsNonSyntacticElement(node))
            {
                rEdge.ID = nameSpaceURI + localName;

                if(rEdge.ID == (OwlNamespaceCollection.RdfNamespace + "type"))
                {
                    OwlNode typeNode;
                    if(rEdge.ChildNode.ID == (OwlNamespaceCollection.OwlNamespace + "DatatypeProperty"))
                    {
                        typeNode = (OwlNode)_owlGraph.AddNode(OwlNamespaceCollection.OwlNamespace+"DatatypeProperty");
                        OwlDatatypeProperty newNode = new OwlDatatypeProperty(parentNode.ID,typeNode);
                        _owlGraph.AddEdge(newNode.Type);
                        MoveEdges(parentNode, newNode);
                        _owlGraph.Nodes.Remove(parentNode);
                        _owlGraph.AddNode(newNode);
                        rEdge.AttachParentNode(newNode);
                        return true;
                    }
                    if(rEdge.ChildNode.ID == (OwlNamespaceCollection.OwlNamespace + "ObjectProperty"))
                    {
                        typeNode = (OwlNode)_owlGraph.AddNode(OwlNamespaceCollection.OwlNamespace+"ObjectProperty");
                        OwlObjectProperty newNode = new OwlObjectProperty(parentNode.ID,typeNode);
                        _owlGraph.AddEdge(newNode.Type);
                        MoveEdges(parentNode, newNode);
                        _owlGraph.Nodes.Remove(parentNode);
                        _owlGraph.AddNode(newNode);
                        rEdge.AttachParentNode(newNode);
                        return true;
                    }

                }

                rEdge.AttachParentNode(parentNode);
                return true;
            }

            if(IsSyntacticElement(node))
            {
                OnError("Cannot use " + node.Name + " as a property element");
                return false;
            }

            // It is an instance of a property
            rEdge.ID = nameSpaceURI + localName;
            rEdge.AttachParentNode(parentNode);
            return true;

            //			OnWarning("Unknown property element "+ node.Name);
            //			return false;
        }
        /// <summary>
        /// Implementation of the visit function to generate some output, used in the visitor pattern
        /// </summary>
        /// <param name="node">The actual node which needs to be generated</param>
        /// <param name="parent">The parent object of the node</param>
        public override void Visit(OwlDatatypeProperty node, Object parent)
        {
            XmlElement parentElement = parent as XmlElement;
            if(parentElement != null)
            {
                XmlElement propertyElement = _owlDocument.CreateElement("owl:DatatypeProperty", OwlNamespaceCollection.OwlNamespace);
                // Add the name attribute to the node
                AddNameAttribute(propertyElement, node);

                // Generate all the edges going out of this node
                if(!node.Visited)
                {
                    VisitEdges(node, propertyElement);
                }

                // Attach the node eventually to its parent
                parentElement.AppendChild(propertyElement);
                node.Visited = true;
            }
        }
예제 #5
0
 /// <summary>
 /// Implementation of the visit function to generate some output, used in the visitor pattern
 /// </summary>
 /// <param name="node">The actual node which needs to be generated</param>
 /// <param name="parent">The parent object of the node</param>
 public abstract void Visit(OwlDatatypeProperty node, Object parent);
예제 #6
0
 /// <summary>
 /// Implementation of the visit function to generate some output, used in the visitor pattern
 /// </summary>
 /// <param name="node">The actual node which needs to be generated</param>
 /// <param name="parent">The parent object of the node</param>
 public abstract void Visit(OwlDatatypeProperty node, Object parent);