<?xml version="1.0"?>
<!--
   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.
-->
<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:asfext="http://projects.apache.org/ns/asfext#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <asfext:pmc rdf:about="vxquery">
    <asfext:name>Apache VXQuery</asfext:name>
    <foaf:homepage rdf:resource="http://vxquery.apache.org/"/>
    <asfext:charter>Creation and maintenance of software
      related to providing an implementation of a parallel XML
      Query processor.
    </asfext:charter>
    <asfext:chair>
      <foaf:Person>
        <foaf:name>Till Westmann</foaf:name>
      </foaf:Person>
    </asfext:chair>
    <asfext:member>
      <foaf:Person>
        <foaf:name>Vinayak Borkar</foaf:name>
      </foaf:Person>
    </asfext:member>
    <asfext:member>
      <foaf:Person>
        <foaf:name>Preston Carman</foaf:name>
      </foaf:Person>
    </asfext:member>
    <asfext:member>
      <foaf:Person>
        <foaf:name>Steven Jacobs</foaf:name>
      </foaf:Person>
    </asfext:member>
    <asfext:member>
      <foaf:Person>
        <foaf:name>Michael Carey</foaf:name>
      </foaf:Person>
    </asfext:member>
    <asfext:member>
      <foaf:Person>
        <foaf:name>Ant Elder</foaf:name>
      </foaf:Person>
    </asfext:member>
    <asfext:member>
      <foaf:Person>
        <foaf:name>Cezar Andrei</foaf:name>
      </foaf:Person>
    </asfext:member>
  </asfext:pmc>
</rdf:RDF>
