/// <summary>
 /// Creates a new NTriples Tokeniser which reads Tokens from the given Stream
 /// </summary>
 /// <param name="input">Stream to read Tokens from</param>
 /// <param name="syntax">NTriples syntax to tokenise</param>
 public NTriplesTokeniser(ParsingTextReader input, NTriplesSyntax syntax)
     : base(input)
 {
     NQuadsMode = false;
     _in        = input;
     Format     = "NTriples";
     Syntax     = syntax;
 }
        public override void TrainFromQueries(params string[] queries)
        {
            //TODO: use the ParseQuery method here somehow as they are much the same
            InParseMode = false;
            var examples = new List <Example>();

            foreach (var query in queries)
            {
                var          tokeniser     = new SparqlTokeniser(ParsingTextReader.Create(new StringReader(query)), SparqlQuerySyntax.Sparql_1_1);
                var          token         = tokeniser.GetNextToken();
                PredicateNet currentPrefix = null;
                while (token != null && !(token is EOFToken))
                {
                    token = tokeniser.GetNextToken();
                    if (token is PrefixToken)
                    {
                        var prefix   = token.Value;
                        var ontology = new Uri(tokeniser.GetNextToken().Value);
                        currentPrefix = new PredicateNet(prefix, ontology, this.PrefixLoader);
                        Add(currentPrefix, true);
                    }
                    else
                    {
                        var w          = token.Value.ToLower();
                        var words      = w.Split(':');
                        var wordSuffix = words.Length > 1 ? ":" : "";
                        var offset     = 0;
                        foreach (var word in words)
                        {
                            var fullWord = word + wordSuffix;
                            var node     = Node(fullWord);
                            wordSuffix = "";
                            if (query.Trim().Length > token.StartPosition)
                            {
                                var partQuery = query.Substring(0, (token.StartPosition - 1) + offset).Trim();
                                var inputNode = Node(partQuery);
                                examples.Add(new Example(inputNode, fullWord));
                                offset = fullWord.Length;
                            }
                        }
                    }
                }
            }

            Train(examples.ToArray());
            InParseMode = true;
        }
        private void ParseQuery(string query)
        {
            nodes.Clear();
            var tokeniser = new SparqlTokeniser(ParsingTextReader.Create(new StringReader(query)), SparqlQuerySyntax.Sparql_1_1);
            var token     = tokeniser.GetNextToken();

            while (token != null && !(token is EOFToken))
            {
                try
                {
                    token = tokeniser.GetNextToken();
                    if (token is PrefixDirectiveToken)
                    {
                        token = tokeniser.GetNextToken();
                        var prefix     = token.Value;
                        var ontology   = new Uri(tokeniser.GetNextToken().Value);
                        var prefixNode = new PredicateNet(prefix, ontology, this.PrefixLoader);
                        Add(prefixNode, true);
                        var linkToPrefix = new TokenNode(new Uri(R(token.Value.ToLower())), token);
                        nodes.Add(linkToPrefix);
                    }
                    else if (token is QNameToken)
                    {
                        var node = new TokenNode(new Uri(R(token.Value.ToLower().Replace(":", "_namespace"))), token);
                        var link = Node(R(token.Value.ToLower()));
                        nodes.Add(node);
                        Add(node, "link", link);
                    }
                    else
                    {
                        var node = new TokenNode(new Uri(R(token.Value.ToLower())), token);
                        nodes.Add(node);
                    }
                }
                catch (Exception ex)
                {
                    CurrentError = ex;
                    return;
                }
            }
        }
        public override void TrainFromQueries(params string[] queries)
        {
            InParseMode = false;
            var examples = new List <NodeExample>();
            var queryId  = 0;

            foreach (var query in queries)
            {
                queryId++;
                var    tokeniser       = new SparqlTokeniser(ParsingTextReader.Create(new StringReader(query)), SparqlQuerySyntax.Sparql_1_1);
                var    token           = tokeniser.GetNextToken();
                IToken beforeLastToken = null;
                IToken lastToken       = null;

                while (token != null && !(token is EOFToken))
                {
                    token = tokeniser.GetNextToken();
                    var tokenValue = token is VariableToken ? queryId + "." + token.Value : token.Value;
                    var node       = Node(tokenValue);
                    node.UseEdgesAsInterface = false;
                    if (tokenValue.Contains(Prefix) && Outputs.Contains(node))
                    {
                        var last = Node(queryId + "." + lastToken.Value);
                        examples.Add(new NodeExample(last, node));
                    }
                    if (beforeLastToken is VariableToken && (lastToken.Value.Contains("a") || lastToken.Value.Contains(Prefix)))
                    {
                        var n = Node(queryId + "." + beforeLastToken.Value);
                        n.AddEdge(Node("a"), node);
                    }

                    beforeLastToken = lastToken;
                    lastToken       = token;
                }
            }

            Train(examples.ToArray());

            InParseMode = true;
        }
示例#5
0
        public virtual void TrainFromQueries(params string[] queries)
        {
            InParseMode = false;
            var examples = new List <NodeExample>();

            foreach (var query in queries)
            {
                var tokeniser = new SparqlTokeniser(ParsingTextReader.Create(new StringReader(query)), SparqlQuerySyntax.Sparql_1_1);
                var lastWord  = Node("");
                var token     = tokeniser.GetNextToken();
                while (token != null && !(token is EOFToken))
                {
                    token = tokeniser.GetNextToken();
                    var word = token.Value.ToLower();
                    var node = Node(word);
                    examples.Add(new NodeExample(Node(lastWord), node));
                    lastWord = node;
                }
            }
            Train(examples.ToArray());
            InParseMode = true;
        }
示例#6
0
 /// <summary>
 /// Creates a new TriG Tokeniser which reads Tokens from the given Stream
 /// </summary>
 /// <param name="input">Stream to read Tokens from</param>
 /// <param name="syntax">Syntax</param>
 public TriGTokeniser(ParsingTextReader input, TriGSyntax syntax)
     : this(input)
 {
     this._syntax = syntax;
 }
示例#7
0
 /// <summary>
 /// Creates a new TriG Tokeniser which reads Tokens from the given Stream
 /// </summary>
 /// <param name="input">Stream to read Tokens from</param>
 public TriGTokeniser(ParsingTextReader input)
     : base(input)
 {
     this._in    = input;
     this.Format = "TriG";
 }
示例#8
0
 /// <summary>
 /// Creates a new CSV Tokeniser.
 /// </summary>
 /// <param name="reader">Stream Reader.</param>
 public CsvTokeniser(StreamReader reader)
     : this(ParsingTextReader.Create(reader))
 {
 }
示例#9
0
 /// <summary>
 /// Creates a new CSV Tokeniser.
 /// </summary>
 /// <param name="reader">Text Reader.</param>
 public CsvTokeniser(ParsingTextReader reader)
     : base(reader)
 {
     _in = reader;
 }
 /// <summary>
 /// Creates a new Instance of the Tokeniser.
 /// </summary>
 /// <param name="input">The Input to generate Tokens from.</param>
 public Notation3Tokeniser(TextReader input)
     : this(ParsingTextReader.Create(input))
 {
 }
 /// <summary>
 /// Creates a new Instance of the Tokeniser.
 /// </summary>
 /// <param name="input">The Input Stream to generate Tokens from.</param>
 public Notation3Tokeniser(ParsingTextReader input)
     : base(input)
 {
     _in    = input;
     Format = "Notation 3";
 }
 /// <summary>
 /// Creates a new NTriples Tokeniser which reads Tokens from the given Input
 /// </summary>
 /// <param name="input">Input to read Tokens from</param>
 /// <param name="syntax">NTriples syntax to tokenise</param>
 public NTriplesTokeniser(TextReader input, NTriplesSyntax syntax)
     : this(ParsingTextReader.Create(input), syntax)
 {
 }
 /// <summary>
 /// Creates a new NTriples Tokeniser which reads Tokens from the given Stream
 /// </summary>
 /// <param name="input">Stream to read Tokens from</param>
 public NTriplesTokeniser(StreamReader input)
     : this(ParsingTextReader.Create(input))
 {
 }
 /// <summary>
 /// Creates a new NTriples Tokeniser which reads Tokens from the given Stream
 /// </summary>
 /// <param name="input">Stream to read Tokens from</param>
 public NTriplesTokeniser(ParsingTextReader input)
     : this(input, NTriplesSyntax.Rdf11)
 {
 }
示例#15
0
 /// <summary>
 /// Creates a new TSV Tokeniser
 /// </summary>
 /// <param name="reader">Text Reader</param>
 public TsvTokeniser(ParsingTextReader reader)
     : base(reader)
 {
     this._in = reader;
 }
示例#16
0
 /// <summary>
 /// Creates a new TriG Tokeniser which reads Tokens from the given Input
 /// </summary>
 /// <param name="input">Input to read Tokens from</param>
 public TriGTokeniser(TextReader input)
     : this(ParsingTextReader.Create(input))
 {
 }
示例#17
0
 /// <summary>
 /// Creates a new TriG Tokeniser which reads Tokens from the given Input
 /// </summary>
 /// <param name="input">Input to read Tokens from</param>
 /// <param name="syntax">Syntax</param>
 public TriGTokeniser(TextReader input, TriGSyntax syntax)
     : this(ParsingTextReader.Create(input), syntax)
 {
 }
 /// <summary>
 /// Creates a new NTriples Tokeniser which reads Tokens from the given Stream
 /// </summary>
 /// <param name="input">Stream to read Tokens from</param>
 public NTriplesTokeniser(ParsingTextReader input)
     : base(input)
 {
     this._in    = input;
     this.Format = "NTriples";
 }