
Security News
Meet Socket at Black Hat and DEF CON 2025 in Las Vegas
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
::
__ _ _ _ ___ _ __ _ _
/ ` | | | |/ _ \ ' | | | | | (| | || | / |) | || | _, |_,_|_| ./ _, | || || |/
Quepy is a python framework to transform natural language questions to queries in a database query language. It can be easily customized to different kinds of questions in natural language and database queries. So, with little coding you can build your own system for natural language access to your database.
Currently Quepy provides support for
Sparql <http://www.w3.org/TR/rdf-sparql-query/>
_ and
MQL <http://www.freebase.com/>
_
query languages.
We plan to extended it to other database query languages.
To illustrate what can you do with quepy, we included an example application to
access DBpedia <http://dbpedia.org/>
_ contents via their sparql
endpoint.
You can try the example online here: Online demo <http://quepy.machinalis.com/>
_
Or, you can try the example yourself by doing:
::
python examples/dbpedia/main.py "Who is Tom Cruise?"
And it will output something like this:
.. code-block:: sparql
SELECT DISTINCT ?x1 WHERE {
?x0 rdf:type foaf:Person.
?x0 rdfs:label "Tom Cruise"@en.
?x0 rdfs:comment ?x1.
}
Thomas Cruise Mapother IV, widely known as Tom Cruise, is an...
The transformation from natural language to sparql is done by first using a special form of regular expressions:
.. code-block:: python
person_name = Group(Plus(Pos("NNP")), "person_name")
regex = Lemma("who") + Lemma("be") + person_name + Question(Pos("."))
And then using and a convenient way to express semantic relations:
.. code-block:: python
person = IsPerson() + HasKeyword(person_name)
definition = DefinitionOf(person)
The rest of the transformation is handled automatically by the framework to finally produce this sparql:
.. code-block:: sparql
SELECT DISTINCT ?x1 WHERE {
?x0 rdf:type foaf:Person.
?x0 rdfs:label "Tom Cruise"@en.
?x0 rdfs:comment ?x1.
}
Using a very similar procedure you could generate and MQL query for the same question obtaining:
.. code-block:: javascript
[{
"/common/topic/description": [{}],
"/type/object/name": "Tom Cruise",
"/type/object/type": "/people/person"
}]
You need to have installed numpy <http://numpy.scipy.org/>
_.
Other than that, you can just type:
::
pip install quepy
You can get more details on the installation here:
<http://quepy.readthedocs.org/en/latest/installation.html>
_
You can find a tutorial here:
<http://quepy.readthedocs.org/en/latest/tutorial.html>
_
And the full documentation here:
<http://quepy.readthedocs.org/>
_
Join our mailing list <http://groups.google.com/group/quepy>
_
Want to help develop quepy? Welcome aboard! Find us in
- #quepy at freenode
- quepydev at librelist.com
FAQs
A framework to convert natural language to database queries.
We found that quepy demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.