.
+ SELECT DISTINCT ?query ?data ?graph_data ?result WHERE {
+ <' .$id. '> mf:action ?action ;
+ mf:result ?result .
+ ?action qt:query ?query .
+ OPTIONAL {
+ ?action qt:data ?data .
+ }
+ OPTIONAL {
+ ?action qt:graphData ?graph_data .
+ }
+ }
+ ';
+ $qr = $this->store->query($q);
+ $rows = $qr['result']['rows'];
+ $infos = array();
+ foreach (array('query', 'data', 'result', 'graph_data') as $var) {
+ $infos[$var] = array();
+ $infos[$var . '_value'] = array();
+ foreach ($rows as $row) {
+ if (isset($row[$var])) {
+ if (!in_array($row[$var], $infos[$var])) {
+ $infos[$var][] = $row[$var];
+ $infos[$var . '_value'][] = $this->getFile($row[$var]);
+ }
+ }
+ }
+ $$var = $infos[$var];
+ ${$var . '_value'} = $infos[$var . '_value'];
+ if (count($infos[$var]) == 1) {
+ $$var = $infos[$var][0];
+ ${$var . '_value'} = $infos[$var . '_value'][0];
+ }
+ if ($$var && ($var != '-result')) {
+ //echo '' . $$var . $nl . $nl . htmlspecialchars(${$var . '_value'}) . '
';
+ }
+ }
+ /* query infos */
+ ARC2::inc('SPARQLPlusParser');
+ $parser = new ARC2_SPARQLPlusParser($this->a, $this);
+ $parser->parse($query_value, $query);
+ $infos = $parser->getQueryInfos();
+ $rest = $parser->getUnparsedCode();
+ $errors = $parser->getErrors();
+ $q_type = !$errors ? $infos['query']['type'] : '';
+ /* add data */
+ $dsets = array();
+ $gdsets = array();
+ if ($data) {
+ $dsets = is_array($data) ? array_merge($dsets, $data) : array_merge($dsets, array($data));
+ }
+ if ($graph_data) {
+ $gdsets = is_array($graph_data) ? array_merge($gdsets, $graph_data) : array_merge($gdsets, array($graph_data));
+ }
+ if (!$dsets && !$gdsets) {
+ foreach ($infos['query']['dataset'] as $set) {
+ if ($set['named']) {
+ $gdsets[] = $set['graph'];
+ }
+ else {
+ $dsets[] = $set['graph'];
+ }
+ }
+ }
+ $store = $this->data_store;
+ $store->reset();
+ foreach ($dsets as $graph) {
+ $qr = $store->query('LOAD <' .$graph. '>');
+ }
+ foreach ($gdsets as $graph) {
+ $qr = $store->query('LOAD <' .$graph. '> INTO <' .$graph. '>');
+ }
+ /* run query */
+ if ($query) {
+ $sql = $store->query($query_value, 'sql', $query);
+ $qr = $store->query($query_value, '', $query);
+ $qr_result = $qr['result'];
+ if ($q_type == 'select') {
+ $qr_result = $this->adjustBnodes($qr['result'], $id);
+ }
+ elseif ($q_type == 'construct') {
+ $ser = ARC2::getTurtleSerializer($this->a);
+ $qr_result = $ser->getSerializedIndex($qr_result);
+ }
+ }
+ //echo 'query result: ' . $nl . htmlspecialchars(print_r($qr_result, 1)) . '
';
+ if (!$query || $errors || $rest) {
+ return array('pass' => 0, 'info' => 'query could not be parsed' . htmlspecialchars($query_value));
+ }
+ $m = 'isSame' . $q_type . 'Result';
+ $sub_r = $this->$m($qr_result, $result_value, $result, $id);
+ $pass = $sub_r['pass'];
+ if (in_array($id, array(
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest#dawg-sort-6',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest#dawg-sort-8',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest#dawg-sort-builtin',
+ ))) {
+ $pass = 0; /* manually checked 2007-09-18 */
+ }
+ if (in_array($id, array(
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest#dawg-sort-function',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/reduced/manifest#reduced-1',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/reduced/manifest#reduced-2',
+ ))) {
+ $pass = 1; /* manually checked 2007-11-28 */
+ }
+ $pass_info = $sub_r['info'];
+ $info = print_r($pass_info, 1) . $nl;
+ $info .= '
sql: ' . $nl . htmlspecialchars($sql['result']) . '
';
+ $info .= $pass ? '' : print_r($graph_data, 1) . $nl . htmlspecialchars(print_r($graph_data_value, 1)) . '
';
+ $info .= $pass ? '' : print_r($data, 1) . $nl . htmlspecialchars(print_r($data_value, 1)) . '
';
+ $info .= $pass ? '' : $query . $nl . htmlspecialchars($query_value) . '
';
+ $info .= $pass ? '' : 'query result: ' . $nl . htmlspecialchars(print_r($qr_result, 1)) . '
' . '
';
+ $info .= $pass ? '' : print_r($infos, 1);
+ return array('pass' => $pass, 'info' => $info);
+ }
+
+ /* */
+
+ function isSameSelectResult($qr, $result, $result_base) {
+ if (strpos($result, 'http://www.w3.org/2001/sw/DataAccess/tests/result-set#')) {
+ $parser = ARC2::getRDFParser($this->a);
+ $parser->parse($result_base, $result);
+ $index = $parser->getSimpleIndex(0);
+ //echo '' . print_r($index, 1) .'
';
+ $valid_qr = $this->buildTurtleSelectQueryResult($index);
+ }
+ else {
+ $parser = ARC2::getSPARQLXMLResultParser($this->a);
+ $parser->parse('', $result);
+ $valid_qr = $parser->getStructure();
+ }
+ if (isset($valid_qr['boolean'])) {
+ $pass = $valid_qr['boolean'] == $this->v('boolean', '', $qr);
+ }
+ else {
+ $pass = 1;
+ if (count($valid_qr['variables']) != count($qr['variables'])) {
+ $pass = 0;
+ }
+ if (count($valid_qr['rows']) != count($qr['rows'])) {
+ $pass = 0;
+ }
+ if ($pass) {
+ foreach ($valid_qr['variables'] as $var) {
+ if (!in_array($var, $qr['variables'])) {
+ $pass = 0;
+ break;
+ }
+ }
+ }
+ if ($pass) {
+ $index = $this->buildArrayHashIndex($qr['rows']);
+ $valid_index = $this->buildArrayHashIndex($valid_qr['rows']);
+ if (($diff = array_diff($index, $valid_index)) || ($diff = array_diff($valid_index, $index))) {
+ $pass = 0;
+ //echo '' . print_r($diff, 1) . '
';
+ }
+ }
+ }
+ return array('pass' => $pass, 'info' => $valid_qr);
+ }
+
+ /* */
+
+ function isSameConstructResult($qr, $result, $result_base, $test) {
+ $parser = ARC2::getRDFParser($this->a);
+ $parser->parse('', $result);
+ $valid_triples = $parser->getTriples();
+ $parser = ARC2::getRDFParser($this->a);
+ $parser->parse('', $qr);
+ $triples = $parser->getTriples();
+ $info = '' . print_r($valid_triples, 1) .'
';
+ $info = '';
+
+ //echo '' . print_r($index, 1) .'
';
+ $pass = 0;
+ if (in_array($test, array(/* manually checked 2007-09-21 */
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/construct/manifest#construct-1',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/construct/manifest#construct-2',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/construct/manifest#construct-3',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/construct/manifest#construct-4',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/construct/manifest#construct-5',
+ ))) {
+ $pass = 1;
+ }
+ return array('pass' => $pass, 'info' => $valid_triples);
+ }
+
+ /* */
+
+ function isSameAskResult($qr, $result, $result_base) {
+ if (preg_match('/(true|false)\.(ttl|n3)$/', $result_base, $m)) {
+ $valid_r = $m[1];
+ }
+ else {
+ $valid_r = preg_match('/boolean\>([^\<]+)/s', $result, $m) ? trim($m[1]) : '-';
+ }
+ $r = ($qr === true) ? 'true' : 'false';
+ $pass = ($r == $valid_r) ? 1 : 0;
+ return array('pass' => $pass, 'info' => $valid_r);
+ }
+
+ /* */
+
+ function buildTurtleSelectQueryResult($index) {
+ $rs = 'http://www.w3.org/2001/sw/DataAccess/tests/result-set#';
+ $rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
+ $r = array('variables' => array(), 'rows' => array());
+ foreach ($index as $node => $props) {
+ $types = $this->v($rdf . 'type', array(), $props);
+ foreach ($types as $type) {
+ if ($type['value'] == $rs . 'ResultSet') {
+ $vars = $this->v($rs . 'resultVariable', array(), $props);
+ foreach ($vars as $var) {
+ $r['variables'][] = $var['value'];
+ }
+ }
+ }
+ $bindings = $this->v($rs . 'binding', array(), $props);
+ if ($bindings) {
+ $row = array();
+ foreach ($bindings as $binding) {
+ $binding_id = $binding['value'];
+ $var = $index[$binding_id][$rs . 'variable'][0]['value'];
+ $val = $index[$binding_id][$rs . 'value'][0]['value'];
+ $val_type = $index[$binding_id][$rs . 'value'][0]['type'];
+ //$val_type = preg_match('/literal/', $val_type) ? 'literal' : $val_type;
+ $row[$var] = $val;
+ $row[$var . ' type'] = $val_type;
+ if ($dt = $this->v('datatype', 0, $index[$binding_id][$rs . 'value'][0])) {
+ $row[$var . ' datatype'] = $dt;
+ }
+ if ($lang = $this->v('lang', 0, $index[$binding_id][$rs . 'value'][0])) {
+ $row[$var . ' lang'] = $lang;
+ }
+ }
+ $r['rows'][] = $row;
+ }
+ }
+ return $r;
+ }
+
+ /* */
+
+ function buildArrayHashIndex($rows) {
+ $r = array();
+ foreach ($rows as $row) {
+ $hash = '';
+ ksort($row);
+ foreach ($row as $k => $v) {
+ $hash .= is_numeric($k) ? '' : ' ' . md5($k) . ' ' . md5($v);
+ }
+ $r[] = $hash;
+ }
+ return $r;
+ }
+
+ /* */
+
+ function adjustBnodes($result, $data) {
+ $mappings = array(
+ '_:b1371233574_bob' => '_:b10',
+ '_:b1114277307_alice' => '_:b1f',
+ '_:b1368422168_eve' => '_:b20',
+ '_:b1638119969_fred' => '_:b21',
+
+ '_:b288335586_a' => array(
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/distinct/manifest#no-distinct-3' => '_:b0',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/distinct/manifest#distinct-3' => '_:b0',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/distinct/manifest#distinct-9' => '_:b0',
+ 'http://www.w3.org/2001/sw/DataAccess/tests/data-r2/distinct/manifest#no-distinct-9' => '_:b0',
+ 'default' => '_:bn5',
+ ),
+ );
+ if (isset($result['rows'])) {
+ foreach ($result['rows'] as $i => $row) {
+ foreach ($result['variables'] as $var) {
+ if (isset($row[$var]) && isset($mappings[$row[$var]])) {
+ if (is_array($mappings[$row[$var]])) {
+ $result['rows'][$i][$var] = isset($mappings[$row[$var]][$data]) ? $mappings[$row[$var]][$data] : $mappings[$row[$var]]['default'];
+ }
+ else {
+ $result['rows'][$i][$var] = $mappings[$row[$var]];
+ }
+ }
+ }
+ }
+ }
+ return $result;
+ }
+
+}
diff --git a/arc2-2.2.4/tests/data/atom/feed.atom b/arc2-2.2.4/tests/data/atom/feed.atom
new file mode 100755
index 0000000..446c131
--- /dev/null
+++ b/arc2-2.2.4/tests/data/atom/feed.atom
@@ -0,0 +1,20 @@
+
+
+
+ Example Feed
+
+ 2003-12-13T18:30:02Z
+
+ John Doe
+
+ urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6
+
+
+ Atom-Powered Robots Run Amok
+
+ urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a
+ 2003-12-13T18:30:02Z
+ Some text.
+
+
+
\ No newline at end of file
diff --git a/arc2-2.2.4/tests/data/json/crunchbase-facebook.js b/arc2-2.2.4/tests/data/json/crunchbase-facebook.js
new file mode 100755
index 0000000..9974559
--- /dev/null
+++ b/arc2-2.2.4/tests/data/json/crunchbase-facebook.js
@@ -0,0 +1,450 @@
+{"name": "Facebook",
+ "permalink": "facebook",
+ "homepage_url": "http://facebook.com",
+ "blog_url": "http://blog.facebook.com",
+ "blog_feed_url": "http://blog.facebook.com/atom.php",
+ "category_code": "web",
+ "number_of_employees": 450,
+ "founded_year": 2004,
+ "founded_month": 2,
+ "founded_day": 1,
+ "deadpooled_year": null,
+ "deadpooled_month": null,
+ "deadpooled_day": null,
+ "deadpooled_url": "",
+ "tag_list": "social, facebook, college, students, profiles, network, socialnetwork, socialmedia, platform",
+ "email_address": "",
+ "phone_number": "",
+ "overview": "\u003Cp\u003EOn February 4th, 2004 \u003Ca href=\"http://www.crunchbase.com/person/mark-zuckerberg\" title=\"Mark Zuckerberg\"\u003EMark Zuckerberg\u003C/a\u003E launched The Facebook, a social network that was at the time exclusively for Harvard students. It was a huge hit, in 2 weeks, half of the student body at Harvard had signed up. Other schools in the Boston area began demanding a Facebook network. Zuckerberg immediately recruited his friends \u003Ca href=\"http://www.crunchbase.com/person/dustin-moskovitz\" title=\"Dustin Moskowitz\"\u003EDustin Moskowitz\u003C/a\u003E and Chris Hughes to help build Facebook, and within four months, Facebook added 30 more college networks. \u003C/p\u003E\n\n\u003Cp\u003EThe original idea for the term Facebook came from Zuckerberg\u0026#8217;s high school (Phillips Exeter Academy). The Exeter Face Book was passed around to every student as a way for students to get to know their classmates for the following year. It was a physical paper book until Zuckerberg brought it to the internet.\u003C/p\u003E\n\n\u003Cp\u003EWith this success, Zuckerberg, Moskowitz and Hughes moved out to Palo Alto for the summer and rented a sublet. A few weeks later, Zuckerberg ran into the former cofounder of Napster, Sean Parker. Parker soon moved in to Zuckerberg\u0026#8217;s apartment and they began working together. Parker provided the introduction to their first investor, Peter Thiel, cofounder of PayPal and managing partner of the Founders Fund. Thiel invested $500,000 into Facebook. \u003C/p\u003E\n\n\u003Cp\u003EWith millions more users, Friendster \u003Ca href=\"http://www.techcrunch.com/2006/12/12/yahoos-project-fraternity-docs-leaked/\" title=\"attempted\"\u003Eattempted\u003C/a\u003E to acquire the company for $10 million in mid 2004. Facebook turned down the offer and subsequently received $12.7 million in funding from Accel Partners, at a valuation of \u003Ca href=\"http://www.techcrunch.com/2005/09/07/85-of-college-students-use-facebook/\" title=\"around $100 million\"\u003Earound $100 million\u003C/a\u003E. Facebook continued to grow, opening up to high school students in September 2005 and adding an immensely popular photo sharing feature the next month. The next spring, Facebook received $25 million in funding from Greylock Partners and Meritech Capital, as well as previous investors Accel Partners and Peter Thiel. The pre-money valuation for this deal was about $525 million. Facebook subsequently \u003Ca href=\"http://www.techcrunch.com/2006/04/26/facebook-goes-beyond-college-high-school-markets/\" title=\"opened\"\u003Eopened\u003C/a\u003E up to work networks, eventually amassing over 20,000 work networks. Finally in September 2006, Facebook \u003Ca href=\"http://www.techcrunch.com/2006/09/26/facebook-just-launched-open-registrations/\" title=\"opened\"\u003Eopened\u003C/a\u003E to anyone with an email address. \u003C/p\u003E\n\n\u003Cp\u003EIn the summer of 2006, Yahoo \u003Ca href=\"http://www.techcrunch.com/2006/09/21/facebook-and-yahoo-in-acquisition-talks-for-1-billion/\" title=\"attempted to acquire\"\u003Eattempted to acquire\u003C/a\u003E the company for $1 billion dollars. \u003Ca href=\"http://www.wired.com/techbiz/startups/news/2007/09/ff_facebook\" title=\"Reports\" rel=\"nofollow\"\u003EReports\u003C/a\u003E actually indicated that Zuckerberg made a verbal agreement to sell Facebook to Yahoo. A few days later when Yahoo\u0026#8217;s stock price took a dive, the offer was lowered to $800 million and Zuckerberg walked away from the deal. Yahoo later \u003Ca href=\"http://www.techcrunch.com/2006/12/12/yahoos-project-fraternity-docs-leaked/\" title=\"offered\"\u003Eoffered\u003C/a\u003E $1 billion again, this time Zuckerberg turned Yahoo down and earned instant notoriety as the \u0026#8220;kid\u0026#8221; who turned down a billion. This was not the first time Zuckerberg turned down an acquisition offer; Viacom had previously \u003Ca href=\"http://www.techcrunch.com/2006/03/28/facebook-is-doing-the-skype-dance/\" title=\"unsuccessfully\"\u003Eunsuccessfully\u003C/a\u003E attempted to acquire the company for $750 million in March, 2006. \u003C/p\u003E\n\n\u003Cp\u003EOne sour note for Facebook has been the \u003Ca href=\"http://www.techcrunch.com/2007/07/16/the-ghost-of-zuckerbergs-past-may-haunt-facebook-ipo/\" title=\"controversy\"\u003Econtroversy\u003C/a\u003E with social network Uconnect. The founders of Uconnect, former classmates of Mark Zuckerberg at Harvard, allege that Zuckerberg stole their original source code for Facebook. The ordeal has \u003Ca href=\"http://www.techcrunch.com/2007/10/10/facebook-vs-connectu-facebook-makes-untrue-assertions-claims-connectu/\" title=\"gone to court\"\u003Egone to court\u003C/a\u003E, but is still unresolved. \u003C/p\u003E\n\n\u003Cp\u003ENotwithstanding this lingering controversy, Facebook\u0026#8217;s growth in the fall of 2007 was staggering. Over 1 million new users signed up every week, 200,000 daily, totaling over 50 million active users. Facebook received 40 billion page views a month. Long gone were the days of Facebook as a social network for college students. 11% of users are over the age of 35, and the fastest growing demographic is users over 30. Facebook has also seen huge growth internationally; 15% of the user base is in Canada. Facebook users\u0026#8217; \u003Ca href=\"http://www.techcrunch.com/2007/11/13/i-just-cant-be-a-college-student-without-facebook/\" title=\"passion\"\u003Epassion\u003C/a\u003E, or \u003Ca href=\"http://www.techcrunch.com/2007/03/09/career-advice-dont-choose-facebook-over-your-job/\" title=\"addiction\"\u003Eaddiction\u003C/a\u003E, to the site is unparalleled: more than half use the product every single day and users spend an average of 19 minutes a day on Facebook. Facebook is 6th most trafficked site in the US and top photo sharing site with \u003Ca href=\"http://www.techcrunch.com/2007/11/13/2-billion-photos-on-flickr/\" title=\"4.1 billion photos uploaded\"\u003E4.1 billion photos uploaded\u003C/a\u003E. \u003C/p\u003E\n\n\u003Cp\u003EBased on these types of numbers, \u003Ca href=\"http://www.techcrunch.com/2007/10/24/facebook-takes-the-microsoft-money-and-runs/\" title=\"Microsoft invested\"\u003EMicrosoft invested\u003C/a\u003E $240 million into Facebook for 1.6 percent of the company in October 2007. This meant a valuation of over $15 billion, making Facebook the \u003Ca href=\"http://www.techcrunch.com/2007/10/25/perspective-facebook-is-now-5th-most-valuable-us-internet-company/\" title=\"5th most valuable US Internet company\"\u003E5th most valuable US Internet company\u003C/a\u003E, yet with only $150 million in annual revenue. Many explained Microsoft\u0026#8217;s decision as being solely driven by the desire to outbid Google. \u003C/p\u003E\n\n\u003Cp\u003EFacebook\u0026#8217;s competitors include \u003Ca href=\"http://www.crunchbase.com/company/myspace\" title=\"MySpace\"\u003EMySpace\u003C/a\u003E, \u003Ca href=\"http://www.crunchbase.com/company/Bebo\" title=\"Bebo\"\u003EBebo\u003C/a\u003E, \u003Ca href=\"http://www.crunchbase.com/company/Friendster\" title=\"Friendster\"\u003EFriendster\u003C/a\u003E, \u003Ca href=\"http://www.crunchbase.com/company/LinkedIn\" title=\"LinkedIn\"\u003ELinkedIn\u003C/a\u003E, \u003Ca href=\"http://www.crunchbase.com/company/tagged\" title=\"Tagged\"\u003ETagged\u003C/a\u003E, \u003Ca href=\"http://www.techcrunch.com/2007/01/20/hi5-traffic-surges-may-be-second-largest-social-network/\" title=\"Hi5\"\u003EHi5\u003C/a\u003E, \u003Ca href=\"http://www.techcrunch.com/2006/09/25/a-look-at-piczo-and-its-competitors/\" title=\"Piczo\"\u003EPiczo\u003C/a\u003E, and \u003Ca href=\"http://www.techcrunch.com/2007/10/30/details-revealed-google-opensocial-to-be-common-apis-for-building-social-apps/\" title=\"Open Social\"\u003EOpen Social\u003C/a\u003E. \u003C/p\u003E\n\n\u003Cp\u003E\u003Cimg src=\"http://farm3.static.flickr.com/2059/2046940872_73672f2007.jpg\" alt=\"Facebook Traffic\"/\u003E\u003C/p\u003E",
+ "image":
+ {"available_sizes":
+ [[[150,
+ 56],
+ "assets/images/resized/0000/4552/4552v2-max-150x150.jpg"],
+ [[250,
+ 94],
+ "assets/images/resized/0000/4552/4552v2-max-250x250.jpg"],
+ [[450,
+ 169],
+ "assets/images/resized/0000/4552/4552v2-max-450x450.jpg"]],
+ "attribution": null},
+ "products":
+ [{"name": "Facebook Platform",
+ "permalink": "facebook-platform"},
+ {"name": "Facebook News Feed",
+ "permalink": "facebook-news-feed"},
+ {"name": "Facebook Chat",
+ "permalink": "facebook-chat"},
+ {"name": "Facebook Connect",
+ "permalink": "facebook-connect"},
+ {"name": "Facebook iPhone App",
+ "permalink": "facebook-iphone-app"}],
+ "relationships":
+ [{"is_past": false,
+ "title": "Founder and CEO, Board Of Directors",
+ "person":
+ {"first_name": "Mark",
+ "last_name": "Zuckerberg",
+ "permalink": "mark-zuckerberg"}},
+ {"is_past": false,
+ "title": "Co-founder and VP Engineering",
+ "person":
+ {"first_name": "Dustin",
+ "last_name": "Moskovitz",
+ "permalink": "dustin-moskovitz"}},
+ {"is_past": true,
+ "title": "Chief Revenue Officer, VP of Operations",
+ "person":
+ {"first_name": "Owen",
+ "last_name": "Van Natta",
+ "permalink": "owen-van-natta"}},
+ {"is_past": true,
+ "title": "VP of Product Management",
+ "person":
+ {"first_name": "Matt",
+ "last_name": "Cohler",
+ "permalink": "matt-cohler"}},
+ {"is_past": false,
+ "title": "Co-founder",
+ "person":
+ {"first_name": "Chris",
+ "last_name": "Hughes",
+ "permalink": "chris-hughes"}},
+ {"is_past": false,
+ "title": "VP of Product Marketing",
+ "person":
+ {"first_name": "Chamath",
+ "last_name": "Palihapitiya",
+ "permalink": "chamath-palihapitiya"}},
+ {"is_past": false,
+ "title": "CFO",
+ "person":
+ {"first_name": "Gideon",
+ "last_name": "Yu",
+ "permalink": "gideon-yu"}},
+ {"is_past": true,
+ "title": "CTO",
+ "person":
+ {"first_name": "Adam",
+ "last_name": "D'Angelo",
+ "permalink": "adam-d-angelo"}},
+ {"is_past": false,
+ "title": "COO",
+ "person":
+ {"first_name": "Sheryl",
+ "last_name": "Sandberg",
+ "permalink": "sheryl-sandberg"}},
+ {"is_past": false,
+ "title": "Senior Platform Manager",
+ "person":
+ {"first_name": "Dave",
+ "last_name": "Morin",
+ "permalink": "dave-morin"}},
+ {"is_past": false,
+ "title": "Director of Business Development",
+ "person":
+ {"first_name": "Ethan",
+ "last_name": "Beard",
+ "permalink": "ethan-beard"}},
+ {"is_past": false,
+ "title": "Chief Privacy Officer",
+ "person":
+ {"first_name": "Chris",
+ "last_name": "Kelly",
+ "permalink": "chris-kelly"}},
+ {"is_past": false,
+ "title": "",
+ "person":
+ {"first_name": "Justin",
+ "last_name": "Rosenstein",
+ "permalink": "justin-rosenstein"}},
+ {"is_past": false,
+ "title": "VP of Technical Operations",
+ "person":
+ {"first_name": "Jonathan",
+ "last_name": "Heiliger",
+ "permalink": "jonathan-heiliger"}},
+ {"is_past": false,
+ "title": "Director Platform Product Marketing",
+ "person":
+ {"first_name": "Ben",
+ "last_name": "Ling",
+ "permalink": "ben-ling"}},
+ {"is_past": false,
+ "title": "Product Lead for Facebook Platform",
+ "person":
+ {"first_name": "Ruchi",
+ "last_name": "Sanghvi",
+ "permalink": "ruchi-sanghvi"}},
+ {"is_past": false,
+ "title": "Board Of Directors",
+ "person":
+ {"first_name": "Jim",
+ "last_name": "Breyer",
+ "permalink": "jim-breyer"}},
+ {"is_past": false,
+ "title": "VP of Communications and Public Policy",
+ "person":
+ {"first_name": "Elliot",
+ "last_name": "Schrage",
+ "permalink": "elliot-schrage"}},
+ {"is_past": false,
+ "title": "Board Of Directors",
+ "person":
+ {"first_name": "Peter",
+ "last_name": "Thiel",
+ "permalink": "peter-thiel"}},
+ {"is_past": false,
+ "title": "Observer to Board of Directors",
+ "person":
+ {"first_name": "David",
+ "last_name": "Sze",
+ "permalink": "david-sze"}},
+ {"is_past": true,
+ "title": "President, Board of Directors",
+ "person":
+ {"first_name": "Sean",
+ "last_name": "Parker",
+ "permalink": "sean-parker"}},
+ {"is_past": false,
+ "title": "Board of directors",
+ "person":
+ {"first_name": "Marc",
+ "last_name": "Andreessen",
+ "permalink": "marc-andreessen"}}],
+ "competitions":
+ [{"competitor":
+ {"name": "MySpace",
+ "permalink": "myspace"}},
+ {"competitor":
+ {"name": "Friendster",
+ "permalink": "friendster"}},
+ {"competitor":
+ {"name": "Slide",
+ "permalink": "slide"}},
+ {"competitor":
+ {"name": "Zvents",
+ "permalink": "zvents"}},
+ {"competitor":
+ {"name": "FriendFeed",
+ "permalink": "friendfeed"}},
+ {"competitor":
+ {"name": "Qik",
+ "permalink": "qik"}},
+ {"competitor":
+ {"name": "hi5",
+ "permalink": "hi5"}},
+ {"competitor":
+ {"name": "Photobucket",
+ "permalink": "photobucket"}},
+ {"competitor":
+ {"name": "Webshots",
+ "permalink": "webshots"}},
+ {"competitor":
+ {"name": "Flickr",
+ "permalink": "flickr"}},
+ {"competitor":
+ {"name": "Spokeo",
+ "permalink": "spokeo"}},
+ {"competitor":
+ {"name": "HOT or NOT",
+ "permalink": "hotornot"}},
+ {"competitor":
+ {"name": "Piczo",
+ "permalink": "piczo"}},
+ {"competitor":
+ {"name": "Zyb",
+ "permalink": "zyb"}},
+ {"competitor":
+ {"name": "Multiply",
+ "permalink": "multiply"}},
+ {"competitor":
+ {"name": "YouTube",
+ "permalink": "youtube"}},
+ {"competitor":
+ {"name": "badoo",
+ "permalink": "badoo"}},
+ {"competitor":
+ {"name": "openPeople",
+ "permalink": "openpeople"}},
+ {"competitor":
+ {"name": "Bigsight Media Group",
+ "permalink": "bigsight-media-group"}},
+ {"competitor":
+ {"name": "Xiaonei",
+ "permalink": "xiaonei"}},
+ {"competitor":
+ {"name": "Daikana",
+ "permalink": "daikana"}},
+ {"competitor":
+ {"name": "Bebo",
+ "permalink": "bebo"}},
+ {"competitor":
+ {"name": "AOL",
+ "permalink": "aol"}},
+ {"competitor":
+ {"name": "CityIN",
+ "permalink": "cityin"}},
+ {"competitor":
+ {"name": "Xanga",
+ "permalink": "xanga"}},
+ {"competitor":
+ {"name": "Spleak",
+ "permalink": "spleak"}},
+ {"competitor":
+ {"name": "yuwie",
+ "permalink": "yuwie"}},
+ {"competitor":
+ {"name": "Rekatu",
+ "permalink": "rekatu"}},
+ {"competitor":
+ {"name": "5icampus",
+ "permalink": "5icampus"}},
+ {"competitor":
+ {"name": "Tagged",
+ "permalink": "tagged"}}],
+ "providerships":
+ [{"title": "",
+ "is_past": false,
+ "provider":
+ {"name": "OutCast Communications",
+ "permalink": "outcast-communications"}},
+ {"title": "Public Relations",
+ "is_past": false,
+ "provider":
+ {"name": "Blanc \u0026 Otus",
+ "permalink": "blanc-otus"}}],
+ "funding_rounds":
+ [{"round_code": "angel",
+ "source_url": "",
+ "source_description": "",
+ "raised_amount": 500000.0,
+ "raised_currency_code": "USD",
+ "funded_year": 2004,
+ "funded_month": 9,
+ "funded_day": 1,
+ "investments":
+ [{"company": null,
+ "financial_org":
+ {"name": "The Founders Fund",
+ "permalink": "founders-fund"},
+ "person": null}]},
+ {"round_code": "a",
+ "source_url": "http://www.techcrunch.com/2007/11/02/jim-breyer-extra-500-million-round-for-facebook-a-total-fiction/",
+ "source_description": "Jim Breyer: Extra $500 Million Round For Facebook A \u201cTotal Fiction\u201d",
+ "raised_amount": 12700000.0,
+ "raised_currency_code": "USD",
+ "funded_year": 2005,
+ "funded_month": 5,
+ "funded_day": 1,
+ "investments":
+ [{"company": null,
+ "financial_org":
+ {"name": "Accel Partners",
+ "permalink": "accel-partners"},
+ "person": null}]},
+ {"round_code": "b",
+ "source_url": "http://www.facebook.com/press/info.php?factsheet",
+ "source_description": "Facebook Funding",
+ "raised_amount": 27500000.0,
+ "raised_currency_code": "USD",
+ "funded_year": 2006,
+ "funded_month": 4,
+ "funded_day": 1,
+ "investments":
+ [{"company": null,
+ "financial_org":
+ {"name": "Greylock",
+ "permalink": "greylock"},
+ "person": null},
+ {"company": null,
+ "financial_org":
+ {"name": "Meritech Capital Partners",
+ "permalink": "meritech-capital-partners"},
+ "person": null},
+ {"company": null,
+ "financial_org": null,
+ "person":
+ {"first_name": "Peter",
+ "last_name": "Thiel",
+ "permalink": "peter-thiel"}}]},
+ {"round_code": "c",
+ "source_url": "http://www.techcrunch.com/2007/10/24/liveblogging-the-facebook-press-conference/#more-10260",
+ "source_description": "Liveblogging The Facebook Press Conference",
+ "raised_amount": 300000000.0,
+ "raised_currency_code": "USD",
+ "funded_year": 2007,
+ "funded_month": 10,
+ "funded_day": 1,
+ "investments":
+ [{"company":
+ {"name": "Microsoft",
+ "permalink": "microsoft"},
+ "financial_org": null,
+ "person": null},
+ {"company": null,
+ "financial_org": null,
+ "person":
+ {"first_name": "Li",
+ "last_name": "Ka-shing",
+ "permalink": "li-ka-shing"}},
+ {"company": null,
+ "financial_org": null,
+ "person":
+ {"first_name": "Marc",
+ "last_name": "Samwer",
+ "permalink": "marc-samwer"}},
+ {"company": null,
+ "financial_org": null,
+ "person":
+ {"first_name": "Oliver",
+ "last_name": "Samwer",
+ "permalink": "oliver-samwer"}},
+ {"company": null,
+ "financial_org": null,
+ "person":
+ {"first_name": "Alexander",
+ "last_name": "Samwer",
+ "permalink": "alexander-samwer"}}]},
+ {"round_code": "c",
+ "source_url": "http://www.marketwatch.com/news/story/hong-kong-tycoon-li-raises/story.aspx?guid=%7BE4097AA2-9EA3-4773-9100-456E68EE1C9A%7D",
+ "source_description": "",
+ "raised_amount": 40000000.0,
+ "raised_currency_code": "USD",
+ "funded_year": 2008,
+ "funded_month": 3,
+ "funded_day": null,
+ "investments":
+ [{"company": null,
+ "financial_org": null,
+ "person":
+ {"first_name": "Li",
+ "last_name": "Ka-shing",
+ "permalink": "li-ka-shing"}}]},
+ {"round_code": "c",
+ "source_url": "",
+ "source_description": "Reneigh is sexy",
+ "raised_amount": 15000000.0,
+ "raised_currency_code": "USD",
+ "funded_year": 2008,
+ "funded_month": 1,
+ "funded_day": 15,
+ "investments":
+ [{"company": null,
+ "financial_org":
+ {"name": "European Founders Fund",
+ "permalink": "european-founders-fund"},
+ "person": null}]},
+ {"round_code": "debt_round",
+ "source_url": "http://www.businessweek.com/technology/content/may2008/tc2008059_855064.htm",
+ "source_description": "",
+ "raised_amount": 100000000.0,
+ "raised_currency_code": "USD",
+ "funded_year": 2008,
+ "funded_month": 5,
+ "funded_day": null,
+ "investments":
+ [{"company": null,
+ "financial_org":
+ {"name": "TriplePoint Capital",
+ "permalink": "triplepoint-capital"},
+ "person": null}]}],
+ "investments":
+ [],
+ "acquisition": null,
+ "acquisitions":
+ [{"price_amount": null,
+ "price_currency_code": "USD",
+ "term_code": "cash",
+ "source_url": null,
+ "source_description": null,
+ "acquired_year": 2007,
+ "acquired_month": 7,
+ "acquired_day": 1,
+ "company":
+ {"name": "Parakey",
+ "permalink": "parakey"}}],
+ "offices":
+ [{"description": null,
+ "address1": "156 University Avenue",
+ "address2": "",
+ "zip_code": "94301",
+ "city": "Palo Alto",
+ "state_code": "CA",
+ "country_code": "USA",
+ "latitude": 37.444173,
+ "longitude": -122.163294}],
+ "milestones":
+ [{"description": "Facebook adds comments to Mini-Feed",
+ "stoned_year": 2008,
+ "stoned_month": 6,
+ "stoned_day": 25,
+ "source_url": "http://venturebeat.com/2008/06/25/facebook-adds-comment-to-the-mini-feed-its-like-friendfeed-is-looking-in-the-mirror/",
+ "source_description": "Facebook adds comments to the Mini-Feed. It\u2019s like FriendFeed is looking in the mirror"}],
+ "ipo": null,
+ "video_embeds":
+ [{"embed_code": "\u003Cscript type=\"text/javascript\" src=\"http://www.podtech.net/player/popup.js\"\u003E\u003C/script\u003E\u003Cobject classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\"450\" height=\"299\" id=\"player73536e08d3f742de9d31b25a319af359\" align=\"middle\"\u003E\u003Cparam name=\"allowScriptAccess\" value=\"always\" /\u003E\u003Cparam name=\"FlashVars\" value=\"content=http://media1.podtech.net/media/2007/09/PID012533/PodtechRandiZuckerberg2.flv\u0026totalTime=2149000\u0026permalink=http://www.podtech.net/home/4118/the-first-sister-of-facebook\u0026breadcrumb=73536e08d3f742de9d31b25a319af359\" height=\"299\" width=\"450\" /\u003E\u003Cparam name=\"movie\" value=\"http://www.podtech.net/player/podtech-player.swf?bc=73536e08d3f742de9d31b25a319af359\" /\u003E\u003Cparam name=\"quality\" value=\"high\" /\u003E\u003Cparam name=\"scale\" value=\"noscale\" /\u003E\u003Cparam name=\"bgcolor\" value=\"#000000\" /\u003E\u003Cembed name=\"player73536e08d3f742de9d31b25a319af359\" type=\"application/x-shockwave-flash\" src=\"http://www.podtech.net/player/podtech-player.swf?bc=73536e08d3f742de9d31b25a319af359\" flashvars=\"content=http://media1.podtech.net/media/2007/09/PID012533/PodtechRandiZuckerberg2.flv\u0026totalTime=2149000\u0026permalink=http://www.podtech.net/home/4118/the-first-sister-of-facebook\u0026breadcrumb=73536e08d3f742de9d31b25a319af359\" height=\"299\" width=\"450\" allowScriptAccess=\"always\" /\u003E\u003C/object\u003E\u003Cnoscript\u003EYour browser does not support JavaScript. This media can be viewed at http://www.podtech.net/home/4118/the-first-sister-of-facebook\u003C/noscript\u003E",
+ "description": "\u003Cp\u003ERobert Scoble\u2019s video from www.podtech.net/scobleshow:\u003C/p\u003E"}],
+ "external_links":
+ [{"external_url": "http://www.marketwatch.com/news/story/story.aspx?guid={E4097AA2-9EA3-4773-9100-456E68EE1C9A}",
+ "title": "Hong Kong tycoon Li raises personal Facebook investment above $100 mln"}]}
\ No newline at end of file
diff --git a/arc2-2.2.4/tests/data/json/sparql-select-result.json b/arc2-2.2.4/tests/data/json/sparql-select-result.json
new file mode 100755
index 0000000..2276f3f
--- /dev/null
+++ b/arc2-2.2.4/tests/data/json/sparql-select-result.json
@@ -0,0 +1,78 @@
+{
+ "head": {
+ "link": [
+ "http://www.w3.org/TR/rdf-sparql-XMLres/example.rq"
+ ],
+ "vars": [
+ "x",
+ "hpage",
+ "name",
+ "mbox",
+ "age",
+ "blurb",
+ "friend"
+ ]
+ },
+ "results": {
+ "bindings": [
+ {
+ "x" : {
+ "type": "bnode",
+ "value": "r1"
+ },
+
+ "hpage" : {
+ "type": "uri",
+ "value": "http://work.example.org/alice/"
+ },
+
+ "name" : {
+ "type": "literal",
+ "value": "Alice"
+ },
+
+ "mbox" : {
+ "type": "literal",
+ "value": ""
+ },
+
+ "blurb" : {
+ "datatype": "http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral",
+ "type": "typed-literal",
+ "value": "My name is alice
"
+ },
+
+ "friend" : {
+ "type": "bnode",
+ "value": "r2"
+ }
+ },{
+ "x" : {
+ "type": "bnode",
+ "value": "r2"
+ },
+
+ "hpage" : {
+ "type": "uri",
+ "value": "http://work.example.org/bob/"
+ },
+
+ "name" : {
+ "type": "literal",
+ "value": "Bob",
+ "xml:lang": "en"
+ },
+
+ "mbox" : {
+ "type": "uri",
+ "value": "mailto:bob@work.example.org"
+ },
+
+ "friend" : {
+ "type": "bnode",
+ "value": "r1"
+ }
+ }
+ ]
+ }
+ }
diff --git a/arc2-2.2.4/tests/data/nt/test.nt b/arc2-2.2.4/tests/data/nt/test.nt
new file mode 100755
index 0000000..3e52881
--- /dev/null
+++ b/arc2-2.2.4/tests/data/nt/test.nt
@@ -0,0 +1,78 @@
+#
+# Copyright World Wide Web Consortium, (Massachusetts Institute of
+# Technology, Institut National de Recherche en Informatique et en
+# Automatique, Keio University).
+#
+# All Rights Reserved.
+#
+# Please see the full Copyright clause at
+#
+#
+# Test file with a variety of legal N-Triples
+#
+# Dave Beckett - http://purl.org/net/dajobe/
+#
+# $Id: test.nt,v 1.7 2003/10/06 15:52:19 dbeckett2 Exp $
+#
+#####################################################################
+
+# comment lines
+ # comment line after whitespace
+# empty blank line, then one with spaces and tabs
+
+
+ .
+_:anon .
+ _:anon .
+# spaces and tabs throughout:
+ .
+
+# line ending with CR NL (ASCII 13, ASCII 10)
+ .
+
+# 2 statement lines separated by single CR (ASCII 10)
+ .
.
+
+
+# All literal escapes
+ "simple literal" .
+ "backslash:\\" .
+ "dquote:\"" .
+ "newline:\n" .
+ "return\r" .
+ "tab:\t" .
+
+# Space is optional before final .
+ .
+ "x".
+ _:anon.
+
+# \u and \U escapes
+# latin small letter e with acute symbol \u00E9 - 3 UTF-8 bytes #xC3 #A9
+ "\u00E9" .
+# Euro symbol \u20ac - 3 UTF-8 bytes #xE2 #x82 #xAC
+ "\u20AC" .
+# resource18 test removed
+# resource19 test removed
+# resource20 test removed
+
+# XML Literals as Datatyped Literals
+ ""^^ .
+ " "^^ .
+ "x"^^ .
+ "\""^^ .
+ ""^^ .
+ "a "^^ .
+ "a c"^^ .
+ "a\n\nc"^^ .
+ "chat"^^ .
+# resource28 test removed 2003-08-03
+# resource29 test removed 2003-08-03
+
+# Plain literals with languages
+ "chat"@fr .
+ "chat"@en .
+
+# Typed Literals
+ "abc"^^ .
+# resource33 test removed 2003-08-03
diff --git a/arc2-2.2.4/tests/data/rdfxml/planetrdf-bloggers.rdf b/arc2-2.2.4/tests/data/rdfxml/planetrdf-bloggers.rdf
new file mode 100755
index 0000000..16e5b30
--- /dev/null
+++ b/arc2-2.2.4/tests/data/rdfxml/planetrdf-bloggers.rdf
@@ -0,0 +1,1439 @@
+
+
+
+
+
+Planet RDF
+
+
+Planet RDF site blog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+AKSW Group - University of Leipzig
+
+
+AKSW Group - University of Leipzig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dean Allemang
+
+
+
+S is for Semantics by Dean Allemang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zoltan Andrejkovics
+
+
+Zoltan Andrejkovics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Al Baker
+AlBaker_Dev
+
+
+Linked Java by Al Baker
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dave Beckett
+dajobe
+
+
+Journalblog by Dave Beckett
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Tim Berners-Leetimberners_lee
+
+
+Tim Berners-Lee
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Uldis BojarsCaptSolo
+
+
+Uldis Bojars (Captain Solo)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+John Breslin
+johnbreslin
+
+
+Cloudlands by John Breslin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dan Brickley
+danbri
+
+
+danbri's foaf stories
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jeen Broekstra
+jeenbroekstra
+
+
+Rivuli by Jeen Broekstra
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dries Buytaertdries
+
+
+Dries Buytaert - Semantic Web
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Cambridge Semantics
+
+
+Cambridge Semantics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Clark and Parsiacandp
+
+
+Tales of a Semantic Web Consultancy by Clark and Parsia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dan Connolly
+dckc
+
+
+Dan Connolly
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Richard Cyganiakcygri
+
+
+Richard Cyganiak
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Datagraphdatagraph
+
+
+Datagraph
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Phil Dawesphildawes
+
+
+Phil Dawes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Yves Raimond
+moustaki
+
+
+DBTune by Yves Raimond
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DERI Galway
+
+
+DERI Galway
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DOAP Project
+
+
+DOAP Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Leigh Dodds
+ldodds
+
+
+Lost Boy by Leigh Dodds
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dublin Core Metadata InitiativeDublinCore
+
+
+Dublin Core Metadata Initiative
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Bob DuCharme
+bobdc
+
+
+bobdc.blog by Bob DuCharme
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Edd Dumbill
+edd
+
+
+behind the times by Edd Dumbill
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Ebiquity research group UMBC
+
+
+Ebiquity research group UMBC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dydradydradata
+
+
+Dydra
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+EnAKTing project
+
+
+EnAKTing project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Orri Erling
+
+
+Orri Erling by
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Lee FeigenbaumLeeFeigenbaum
+
+
+Lee Feigenbaum
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sergio Fernández
+
+
+
+Sergio Fernández
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+FOAF Project
+
+
+FOAF Project blog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Morten Frederiksen
+mortenf
+
+
+Binary Relations by Morten Frederiksen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Frederick Giasson
+
+
+Frederick Giasson
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+John Goodwingothwin
+
+
+John Goodwin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Richard Hancock
+
+
+
+3kbo by Richard Hancock
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Michael Hausenblas
+mhausenblas
+
+
+Web of Data by Michael Hausenblas
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sandro Hawke
+sandhawke
+
+
+ Decentralyze – Programming the Data Cloud by Sandro Hawke
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Tom Heath
+tommyh
+
+
+Displacement Activities by Tom Heath
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Ivan Hermanivan_herman
+
+
+Ivan Herman
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kingsley Idehen
+Kidehen
+
+
+Data Space by Kingsley Idehen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Learn Linked Datalearnlinkeddata
+
+
+Learn Linked Data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Talisnodalities
+
+
+Nodalities by Talis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Seevlseevl
+
+
+Seevl technology
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Semantic Web Company (Austria)semwebcompany
+
+
+Semantic Puzzle by Semantic Web Company (Austria)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SchemaWeb
+
+
+SchemaWeb
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Ora Lassila
+
+
+
+Wilbur-and-O by Ora Lassila
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Peter Mika
+
+
+
+Tripletalk by Peter Mika
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Andrew Matthews
+
+
+
+The Wandering Glitch 2 by Andrew Matthews
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ZDNet Semantic Web by Paul MillerPaulMiller
+
+
+ZDNet Semantic Web by Paul Miller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Libby Miller
+libbymiller
+
+
+Plan B by Libby Miller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Benjamin Nowack
+bengee
+
+
+bnode by Benjamin Nowack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Open Sahara blog
+
+
+Open Sahara blog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Alexandre Passantterraces
+
+
+Alexandre Passant
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Davide Palmisano
+dpalmisano
+
+
+turn off the lights, please by Davide Palmisano
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+POWDER WG blog
+
+
+POWDER WG blog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RDFa
+
+
+RDFa
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dave Raggettdraggett
+
+
+Dave Raggett
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+David Robillarddrobilla
+
+
+David Robillard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+RDF Resource Guide
+
+
+Dave Beckett's RDF Resource Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Peter Shaw
+
+
+
+Shawfactor by Peter Shaw
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+schema.org
+
+
+schema.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Henry Story
+bblfish
+
+
+BabelFish by Henry Story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Jeni TennisonJeniT
+
+
+Jeni Tennison - Musings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Tetherless World Constellation group RPIjahendler
+
+
+Tetherless World Constellation group RPI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Elias Torres
+
+
+Elias Torres
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sebastian Trueg
+
+
+
+Semantic Desktop by Sebastian Trueg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+W3C Semantic Web News
+
+
+W3C Semantic Web News
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+W3C Read Write Web Community Group
+
+
+W3C Read Write Web Community Group Blog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+W3C Blog Semantic Web News
+
+
+W3C Blog Semantic Web News
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Norm Walshndw
+
+
+Norm Walsh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Mark Watsonmark_l_watson
+
+
+Mark Watson
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Danny Weitzner
+djweitzner
+
+
+Open Internet Policy by Danny Weitzner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Web of Data
+
+
+Web of Data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Bill Roberts
+billroberts
+
+
+Web of Data by Bill Roberts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Web Semántica Hoy
+
+
+Web Semántica Hoy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Gregory Williamskasei
+
+
+Gregory Williams
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Egon Willighagenegonwillighagen
+
+
+chem-bla-ics by Egon Willighagen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/arc2-2.2.4/tests/data/turtle/manifest.ttl b/arc2-2.2.4/tests/data/turtle/manifest.ttl
new file mode 100755
index 0000000..a5f909e
--- /dev/null
+++ b/arc2-2.2.4/tests/data/turtle/manifest.ttl
@@ -0,0 +1,2190 @@
+# 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.
+
+# Test named *subm* are (c) W3C and taken from the Turtle submission.
+
+@prefix rdf: .
+@prefix rdfs: .
+@prefix mf: .
+@prefix qt: .
+
+@prefix rdft: .
+
+<> rdf:type mf:Manifest ;
+ rdfs:comment "Turtle tests" ;
+ mf:entries
+ (
+
+ # atomic tests
+ <#IRI_subject>
+ <#IRI_with_four_digit_numeric_escape>
+ <#IRI_with_eight_digit_numeric_escape>
+ <#IRI_with_all_punctuation>
+ <#bareword_a_predicate>
+ <#old_style_prefix>
+ <#SPARQL_style_prefix>
+ <#prefixed_IRI_predicate>
+ <#prefixed_IRI_object>
+ <#prefix_only_IRI>
+ <#prefix_with_PN_CHARS_BASE_character_boundaries>
+ <#prefix_with_non_leading_extras>
+ <#default_namespace_IRI>
+ <#prefix_reassigned_and_used>
+ <#reserved_escaped_localName>
+ <#percent_escaped_localName>
+ <#HYPHEN_MINUS_in_localName>
+ <#underscore_in_localName>
+ <#localname_with_COLON>
+ <#localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries>
+ <#localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries>
+ <#localName_with_nfc_PN_CHARS_BASE_character_boundaries>
+ <#localName_with_PN_CHARS_BASE_character_boundaries>
+ <#localName_with_leading_underscore>
+ <#localName_with_leading_digit>
+ <#localName_with_non_leading_extras>
+ <#old_style_base>
+ <#SPARQL_style_base>
+ <#labeled_blank_node_subject>
+ <#labeled_blank_node_object>
+ <#labeled_blank_node_with_PN_CHARS_BASE_character_boundaries>
+ <#labeled_blank_node_with_leading_underscore>
+ <#labeled_blank_node_with_leading_digit>
+ <#labeled_blank_node_with_non_leading_extras>
+ <#anonymous_blank_node_subject>
+ <#anonymous_blank_node_object>
+ <#sole_blankNodePropertyList>
+ <#blankNodePropertyList_as_subject>
+ <#blankNodePropertyList_as_object>
+ <#blankNodePropertyList_with_multiple_triples>
+ <#nested_blankNodePropertyLists>
+ <#blankNodePropertyList_containing_collection>
+ <#collection_subject>
+ <#collection_object>
+ <#empty_collection>
+ <#nested_collection>
+ <#first>
+ <#last>
+ <#LITERAL1>
+ <#LITERAL1_ascii_boundaries>
+ <#LITERAL1_with_UTF8_boundaries>
+ <#LITERAL1_all_controls>
+ <#LITERAL1_all_punctuation>
+ <#LITERAL_LONG1>
+ <#LITERAL_LONG1_ascii_boundaries>
+ <#LITERAL_LONG1_with_UTF8_boundaries>
+ <#LITERAL_LONG1_with_1_squote>
+ <#LITERAL_LONG1_with_2_squotes>
+ <#LITERAL2>
+ <#LITERAL2_ascii_boundaries>
+ <#LITERAL2_with_UTF8_boundaries>
+ <#LITERAL_LONG2>
+ <#LITERAL_LONG2_ascii_boundaries>
+ <#LITERAL_LONG2_with_UTF8_boundaries>
+ <#LITERAL_LONG2_with_1_squote>
+ <#LITERAL_LONG2_with_2_squotes>
+ <#literal_with_CHARACTER_TABULATION>
+ <#literal_with_BACKSPACE>
+ <#literal_with_LINE_FEED>
+ <#literal_with_CARRIAGE_RETURN>
+ <#literal_with_FORM_FEED>
+ <#literal_with_REVERSE_SOLIDUS>
+ <#literal_with_escaped_CHARACTER_TABULATION>
+ <#literal_with_escaped_BACKSPACE>
+ <#literal_with_escaped_LINE_FEED>
+ <#literal_with_escaped_CARRIAGE_RETURN>
+ <#literal_with_escaped_FORM_FEED>
+ <#literal_with_numeric_escape4>
+ <#literal_with_numeric_escape8>
+ <#IRIREF_datatype>
+ <#prefixed_name_datatype>
+ <#bareword_integer>
+ <#bareword_decimal>
+ <#bareword_double>
+ <#double_lower_case_e>
+ <#negative_numeric>
+ <#positive_numeric>
+ <#numeric_with_leading_0>
+ <#literal_true>
+ <#literal_false>
+ <#langtagged_non_LONG>
+ <#langtagged_LONG>
+ <#lantag_with_subtag>
+ <#objectList_with_two_objects>
+ <#predicateObjectList_with_two_objectLists>
+ <#repeated_semis_at_end>
+ <#repeated_semis_not_at_end>
+
+ # original tests-ttl
+ <#turtle-syntax-file-01>
+ <#turtle-syntax-file-02>
+ <#turtle-syntax-file-03>
+ <#turtle-syntax-uri-01>
+ <#turtle-syntax-uri-02>
+ <#turtle-syntax-uri-03>
+ <#turtle-syntax-uri-04>
+ <#turtle-syntax-base-01>
+ <#turtle-syntax-base-02>
+ <#turtle-syntax-base-03>
+ <#turtle-syntax-base-04>
+ <#turtle-syntax-prefix-01>
+ <#turtle-syntax-prefix-02>
+ <#turtle-syntax-prefix-03>
+ <#turtle-syntax-prefix-04>
+ <#turtle-syntax-prefix-05>
+ <#turtle-syntax-prefix-06>
+ <#turtle-syntax-prefix-07>
+ <#turtle-syntax-prefix-08>
+ <#turtle-syntax-prefix-09>
+ <#turtle-syntax-string-01>
+ <#turtle-syntax-string-02>
+ <#turtle-syntax-string-03>
+ <#turtle-syntax-string-04>
+ <#turtle-syntax-string-05>
+ <#turtle-syntax-string-06>
+ <#turtle-syntax-string-07>
+ <#turtle-syntax-string-08>
+ <#turtle-syntax-string-09>
+ <#turtle-syntax-string-10>
+ <#turtle-syntax-string-11>
+ <#turtle-syntax-str-esc-01>
+ <#turtle-syntax-str-esc-02>
+ <#turtle-syntax-str-esc-03>
+ <#turtle-syntax-pname-esc-01>
+ <#turtle-syntax-pname-esc-02>
+ <#turtle-syntax-pname-esc-03>
+ <#turtle-syntax-bnode-01>
+ <#turtle-syntax-bnode-02>
+ <#turtle-syntax-bnode-03>
+ <#turtle-syntax-bnode-04>
+ <#turtle-syntax-bnode-05>
+ <#turtle-syntax-bnode-06>
+ <#turtle-syntax-bnode-07>
+ <#turtle-syntax-bnode-08>
+ <#turtle-syntax-bnode-09>
+ <#turtle-syntax-bnode-10>
+ <#turtle-syntax-number-01>
+ <#turtle-syntax-number-02>
+ <#turtle-syntax-number-03>
+ <#turtle-syntax-number-04>
+ <#turtle-syntax-number-05>
+ <#turtle-syntax-number-06>
+ <#turtle-syntax-number-07>
+ <#turtle-syntax-number-08>
+ <#turtle-syntax-number-09>
+ <#turtle-syntax-number-10>
+ <#turtle-syntax-number-11>
+ <#turtle-syntax-datatypes-01>
+ <#turtle-syntax-datatypes-02>
+ <#turtle-syntax-kw-01>
+ <#turtle-syntax-kw-02>
+ <#turtle-syntax-kw-03>
+ <#turtle-syntax-struct-01>
+ <#turtle-syntax-struct-02>
+ <#turtle-syntax-struct-03>
+ <#turtle-syntax-struct-04>
+ <#turtle-syntax-struct-05>
+ <#turtle-syntax-lists-01>
+ <#turtle-syntax-lists-02>
+ <#turtle-syntax-lists-03>
+ <#turtle-syntax-lists-04>
+ <#turtle-syntax-lists-05>
+ <#turtle-syntax-bad-uri-01>
+ <#turtle-syntax-bad-uri-02>
+ <#turtle-syntax-bad-uri-03>
+ <#turtle-syntax-bad-uri-04>
+ <#turtle-syntax-bad-uri-05>
+ <#turtle-syntax-bad-prefix-01>
+ <#turtle-syntax-bad-prefix-02>
+ <#turtle-syntax-bad-prefix-03>
+ <#turtle-syntax-bad-prefix-04>
+ <#turtle-syntax-bad-prefix-05>
+ <#turtle-syntax-bad-base-01>
+ <#turtle-syntax-bad-base-02>
+ <#turtle-syntax-bad-base-03>
+ <#turtle-syntax-bad-struct-01>
+ <#turtle-syntax-bad-struct-02>
+ <#turtle-syntax-bad-struct-03>
+ <#turtle-syntax-bad-struct-04>
+ <#turtle-syntax-bad-struct-05>
+ <#turtle-syntax-bad-struct-06>
+ <#turtle-syntax-bad-struct-07>
+ <#turtle-syntax-bad-kw-01>
+ <#turtle-syntax-bad-kw-02>
+ <#turtle-syntax-bad-kw-03>
+ <#turtle-syntax-bad-kw-04>
+ <#turtle-syntax-bad-kw-05>
+ <#turtle-syntax-bad-n3-extras-01>
+ <#turtle-syntax-bad-n3-extras-02>
+ <#turtle-syntax-bad-n3-extras-03>
+ <#turtle-syntax-bad-n3-extras-04>
+ <#turtle-syntax-bad-n3-extras-05>
+ <#turtle-syntax-bad-n3-extras-06>
+ <#turtle-syntax-bad-n3-extras-07>
+ <#turtle-syntax-bad-n3-extras-08>
+ <#turtle-syntax-bad-n3-extras-09>
+ <#turtle-syntax-bad-n3-extras-10>
+ <#turtle-syntax-bad-n3-extras-11>
+ <#turtle-syntax-bad-n3-extras-12>
+ <#turtle-syntax-bad-n3-extras-13>
+ <#turtle-syntax-bad-struct-08>
+ <#turtle-syntax-bad-struct-09>
+ <#turtle-syntax-bad-struct-10>
+ <#turtle-syntax-bad-struct-11>
+ <#turtle-syntax-bad-struct-12>
+ <#turtle-syntax-bad-struct-13>
+ <#turtle-syntax-bad-struct-14>
+ <#turtle-syntax-bad-struct-15>
+ <#turtle-syntax-bad-struct-16>
+ <#turtle-syntax-bad-struct-17>
+ <#turtle-syntax-bad-lang-01>
+ <#turtle-syntax-bad-esc-01>
+ <#turtle-syntax-bad-esc-02>
+ <#turtle-syntax-bad-esc-03>
+ <#turtle-syntax-bad-esc-04>
+ <#turtle-syntax-bad-pname-01>
+ <#turtle-syntax-bad-pname-02>
+ <#turtle-syntax-bad-pname-03>
+ <#turtle-syntax-bad-string-01>
+ <#turtle-syntax-bad-string-02>
+ <#turtle-syntax-bad-string-03>
+ <#turtle-syntax-bad-string-04>
+ <#turtle-syntax-bad-string-05>
+ <#turtle-syntax-bad-string-06>
+ <#turtle-syntax-bad-string-07>
+ <#turtle-syntax-bad-num-01>
+ <#turtle-syntax-bad-num-02>
+ <#turtle-syntax-bad-num-03>
+ <#turtle-syntax-bad-num-04>
+ <#turtle-syntax-bad-num-05>
+ <#turtle-eval-struct-01>
+ <#turtle-eval-struct-02>
+ <#turtle-subm-01>
+ <#turtle-subm-02>
+ <#turtle-subm-03>
+ <#turtle-subm-04>
+ <#turtle-subm-05>
+ <#turtle-subm-06>
+ <#turtle-subm-07>
+ <#turtle-subm-08>
+ <#turtle-subm-09>
+ <#turtle-subm-10>
+ <#turtle-subm-11>
+ <#turtle-subm-12>
+ <#turtle-subm-13>
+ <#turtle-subm-14>
+ <#turtle-subm-15>
+ <#turtle-subm-16>
+ <#turtle-subm-17>
+ <#turtle-subm-18>
+ <#turtle-subm-19>
+ <#turtle-subm-20>
+ <#turtle-subm-21>
+ <#turtle-subm-22>
+ <#turtle-subm-23>
+ <#turtle-subm-24>
+ <#turtle-subm-25>
+ <#turtle-subm-26>
+ <#turtle-subm-27>
+ <#turtle-eval-bad-01>
+ <#turtle-eval-bad-02>
+ <#turtle-eval-bad-03>
+ <#turtle-eval-bad-04>
+
+ # tests from Dave Beckett
+ # http://www.w3.org/2011/rdf-wg/wiki/Turtle_Candidate_Recommendation_Comments#c28
+ <#LITERAL_LONG2_with_REVERSE_SOLIDUS>
+ <#turtle-syntax-bad-LITERAL2_with_langtag_and_datatype>
+ <#two_LITERAL_LONG2s>
+ <#langtagged_LONG_with_subtag>
+
+ # tests from David Robillard
+ # http://www.w3.org/2011/rdf-wg/wiki/Turtle_Candidate_Recommendation_Comments#c21
+ <#turtle-syntax-bad-blank-label-dot-end>
+ <#turtle-syntax-bad-ln-dash-start>
+ <#turtle-syntax-bad-ln-escape-start>
+ <#turtle-syntax-bad-ln-escape>
+ <#turtle-syntax-bad-missing-ns-dot-end>
+ <#turtle-syntax-bad-missing-ns-dot-start>
+ <#turtle-syntax-bad-ns-dot-end>
+ <#turtle-syntax-bad-ns-dot-start>
+ <#turtle-syntax-bad-number-dot-in-anon>
+ <#turtle-syntax-blank-label>
+ <#turtle-syntax-ln-colons>
+ <#turtle-syntax-ln-dots>
+ <#turtle-syntax-ns-dots>
+ ) .
+
+# atomic tests
+<#IRI_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRI_subject" ;
+ rdfs:comment "IRI subject" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#IRI_with_four_digit_numeric_escape> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRI_with_four_digit_numeric_escape" ;
+ rdfs:comment "IRI with four digit numeric escape (\\u)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#IRI_with_eight_digit_numeric_escape> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRI_with_eight_digit_numeric_escape" ;
+ rdfs:comment "IRI with eight digit numeric escape (\\U)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#IRI_with_all_punctuation> rdf:type rdft:TestTurtleEval ;
+ mf:name "IRI_with_all_punctuation" ;
+ rdfs:comment "IRI with all punctuation" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#bareword_a_predicate> rdf:type rdft:TestTurtleEval ;
+ mf:name "bareword_a_predicate" ;
+ rdfs:comment "bareword a predicate" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#old_style_prefix> rdf:type rdft:TestTurtleEval ;
+ mf:name "old_style_prefix" ;
+ rdfs:comment "old-style prefix" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#SPARQL_style_prefix> rdf:type rdft:TestTurtleEval ;
+ mf:name "SPARQL_style_prefix" ;
+ rdfs:comment "SPARQL-style prefix" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#prefixed_IRI_predicate> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefixed_IRI_predicate" ;
+ rdfs:comment "prefixed IRI predicate" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#prefixed_IRI_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefixed_IRI_object" ;
+ rdfs:comment "prefixed IRI object" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#prefix_only_IRI> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefix_only_IRI" ;
+ rdfs:comment "prefix-only IRI (p:)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#prefix_with_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefix_with_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "prefix with PN CHARS BASE character boundaries (prefix: AZazÀÖØöø...:)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#prefix_with_non_leading_extras> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefix_with_non_leading_extras" ;
+ rdfs:comment "prefix with_non_leading_extras (_:a·̀ͯ‿.⁀)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_assigned_nfc_bmp_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "localName with assigned, NFC-normalized, basic-multilingual-plane PN CHARS BASE character boundaries (p:AZazÀÖØöø...)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_assigned_nfc_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "localName with assigned, NFC-normalized PN CHARS BASE character boundaries (p:AZazÀÖØöø...)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#localName_with_nfc_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_nfc_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "localName with nfc-normalize PN CHARS BASE character boundaries (p:AZazÀÖØöø...)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#localName_with_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "localName with PN CHARS BASE character boundaries (p:AZazÀÖØöø...)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#default_namespace_IRI> rdf:type rdft:TestTurtleEval ;
+ mf:name "default_namespace_IRI" ;
+ rdfs:comment "default namespace IRI (:ln)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#prefix_reassigned_and_used> rdf:type rdft:TestTurtleEval ;
+ mf:name "prefix_reassigned_and_used" ;
+ rdfs:comment "prefix reassigned and used" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#reserved_escaped_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "reserved_escaped_localName" ;
+ rdfs:comment "reserved-escaped local name" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#percent_escaped_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "percent_escaped_localName" ;
+ rdfs:comment "percent-escaped local name" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#HYPHEN_MINUS_in_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "HYPHEN_MINUS_in_localName" ;
+ rdfs:comment "HYPHEN-MINUS in local name" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#underscore_in_localName> rdf:type rdft:TestTurtleEval ;
+ mf:name "underscore_in_localName" ;
+ rdfs:comment "underscore in local name" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#localname_with_COLON> rdf:type rdft:TestTurtleEval ;
+ mf:name "localname_with_COLON" ;
+ rdfs:comment "localname with COLON" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#localName_with_leading_underscore> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_leading_underscore" ;
+ rdfs:comment "localName with leading underscore (p:_)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#localName_with_leading_digit> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_leading_digit" ;
+ rdfs:comment "localName with leading digit (p:_)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#localName_with_non_leading_extras> rdf:type rdft:TestTurtleEval ;
+ mf:name "localName_with_non_leading_extras" ;
+ rdfs:comment "localName with_non_leading_extras (_:a·̀ͯ‿.⁀)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#old_style_base> rdf:type rdft:TestTurtleEval ;
+ mf:name "old_style_base" ;
+ rdfs:comment "old-style base" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#SPARQL_style_base> rdf:type rdft:TestTurtleEval ;
+ mf:name "SPARQL_style_base" ;
+ rdfs:comment "SPARQL-style base" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#labeled_blank_node_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_subject" ;
+ rdfs:comment "labeled blank node subject" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#labeled_blank_node_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_object" ;
+ rdfs:comment "labeled blank node object" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#labeled_blank_node_with_PN_CHARS_BASE_character_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_with_PN_CHARS_BASE_character_boundaries" ;
+ rdfs:comment "labeled blank node with PN_CHARS_BASE character boundaries (_:AZazÀÖØöø...)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#labeled_blank_node_with_leading_underscore> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_with_leading_underscore" ;
+ rdfs:comment "labeled blank node with_leading_underscore (_:_)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#labeled_blank_node_with_leading_digit> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_with_leading_digit" ;
+ rdfs:comment "labeled blank node with_leading_digit (_:0)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#labeled_blank_node_with_non_leading_extras> rdf:type rdft:TestTurtleEval ;
+ mf:name "labeled_blank_node_with_non_leading_extras" ;
+ rdfs:comment "labeled blank node with_non_leading_extras (_:a·̀ͯ‿.⁀)" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#anonymous_blank_node_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "anonymous_blank_node_subject" ;
+ rdfs:comment "anonymous blank node subject" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#anonymous_blank_node_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "anonymous_blank_node_object" ;
+ rdfs:comment "anonymous blank node object" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#sole_blankNodePropertyList> rdf:type rdft:TestTurtleEval ;
+ mf:name "sole_blankNodePropertyList" ;
+ rdfs:comment "sole blankNodePropertyList [ ] ." ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#blankNodePropertyList_as_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_as_subject" ;
+ rdfs:comment "blankNodePropertyList as subject [ … ] ." ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#blankNodePropertyList_as_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_as_object" ;
+ rdfs:comment "blankNodePropertyList as object [ … ] ." ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#blankNodePropertyList_with_multiple_triples> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_with_multiple_triples" ;
+ rdfs:comment "blankNodePropertyList with multiple triples [ ; ]" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#nested_blankNodePropertyLists> rdf:type rdft:TestTurtleEval ;
+ mf:name "nested_blankNodePropertyLists" ;
+ rdfs:comment "nested blankNodePropertyLists [ [ ] ; ]" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#blankNodePropertyList_containing_collection> rdf:type rdft:TestTurtleEval ;
+ mf:name "blankNodePropertyList_containing_collection" ;
+ rdfs:comment "blankNodePropertyList containing collection [ ( … ) ]" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#collection_subject> rdf:type rdft:TestTurtleEval ;
+ mf:name "collection_subject" ;
+ rdfs:comment "collection subject" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#collection_object> rdf:type rdft:TestTurtleEval ;
+ mf:name "collection_object" ;
+ rdfs:comment "collection object" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#empty_collection> rdf:type rdft:TestTurtleEval ;
+ mf:name "empty_collection" ;
+ rdfs:comment "empty collection ()" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#nested_collection> rdf:type rdft:TestTurtleEval ;
+ mf:name "nested_collection" ;
+ rdfs:comment "nested collection (())" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#first> rdf:type rdft:TestTurtleEval ;
+ mf:name "first" ;
+ rdfs:comment "first, not last, non-empty nested collection" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#last> rdf:type rdft:TestTurtleEval ;
+ mf:name "last" ;
+ rdfs:comment "last, not first, non-empty nested collection" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL1> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1" ;
+ rdfs:comment "LITERAL1 'x'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL1_ascii_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1_ascii_boundaries" ;
+ rdfs:comment "LITERAL1_ascii_boundaries '\\x00\\x09\\x0b\\x0c\\x0e\\x26\\x28...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL1_with_UTF8_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1_with_UTF8_boundaries" ;
+ rdfs:comment "LITERAL1_with_UTF8_boundaries '\\x80\\x7ff\\x800\\xfff...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL1_all_controls> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1_all_controls" ;
+ rdfs:comment "LITERAL1_all_controls '\\x00\\x01\\x02\\x03\\x04...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL1_all_punctuation> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL1_all_punctuation" ;
+ rdfs:comment "LITERAL1_all_punctuation '!\"#$%&()...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG1> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1" ;
+ rdfs:comment "LITERAL_LONG1 '''x'''" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG1_ascii_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1_ascii_boundaries" ;
+ rdfs:comment "LITERAL_LONG1_ascii_boundaries '\\x00\\x26\\x28...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG1_with_UTF8_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1_with_UTF8_boundaries" ;
+ rdfs:comment "LITERAL_LONG1_with_UTF8_boundaries '\\x80\\x7ff\\x800\\xfff...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG1_with_1_squote> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1_with_1_squote" ;
+ rdfs:comment "LITERAL_LONG1 with 1 squote '''a'b'''" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG1_with_2_squotes> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG1_with_2_squotes" ;
+ rdfs:comment "LITERAL_LONG1 with 2 squotes '''a''b'''" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL2> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL2" ;
+ rdfs:comment "LITERAL2 \"x\"" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL2_ascii_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL2_ascii_boundaries" ;
+ rdfs:comment "LITERAL2_ascii_boundaries '\\x00\\x09\\x0b\\x0c\\x0e\\x21\\x23...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL2_with_UTF8_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL2_with_UTF8_boundaries" ;
+ rdfs:comment "LITERAL2_with_UTF8_boundaries '\\x80\\x7ff\\x800\\xfff...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG2> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2" ;
+ rdfs:comment "LITERAL_LONG2 \"\"\"x\"\"\"" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG2_ascii_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_ascii_boundaries" ;
+ rdfs:comment "LITERAL_LONG2_ascii_boundaries '\\x00\\x21\\x23...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG2_with_UTF8_boundaries> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_with_UTF8_boundaries" ;
+ rdfs:comment "LITERAL_LONG2_with_UTF8_boundaries '\\x80\\x7ff\\x800\\xfff...'" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG2_with_1_squote> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_with_1_squote" ;
+ rdfs:comment "LITERAL_LONG2 with 1 squote \"\"\"a\"b\"\"\"" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#LITERAL_LONG2_with_2_squotes> rdf:type rdft:TestTurtleEval ;
+ mf:name "LITERAL_LONG2_with_2_squotes" ;
+ rdfs:comment "LITERAL_LONG2 with 2 squotes \"\"\"a\"\"b\"\"\"" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#literal_with_CHARACTER_TABULATION> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_CHARACTER_TABULATION" ;
+ rdfs:comment "literal with CHARACTER TABULATION" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#literal_with_BACKSPACE> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_BACKSPACE" ;
+ rdfs:comment "literal with BACKSPACE" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#literal_with_LINE_FEED> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_LINE_FEED" ;
+ rdfs:comment "literal with LINE FEED" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#literal_with_CARRIAGE_RETURN> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_CARRIAGE_RETURN" ;
+ rdfs:comment "literal with CARRIAGE RETURN" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#literal_with_FORM_FEED> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_FORM_FEED" ;
+ rdfs:comment "literal with FORM FEED" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#literal_with_REVERSE_SOLIDUS> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_REVERSE_SOLIDUS" ;
+ rdfs:comment "literal with REVERSE SOLIDUS" ;
+ mf:action ;
+ mf:result ;
+ .
+
+<#literal_with_escaped_CHARACTER_TABULATION> rdf:type rdft:TestTurtleEval ;
+ mf:name "literal_with_escaped_CHARACTER_TABULATION" ;
+ rdfs:comment "literal with escaped CHARACTER TABULATION" ;
+ mf:action