public override void ParseLiteralLanguage(RdfACoreParserContext context, IRdfAEvent evt) { if (evt.HasAttribute("xml:lang")) { if (RdfSpecsHelper.IsValidLangSpecifier(evt["xml:lang"])) { context.Language = evt["xml:lang"]; } } }
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); } }
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 } } }
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 } } }
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); } }
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()))); } } }
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); } }
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()))); } } }
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); } }
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); } }
public virtual bool IsRootElement(IRdfAEvent evt) { return false; }
public virtual void ParseExtensions(RdfACoreParserContext context, IRdfAEvent evt) { }
private INode ParseHrefAttribute(RdfACoreParserContext context, IRdfAEvent evt) { return this.UriToNode(context, this.ParseUri(context, evt["href"], RdfACurieMode.Uri)); }
private IEnumerable<INode> ParsePropertyAttribute(RdfACoreParserContext context, IRdfAEvent evt) { return (from u in this.ParseUris(context, evt["property"]) select this.UriToNode(context, u)); }
private INode ParseHrefAttribute(RdfACoreParserContext context, IRdfAEvent evt) { return(this.UriToNode(context, this.ParseUri(context, evt["href"], RdfACurieMode.Uri))); }
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) { }
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); }
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); } }
private void ParseVocabAttribute(RdfACoreParserContext context, IRdfAEvent evt) { context.DefaultVocabularyUri = this.ParseUri(context, evt["vocab"], RdfACurieMode.Uri); }
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; }
private IEnumerable <INode> ParsePropertyAttribute(RdfACoreParserContext context, IRdfAEvent evt) { return(from u in this.ParseUris(context, evt["property"]) select this.UriToNode(context, u)); }
public virtual bool IsRootElement(IRdfAEvent evt) { return(false); }
public virtual void ParsePrefixMappings(RdfACoreParserContext context, IRdfAEvent evt) { }
private INode ParseAboutAttribute(RdfACoreParserContext context, IRdfAEvent evt) { return(this.UriToNode(context, this.ParseUri(context, evt["about"], RdfACurieMode.SafeCurieOrCurieOrUri))); }
private INode ParseResourceAttibute(RdfACoreParserContext context, IRdfAEvent evt) { return(this.UriToNode(context, this.ParseUri(context, evt["resource"], RdfACurieMode.SafeCurieOrCurieOrUri))); }
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; } }
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; } }
private INode ParseAboutAttribute(RdfACoreParserContext context, IRdfAEvent evt) { return this.UriToNode(context, this.ParseUri(context, evt["about"], RdfACurieMode.SafeCurieOrCurieOrUri)); }
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; } }
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; } }