Beispiel #1
0
 public override void ParseLiteralLanguage(RdfACoreParserContext context, IRdfAEvent evt)
 {
     if (evt.HasAttribute("xml:lang"))
     {
         if (RdfSpecsHelper.IsValidLangSpecifier(evt["xml:lang"]))
         {
             context.Language = evt["xml:lang"];
         }
     }
 }
Beispiel #2
0
 public override void ParseLiteralLanguage(RdfACoreParserContext context, IRdfAEvent evt)
 {
     if (evt.HasAttribute("xml:lang"))
     {
         if (RdfSpecsHelper.IsValidLangSpecifier(evt["xml:lang"]))
         {
             context.Language = evt["xml:lang"];
         }
     }
 }
Beispiel #3
0
 public override bool IsRootElement(IRdfAEvent evt)
 {
     if (evt.EventType == Event.Element)
     {
         String name = ((ElementEvent)evt).Name;
         return(name.Equals("head") || name.Equals("body"));
     }
     else
     {
         return(false);
     }
 }
Beispiel #4
0
 public override void ParseExtensions(RdfACoreParserContext context, IRdfAEvent evt)
 {
     if (evt.HasAttribute("xml:base"))
     {
         try
         {
             context.BaseUri = new Uri(Tools.ResolveUri(evt["xml:base"], context.BaseUri.ToSafeString()));
         }
         catch
         {
             // If URI resolution fails then cannot change the Base URI
         }
     }
 }
Beispiel #5
0
 public override void ParseExtensions(RdfACoreParserContext context, IRdfAEvent evt)
 {
     if (evt.HasAttribute("xml:base"))
     {
         try
         {
             context.BaseUri = new Uri(Tools.ResolveUri(evt["xml:base"], context.BaseUri.ToSafeString()));
         }
         catch
         {
             //If URI resolution fails then cannot change the Base URI
         }
     }
 }
Beispiel #6
0
        private void ParsePrefixAttribute(RdfACoreParserContext context, IRdfAEvent evt)
        {
            String[] values = evt["prefix"].Split(this._whitespace);
            for (int i = 0; i < values.Length - 1; i += 2)
            {
                String prefix = values[i];
                Uri    uri    = this.ResolveAbsoluteUri(values[i + 1]);

                if (uri == null)
                {
                    continue;
                }
                context.Namespaces.AddNamespace(prefix, uri);
            }
        }
Beispiel #7
0
 public override void ParsePrefixMappings(RdfACoreParserContext context, IRdfAEvent evt)
 {
     foreach (KeyValuePair <String, String> attr in evt.Attributes)
     {
         if (attr.Key.Equals("xmlns"))
         {
             context.Namespaces.AddNamespace(String.Empty, new Uri(Tools.ResolveUri(attr.Value, context.BaseUri.ToSafeString())));
         }
         else if (attr.Key.StartsWith("xmlns:"))
         {
             String prefix = attr.Key.Substring(attr.Key.IndexOf(':') + 1);
             context.Namespaces.AddNamespace(prefix, new Uri(Tools.ResolveUri(attr.Value, context.BaseUri.ToSafeString())));
         }
     }
 }
Beispiel #8
0
 private INode ParseObjectResource(RdfACoreParserContext context, IRdfAEvent evt)
 {
     if (evt.HasAttribute("resource"))
     {
         return(this.ParseResourceAttibute(context, evt));
     }
     else if (evt.HasAttribute("href"))
     {
         return(this.ParseHrefAttribute(context, evt));
     }
     else
     {
         return(null);
     }
 }
Beispiel #9
0
 public override void ParsePrefixMappings(RdfACoreParserContext context, IRdfAEvent evt)
 {
     foreach (KeyValuePair<String, String> attr in evt.Attributes)
     {
         if (attr.Key.Equals("xmlns"))
         {
             context.Namespaces.AddNamespace(String.Empty, new Uri(Tools.ResolveUri(attr.Value, context.BaseUri.ToSafeString())));
         }
         else if (attr.Key.StartsWith("xmlns:"))
         {
             String prefix = attr.Key.Substring(attr.Key.IndexOf(':') + 1);
             context.Namespaces.AddNamespace(prefix, new Uri(Tools.ResolveUri(attr.Value, context.BaseUri.ToSafeString())));
         }
     }
 }
Beispiel #10
0
 private INode ParseRelOrRevSubject(RdfACoreParserContext context, IRdfAEvent evt, bool isRoot)
 {
     if (evt.HasAttribute("about"))
     {
         return(this.ParseAboutAttribute(context, evt));
     }
     else if (evt.HasAttribute("src"))
     {
         return(this.ParseSrcAttribute(context, evt));
     }
     else if (isRoot || context.HostLanguage.IsRootElement(evt))
     {
         return(this.UriToNode(context, this.ParseUri(context, String.Empty, RdfACurieMode.SafeCurieOrCurieOrUri)));
     }
     else if (evt.HasAttribute("typeof"))
     {
         return(context.Handler.CreateBlankNode());
     }
     else
     {
         return(context.ParentObject);
     }
 }
Beispiel #11
0
 private INode ParseSubject(RdfACoreParserContext context, IRdfAEvent evt, bool isRoot, out bool skip)
 {
     skip = false;
     if (evt.HasAttribute("about"))
     {
         return(this.ParseAboutAttribute(context, evt));
     }
     else if (evt.HasAttribute("src"))
     {
         return(this.ParseSrcAttribute(context, evt));
     }
     else if (evt.HasAttribute("resource"))
     {
         return(this.ParseResourceAttibute(context, evt));
     }
     else if (evt.HasAttribute("href"))
     {
         return(this.ParseHrefAttribute(context, evt));
     }
     else if (isRoot || context.HostLanguage.IsRootElement(evt))
     {
         return(this.UriToNode(context, this.ParseUri(context, String.Empty, RdfACurieMode.SafeCurieOrCurieOrUri)));
     }
     else if (evt.HasAttribute("typeof"))
     {
         return(context.Handler.CreateBlankNode());
     }
     else
     {
         if (evt.HasAttribute("property"))
         {
             skip = true;
         }
         return(context.ParentObject);
     }
 }
Beispiel #12
0
 public virtual bool IsRootElement(IRdfAEvent evt)
 {
     return false;
 }
Beispiel #13
0
 public virtual void ParseExtensions(RdfACoreParserContext context, IRdfAEvent evt)
 {
 }
Beispiel #14
0
 private INode ParseHrefAttribute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     return this.UriToNode(context, this.ParseUri(context, evt["href"], RdfACurieMode.Uri));
 }
Beispiel #15
0
 private IEnumerable<INode> ParsePropertyAttribute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     return (from u in this.ParseUris(context, evt["property"])
             select this.UriToNode(context, u));
 }
Beispiel #16
0
 private INode ParseHrefAttribute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     return(this.UriToNode(context, this.ParseUri(context, evt["href"], RdfACurieMode.Uri)));
 }
Beispiel #17
0
 private INode ParseResourceAttibute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     return this.UriToNode(context, this.ParseUri(context, evt["resource"], RdfACurieMode.SafeCurieOrCurieOrUri));
 }
 public virtual void ParseLiteralLanguage(RdfACoreParserContext context, IRdfAEvent evt)
 {
 }
Beispiel #19
0
        private bool ParseProfileAttribute(RdfACoreParserContext context, IRdfAEvent evt)
        {
            foreach (Uri u in this.ParseUris(context, evt["profile"]))
            {
                try
                {
                    Graph g = new Graph();
#if !SILVERLIGHT
                    UriLoader.Load(g, u);
#else
                    throw new PlatformNotSupportedException("The @profile attribute is not currently supported under Silverlight/Windows Phone 7");
#endif

                    String prefixQuery = "PREFIX rdfa: <" + RdfAParser.RdfANamespace + "> SELECT SAMPLE(?prefix) AS ?NamespacePrefix SAMPLE(?uri) AS ?NamespaceURI WHERE { ?s rdfa:prefix ?prefix ; rdfa:uri ?uri } GROUP BY ?s HAVING (COUNT(?prefix) = 1 && COUNT(?uri) = 1)";
                    String termQuery   = "PREFIX rdfa: <" + RdfAParser.RdfANamespace + "> SELECT SAMPLE(?term) AS ?Term SAMPLE(?uri) AS ?URI WHERE {?s rdfa:term ?term ; rdfa:uri ?uri } GROUP BY ?s HAVING (COUNT(?term) = 1 && COUNT(?uri) = 1)";

                    //Namespace Mappings
                    Object results = g.ExecuteQuery(prefixQuery);
                    if (results is SparqlResultSet)
                    {
                        SparqlResultSet rset = (SparqlResultSet)results;
                        foreach (SparqlResult r in rset.Results)
                        {
                            INode prefixNode = r["NamespacePrefix"];
                            INode nsNode     = r["NamespaceURI"];
                            if (prefixNode.NodeType == NodeType.Literal && nsNode.NodeType == NodeType.Literal)
                            {
                                String prefix = ((ILiteralNode)prefixNode).Value.ToLower();
                                String ns     = ((ILiteralNode)nsNode).Value;
                                context.Namespaces.AddNamespace(prefix, new Uri(ns));
                            }
                        }
                    }

                    //Term Mappings
                    results = g.ExecuteQuery(termQuery);
                    if (results is SparqlResultSet)
                    {
                        SparqlResultSet rset = (SparqlResultSet)results;
                        foreach (SparqlResult r in rset.Results)
                        {
                            INode termNode = r["Term"];
                            INode uriNode  = r["URI"];
                            if (termNode.NodeType == NodeType.Literal && uriNode.NodeType == NodeType.Literal)
                            {
                                String term = ((ILiteralNode)termNode).Value;
                                String uri  = ((ILiteralNode)uriNode).Value;
                                if (XmlSpecsHelper.IsNCName(term))
                                {
                                    context.Terms.AddNamespace(term, new Uri(uri));
                                }
                            }
                        }
                    }

                    //Vocabulary Setting
                    INode vocabNode = g.GetTriplesWithPredicate(g.CreateUriNode(new Uri(RdfAParser.RdfANamespace + "vocabulary"))).Select(t => t.Object).FirstOrDefault();
                    if (vocabNode != null)
                    {
                        if (vocabNode.NodeType == NodeType.Literal)
                        {
                            context.DefaultVocabularyUri = new Uri(((ILiteralNode)vocabNode).Value);
                        }
                        else if (vocabNode.NodeType == NodeType.Uri)
                        {
                            context.DefaultVocabularyUri = ((IUriNode)vocabNode).Uri;
                        }
                    }
                }
                catch
                {
                    return(false);
                }
            }
            return(true);
        }
Beispiel #20
0
        private void ParsePrefixAttribute(RdfACoreParserContext context, IRdfAEvent evt)
        {
            String[] values = evt["prefix"].Split(this._whitespace);
            for (int i = 0; i < values.Length - 1; i += 2)
            {
                String prefix = values[i];
                Uri uri = this.ResolveAbsoluteUri(values[i + 1]);

                if (uri == null) continue;
                context.Namespaces.AddNamespace(prefix, uri);
            }
        }
Beispiel #21
0
 private void ParseVocabAttribute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     context.DefaultVocabularyUri = this.ParseUri(context, evt["vocab"], RdfACurieMode.Uri);
 }
Beispiel #22
0
 private void ParseVocabAttribute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     context.DefaultVocabularyUri = this.ParseUri(context, evt["vocab"], RdfACurieMode.Uri);
 }
Beispiel #23
0
        private bool ParseProfileAttribute(RdfACoreParserContext context, IRdfAEvent evt)
        {
            foreach (Uri u in this.ParseUris(context, evt["profile"]))
            {
                try
                {
                    Graph g = new Graph();
#if !SILVERLIGHT
                    UriLoader.Load(g, u);
#else
                    throw new PlatformNotSupportedException("The @profile attribute is not currently supported under Silverlight/Windows Phone 7");
#endif

                    String prefixQuery = "PREFIX rdfa: <" + RdfAParser.RdfANamespace + "> SELECT SAMPLE(?prefix) AS ?NamespacePrefix SAMPLE(?uri) AS ?NamespaceURI WHERE { ?s rdfa:prefix ?prefix ; rdfa:uri ?uri } GROUP BY ?s HAVING (COUNT(?prefix) = 1 && COUNT(?uri) = 1)";
                    String termQuery = "PREFIX rdfa: <" + RdfAParser.RdfANamespace + "> SELECT SAMPLE(?term) AS ?Term SAMPLE(?uri) AS ?URI WHERE {?s rdfa:term ?term ; rdfa:uri ?uri } GROUP BY ?s HAVING (COUNT(?term) = 1 && COUNT(?uri) = 1)";

                    //Namespace Mappings
                    Object results = g.ExecuteQuery(prefixQuery);
                    if (results is SparqlResultSet)
                    {
                        SparqlResultSet rset = (SparqlResultSet)results;
                        foreach (SparqlResult r in rset.Results)
                        {
                            INode prefixNode = r["NamespacePrefix"];
                            INode nsNode = r["NamespaceURI"];
                            if (prefixNode.NodeType == NodeType.Literal && nsNode.NodeType == NodeType.Literal)
                            {
                                String prefix = ((ILiteralNode)prefixNode).Value.ToLower();
                                String ns = ((ILiteralNode)nsNode).Value;
                                context.Namespaces.AddNamespace(prefix, new Uri(ns));
                            }
                        }
                    }

                    //Term Mappings
                    results = g.ExecuteQuery(termQuery);
                    if (results is SparqlResultSet)
                    {
                        SparqlResultSet rset = (SparqlResultSet)results;
                        foreach (SparqlResult r in rset.Results)
                        {
                            INode termNode = r["Term"];
                            INode uriNode = r["URI"];
                            if (termNode.NodeType == NodeType.Literal && uriNode.NodeType == NodeType.Literal)
                            {
                                String term = ((ILiteralNode)termNode).Value;
                                String uri = ((ILiteralNode)uriNode).Value;
                                if (XmlSpecsHelper.IsNCName(term))
                                {
                                    context.Terms.AddNamespace(term, new Uri(uri));
                                }
                            }
                        }
                    }

                    //Vocabulary Setting
                    INode vocabNode = g.GetTriplesWithPredicate(g.CreateUriNode(new Uri(RdfAParser.RdfANamespace + "vocabulary"))).Select(t => t.Object).FirstOrDefault();
                    if (vocabNode != null)
                    {
                        if (vocabNode.NodeType == NodeType.Literal)
                        {
                            context.DefaultVocabularyUri = new Uri(((ILiteralNode)vocabNode).Value);
                        }
                        else if (vocabNode.NodeType == NodeType.Uri)
                        {
                            context.DefaultVocabularyUri = ((IUriNode)vocabNode).Uri;
                        }
                    }
                }
                catch
                {
                    return false;
                }
            }
            return true;
        }
Beispiel #24
0
 private IEnumerable <INode> ParsePropertyAttribute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     return(from u in this.ParseUris(context, evt["property"])
            select this.UriToNode(context, u));
 }
Beispiel #25
0
 public virtual void ParseLiteralLanguage(RdfACoreParserContext context, IRdfAEvent evt)
 {
 }
 public virtual bool IsRootElement(IRdfAEvent evt)
 {
     return(false);
 }
Beispiel #27
0
 public virtual void ParsePrefixMappings(RdfACoreParserContext context, IRdfAEvent evt)
 {
 }
Beispiel #28
0
 private INode ParseAboutAttribute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     return(this.UriToNode(context, this.ParseUri(context, evt["about"], RdfACurieMode.SafeCurieOrCurieOrUri)));
 }
 public virtual void ParseExtensions(RdfACoreParserContext context, IRdfAEvent evt)
 {
 }
Beispiel #30
0
 private INode ParseResourceAttibute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     return(this.UriToNode(context, this.ParseUri(context, evt["resource"], RdfACurieMode.SafeCurieOrCurieOrUri)));
 }
 public virtual void ParsePrefixMappings(RdfACoreParserContext context, IRdfAEvent evt)
 {
 }
Beispiel #32
0
 private INode ParseObjectResource(RdfACoreParserContext context, IRdfAEvent evt)
 {
     if (evt.HasAttribute("resource"))
     {
         return this.ParseResourceAttibute(context, evt);
     }
     else if (evt.HasAttribute("href"))
     {
         return this.ParseHrefAttribute(context, evt);
     }
     else
     {
         return null;
     }
 }
Beispiel #33
0
 private INode ParseSubject(RdfACoreParserContext context, IRdfAEvent evt, bool isRoot, out bool skip)
 {
     skip = false;
     if (evt.HasAttribute("about"))
     {
         return this.ParseAboutAttribute(context, evt);
     }
     else if (evt.HasAttribute("src"))
     {
         return this.ParseSrcAttribute(context, evt);
     }
     else if (evt.HasAttribute("resource"))
     {
         return this.ParseResourceAttibute(context, evt);
     }
     else if (evt.HasAttribute("href"))
     {
         return this.ParseHrefAttribute(context, evt);
     }
     else if (isRoot || context.HostLanguage.IsRootElement(evt))
     {
         return this.UriToNode(context, this.ParseUri(context, String.Empty, RdfACurieMode.SafeCurieOrCurieOrUri));
     }
     else if (evt.HasAttribute("typeof"))
     {
         return context.Handler.CreateBlankNode();
     }
     else
     {
         if (evt.HasAttribute("property")) skip = true;
         return context.ParentObject;
     }
 }
Beispiel #34
0
 private INode ParseAboutAttribute(RdfACoreParserContext context, IRdfAEvent evt)
 {
     return this.UriToNode(context, this.ParseUri(context, evt["about"], RdfACurieMode.SafeCurieOrCurieOrUri));
 }
Beispiel #35
0
 private INode ParseRelOrRevSubject(RdfACoreParserContext context, IRdfAEvent evt, bool isRoot)
 {
     if (evt.HasAttribute("about"))
     {
         return this.ParseAboutAttribute(context, evt);
     }
     else if (evt.HasAttribute("src"))
     {
         return this.ParseSrcAttribute(context, evt);
     }
     else if (isRoot || context.HostLanguage.IsRootElement(evt))
     {
         return this.UriToNode(context, this.ParseUri(context, String.Empty, RdfACurieMode.SafeCurieOrCurieOrUri));
     }
     else if (evt.HasAttribute("typeof"))
     {
         return context.Handler.CreateBlankNode();
     }
     else
     {
         return context.ParentObject;
     }
 }
Beispiel #36
0
 public override bool IsRootElement(IRdfAEvent evt)
 {
     if (evt.EventType == Event.Element)
     {
         String name = ((ElementEvent)evt).Name;
         return name.Equals("head") || name.Equals("body");
     }
     else
     {
         return false;
     }
 }