예제 #1
0
 private void setSubject(RDFTerm subject)
 {
     if ((subject) == null)
     {
         throw new ArgumentNullException("subject");
     }
     if (!(subject.getKind() == RDFTerm.IRI ||
           subject.getKind() == RDFTerm.BLANK))
     {
         throw new ArgumentException("doesn't satisfy subject.kind==RDFTerm.IRI || subject.kind==RDFTerm.BLANK");
     }
     this.subject = subject;
 }
예제 #2
0
 private void setPredicate(RDFTerm predicate)
 {
     if ((predicate) == null)
     {
         throw new ArgumentNullException("predicate");
     }
     if (!(predicate.getKind() == RDFTerm.IRI))
     {
         throw new ArgumentException("doesn't satisfy predicate.kind==RDFTerm.IRI");
     }
     this.predicate = predicate;
 }
예제 #3
0
        /*
         *  Replaces certain blank nodes with blank nodes whose
         *  names meet the N-Triples requirements
         * @param triples A set of RDF triples
         * @param bnodeLabels A mapping of blank node names
         * already allocated.  This method will modify this
         * _object as needed to allocate new blank nodes.
         */
        //
        internal static void replaceBlankNodes(ISet <RDFTriple> triples,
                                               IDictionary <string, RDFTerm> bnodeLabels)
        {
            if (bnodeLabels.Count == 0)
            {
                return;
            }
            IDictionary <string, RDFTerm> newBlankNodes  = new PeterO.Support.LenientDictionary <string, RDFTerm>();
            IList <RDFTriple[]>           changedTriples = new List <RDFTriple[]>();

            int[] nodeindex = new int[] { 0 };
            foreach (var triple in triples)
            {
                bool    changed = false;
                RDFTerm subj    = triple.getSubject();
                if (subj.getKind() == RDFTerm.BLANK)
                {
                    string oldname = subj.getValue();
                    string newname = suggestBlankNodeName(oldname, nodeindex, bnodeLabels);
                    if (!newname.Equals(oldname))
                    {
                        RDFTerm newNode = newBlankNodes[oldname];
                        if (newNode == null)
                        {
                            newNode = RDFTerm.fromBlankNode(newname);
                            bnodeLabels.Add(newname, newNode);
                            newBlankNodes.Add(oldname, newNode);
                        }
                        subj    = newNode;
                        changed = true;
                    }
                }
                RDFTerm obj = triple.getObject();
                if (obj.getKind() == RDFTerm.BLANK)
                {
                    string oldname = obj.getValue();
                    string newname = suggestBlankNodeName(oldname, nodeindex, bnodeLabels);
                    if (!newname.Equals(oldname))
                    {
                        RDFTerm newNode = newBlankNodes[oldname];
                        if (newNode == null)
                        {
                            newNode = RDFTerm.fromBlankNode(newname);
                            bnodeLabels.Add(newname, newNode);
                            newBlankNodes.Add(oldname, newNode);
                        }
                        obj     = newNode;
                        changed = true;
                    }
                }
                if (changed)
                {
                    RDFTriple[] newTriple = new RDFTriple[] { triple,
                                                              new RDFTriple(subj, triple.getPredicate(), obj) };
                    changedTriples.Add(newTriple);
                }
            }
            foreach (var triple in changedTriples)
            {
                triples.Remove(triple[0]);
                triples.Add(triple[1]);
            }
        }
예제 #4
0
 private void setSubject(RDFTerm subject)
 {
     if((subject)==null)throw new ArgumentNullException("subject");
     if(!(subject.getKind()==RDFTerm.IRI ||
     subject.getKind()==RDFTerm.BLANK))throw new ArgumentException("doesn't satisfy subject.kind==RDFTerm.IRI || subject.kind==RDFTerm.BLANK");
     this.subject = subject;
 }
예제 #5
0
 private void setPredicate(RDFTerm predicate)
 {
     if((predicate)==null)throw new ArgumentNullException("predicate");
     if(!(predicate.getKind()==RDFTerm.IRI))throw new ArgumentException("doesn't satisfy predicate.kind==RDFTerm.IRI");
     this.predicate = predicate;
 }