Package com.hp.hpl.jena.rdf.model.test

Source Code of com.hp.hpl.jena.rdf.model.test.TestRemoveBug

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.hp.hpl.jena.rdf.model.test;

import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.ResIterator;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.rdf.model.test.helpers.TestingModelFactory;

import java.io.StringReader;

import org.junit.Assert;

public class TestRemoveBug extends AbstractModelTestBase
{

  public TestRemoveBug( final TestingModelFactory modelFactory,
      final String name )
  {
    super(modelFactory, name);
  }

  /**
   * Test a bug case, intermittent only (about 1 in 50!)
   */
  public void testBug1()
  {
    final String src = "@prefix foaf:    <http://xmlns.com/foaf/0.1/> .\n"
        + "<http://www.hp.com/people/Ian_Dickinson> foaf:mbox_sha1sum '896dfb5980f37c47ada8c2a2538888d0c39e582d' .\n"
        +
        // "[a foaf:Person ; foaf:name 'Ian Dickinson'  ; foaf:title 'Mr'  ;"
        // +
        // " foaf:givenname 'Ian'  ; foaf:family_name 'Dickinson' ;\n" +
        // " foaf:mbox_sha1sum '896dfb5980f37c47ada8c2a2538888d0c39e582d'  ;"
        // +
        // " foaf:homepage <http://www.iandickinson.me.uk>;\n" +
        // " foaf:phone <tel:+44-(117)-312-8796> ; " +
        // " foaf:depiction <http://www.iandickinson.me.uk/images/me2005.jpg>;"
        // +
        // " foaf:workInfoHomepage <http://www.hpl.hp.com/semweb>" +
        "[] foaf:name 'Ian Dickinson'  ;\n" + " foaf:p1 'v1'; \n"
        + " foaf:p1 'v2'; \n" + " foaf:p1 'v3'; \n"
        + " foaf:p1 'v4'; \n" + " foaf:p1 'v5'; \n"
        + " foaf:p1 'v6'; \n" + " foaf:p1 'v7'; \n"
        + " foaf:p1 'v8'; \n" + " foaf:p1 'v9'; \n" + ".";

    for (int count = 0; count < 1000; count++)
    {
      // System.out.println("Test " + count);
      final Model incoming = createModel();
      incoming.read(new StringReader(src), null, "N3");

      // Find the bNode that will be rewritten
      final Property name = incoming.createProperty(
          "http://xmlns.com/foaf/0.1/", "name");
      final ResIterator ri = incoming.listSubjectsWithProperty(name,
          "Ian Dickinson");
      final Resource bNode = ri.nextResource();
      ri.close();

      // Rewrite it to ground form
      final int originalCount = bNode.listProperties().toList().size();
      final Resource newR = incoming
          .createResource("http://www.hp.com/people/Ian_Dickinson");
      int runningCount = 0;
      final StmtIterator si = incoming.listStatements(bNode, null,
          (RDFNode) null);
      final Model additions = createModel();
      while (si.hasNext())
      {
        final Statement s = si.nextStatement();
        runningCount += 1;
        si.remove();
        // System.out.println("Rewrite " + s + " base on " + newR);
        additions.add(additions.createStatement(newR, s.getPredicate(),
            s.getObject()));
      }
      Assert.assertEquals("on iteration " + count + " with "
          + bNode.asNode().getBlankNodeLabel(), originalCount,
          runningCount);
      incoming.add(additions);
      final Resource ian = incoming
          .getResource("http://www.hp.com/people/Ian_Dickinson");
      Assert.assertTrue("Smush failed on iteration " + count,
          ian.hasProperty(name));
    }
  }
}
TOP

Related Classes of com.hp.hpl.jena.rdf.model.test.TestRemoveBug

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.