Dimi.InstantRDF.BusinessLogic.ResourceFactory.GenerateResourceGraph C# (CSharp) Метод

GenerateResourceGraph() публичный Метод

Generates the resource graph.
public GenerateResourceGraph ( ) : VDS.RDF.Graph
Результат VDS.RDF.Graph
        public Graph GenerateResourceGraph()
        {
            var nodeIds = _nodeRepository.GetAllIds();

            var g = new Graph { BaseUri = new Uri(Configuration.Configuration.ResourceNamespace) };

            g.NamespaceMap.AddNamespace("owl", new Uri("http://www.w3.org/2002/07/owl#"));
            g.NamespaceMap.AddNamespace("xsd", new Uri("http://www.w3.org/2001/XMLSchema#"));
            g.NamespaceMap.AddNamespace("dc", new Uri("http://purl.org/dc/elements/1.1/"));
            foreach (var nodeId in nodeIds)
            {
                if (!_nodeRepository.IsInPublishedHierarchy(nodeId, UmbracoSQLHelper.Get()))
                    continue;
                var node = GenerateNode(nodeId);
                Helper.AddTripleResource(g, node.Iri, Constants.RdfType, node.DocumentTypeIri);
                Helper.AddTripleResource(g, node.Iri, Constants.RdfType, Constants.OwlNamedIndividual);
                // The CMS date does not get entered properly, possibly because the generation runs in a thread..
                // Helper.AddTripleLiteral(g, node.Iri, Constants.DcDate, node.UpdateDate.ToString(CultureInfo.InvariantCulture), "Date");

                if (!string.IsNullOrEmpty(node.ParentIri))
                {
                    Helper.AddTripleResource(g, node.Iri, Constants.HasParentIri, node.ParentIri);
                    Helper.AddTripleResource(g, node.ParentIri, Constants.HasChildIri, node.Iri);
                }

                if (!string.IsNullOrEmpty(node.Url))
                {
                    Helper.AddTripleLiteral(g, node.Iri, Constants.HasUrlIri, node.Url, "Url");
                    Helper.AddTripleLiteral(g, node.Iri, Constants.DcSource, node.Url, "Url");
                }

                foreach (var prop in node.Properties)
                {
                    if (prop.PropertyType.DataTypeName.ToLower() == "tags")
                    {
                        var tags = prop.Value.Split(',');
                        foreach(var tag in tags)
                        {
                            if (tag.ToLower().StartsWith("http://"))
                            {
                                Helper.AddTripleResource(g, node.Iri, prop.PropertyType.Iri, tag);
                            }
                            else
                            {
                                Helper.AddTripleLiteral(g, node.Iri, prop.PropertyType.Iri, tag, prop.PropertyType.DatabaseType);
                            }
                        }
                    }
                    else
                    {
                        Helper.AddTripleLiteral(g, node.Iri, prop.PropertyType.Iri, prop.Value, prop.PropertyType.DatabaseType);
                        foreach (var equivalentIri in prop.PropertyType.EquivalentIris)
                        {
                            Helper.AddTripleLiteral(g, node.Iri, equivalentIri, prop.Value, prop.PropertyType.DatabaseType);
                        }
                    }

                }

                foreach (var imageUri in node.ImageUris)
                {
                    Helper.AddTripleLiteral(g, node.Iri, Constants.ContainsImageIri, imageUri, "Url");
                }

                foreach (var linkUri in node.LinkUris)
                {
                    Helper.AddTripleLiteral(g, node.Iri, Constants.LinksToIri, linkUri, "Url");
                }
            }

            return g;
        }