Full Code of arturo-lang/grafito for AI

main cdbeb8b76ea2 cached
72 files
734.5 KB
248.9k tokens
102 symbols
1 requests
Download .txt
Showing preview only (767K chars total). Download the full file or copy to clipboard to get everything.
Repository: arturo-lang/grafito
Branch: main
Commit: cdbeb8b76ea2
Files: 72
Total size: 734.5 KB

Directory structure:
gitextract_hq975k_i/

├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   └── workflows/
│       ├── release.yml
│       ├── test.yml
│       └── todos.yml
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── examples/
│   ├── sample1.art
│   ├── sample10.art
│   ├── sample11.art
│   ├── sample12.art
│   ├── sample2.art
│   ├── sample3.art
│   ├── sample4.art
│   ├── sample4b.art
│   ├── sample4c.art
│   ├── sample4d.art
│   ├── sample5.art
│   ├── sample6.art
│   ├── sample7.art
│   ├── sample8.art
│   └── sample9.art
├── grafito.art
├── info.art
├── logo.txt
├── sql/
│   ├── filters/
│   │   ├── edgePropertyWithValue.sql
│   │   ├── edgeWithAny.sql
│   │   ├── edgeWithProperties.sql
│   │   ├── edgeWithSource.sql
│   │   ├── edgeWithTarget.sql
│   │   ├── hasEdge.sql
│   │   ├── hasProperty.sql
│   │   └── nodePropertyWithValue.sql
│   ├── pragmas/
│   │   ├── caseInsensitiveLike.sql
│   │   └── caseSensitiveLike.sql
│   ├── procs/
│   │   ├── countEdges.sql
│   │   ├── countNodes.sql
│   │   ├── createEdge.sql
│   │   ├── createNode.sql
│   │   ├── deleteEdge.sql
│   │   ├── deleteEdgeById.sql
│   │   ├── deleteNode.sql
│   │   ├── deleteNodeEdges.sql
│   │   ├── fetchNodes.sql
│   │   ├── fetchNodes.withEdges.sql
│   │   ├── getAllNodeTags.sql
│   │   ├── getMaxNodeId.sql
│   │   ├── getNode.sql
│   │   ├── getRelatedNodes.sql
│   │   ├── updateEdge.sql
│   │   ├── updateNode.sql
│   │   ├── updateNodeProperties.sql
│   │   └── updateNodeProperty.sql
│   └── schema.sql
└── ui/
    ├── index.html
    ├── palettes/
    │   ├── default.art
    │   ├── earthy.art
    │   ├── inferno.art
    │   ├── light.art
    │   ├── magma.art
    │   ├── pastel.art
    │   ├── playful.art
    │   ├── rainbow.art
    │   ├── vibrant.art
    │   └── viridis.art
    ├── scripts/
    │   ├── ace/
    │   │   ├── ace.js
    │   │   ├── modes/
    │   │   │   └── grafito.js
    │   │   └── themes/
    │   │       └── monokai.js
    │   └── app.js
    └── styles/
        └── app.less

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
*.art linguist-language=Red
*.art linguist-vendored


================================================
FILE: .github/FUNDING.yml
================================================
github: [drkameleon]

================================================
FILE: .github/workflows/release.yml
================================================
name: "Release"
on:
  push:
    tags:
      - 'v*.*.*'
env:
  app-name: grafito

defaults:
  run:
    shell: bash -l {0}

jobs:  
  package:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
        version:
          - full
    steps:
      - name: "Cancel similar actions in progress"
        uses: styfle/cancel-workflow-action@0.6.0
        with:
          access_token: ${{ github.token }}

      - name: "Get Arturo"
        uses: actions/checkout@main
        with:
          repository: arturo-lang/arturo
          submodules: recursive

      - name: Install Nim
        run: |
          wget -qO - https://nim-lang.org/choosenim/init.sh | bash -s -- -y
          echo "$HOME/.nimble/bin" >> $GITHUB_PATH

      - name: Install dependencies
        if: matrix.os == 'ubuntu-latest'
        run: |
          sudo apt-get update
          sudo apt-get install libwebkit2gtk-4.0-dev
          
      - name: Verify dependecies
        run: |
          nim --version

      - name: "Checkout"
        uses: actions/checkout@main
        with:
          submodules: recursive
          path: "grafito"
          
      - name: Package binary
        run: |
          mv grafito/grafito.art grafito.art
          rm -rf grafito
          ./package grafito.art
          ls -la

      - name: Create artifact
        run: |
          install -m 0755 ./grafito .
          tar czf ${{ env.app-name }}-${{runner.os}}.tar.gz ${{ env.app-name }} README.md LICENSE

      - name: Upload Artifact
        uses: 'actions/upload-artifact@v1'
        with:
          name: ${{ env.app-name }}-${{runner.os}}.tar.gz
          path: ${{ env.app-name }}-${{runner.os}}.tar.gz

  upload:
    name: "Upload"
    runs-on: ubuntu-latest
    if: ${{ always() }}
    needs: 
      - package
    steps:
      - uses: actions/download-artifact@v2
        with:
          path: ./assets
      
      - name: Display structure of downloaded files
        run: ls -R

      - name: Create Release
        id: create-release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: ${{ github.ref }}
          body: |
            Official Release
            ${{ github.ref }}
          draft: false
          prerelease: false

      - name: Upload Release Assets
        id: upload-release-assets
        uses: dwenegar/upload-release-assets@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          release_id: ${{ steps.create-release.outputs.id }}
          assets_path: ./assets


================================================
FILE: .github/workflows/test.yml
================================================
name: "CI"
on:
    push:
        branches:
        - master
    pull_request:
        types: [opened, synchronize]
    workflow_dispatch:

concurrency: 
    group: ${{ github.workflow }}-${{ github.ref }}
    cancel-in-progress: true

jobs:  
    build:
        name: "Test"
        runs-on: ${{ 
            (matrix.os == 'linux')   && (matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest') ||
            (matrix.os == 'macos')   && (matrix.arch == 'arm64' && 'macos-latest' || 'macOS-15-intel') ||
            (matrix.os == 'windows') && 'windows-latest' || 
                                        'ubuntu-latest'  }}

        # TODO(workflows/test) FreeBSD workflow gets stuck
        #  Not sure if it has to do with the VM setup on GitHub Actions
        #  or something related to the implementation of Grafito, 
        #  but we'll have to investigate this.
        #  labels: workflows, bug
        strategy:
            fail-fast: false
            matrix:
                include: 
                    - {os: linux,   arch: amd64}
                    - {os: linux,   arch: arm64}
                    # - {os: freebsd, arch: amd64}
                    - {os: macos,   arch: amd64}
                    - {os: macos,   arch: arm64}
                    - {os: windows, arch: amd64}
                    
        defaults:
            run:
                shell: ${{ 
                    (matrix.os == 'freebsd') && 'freebsd {0}' ||
                    (matrix.os == 'windows') && 'msys2 {0}'   || 
                                                'bash'        }}

        steps:
            - name: "Checkout sources"
              uses: actions/checkout@v4
              with:
                submodules: recursive

            - name: Setup Arturo
              uses: arturo-lang/setup-arturo@v2
              with: 
                token: ${{ secrets.GITHUB_TOKEN }}
                os: ${{ matrix.os }}
                arch: ${{ matrix.arch }}

            - name: Run unit tests
              run: |
                cd $GITHUB_WORKSPACE
                arturo -e "inspect sys\deps"
                arturo tests/test1.art

================================================
FILE: .github/workflows/todos.yml
================================================
name: "TODO -> Issue"
on:
  push:
    branches:
      - 'main'
    tags-ignore:
      - '**'
jobs:
  build:
    runs-on: "ubuntu-latest"
    steps:
      - uses: "actions/checkout@main"
      - name: "TODO to Issue generator"
        uses: "alstr/todo-to-issue-action@v4.5"
        id: "todo"
        with:
          TOKEN: ${{ secrets.GITHUB_TOKEN }}

================================================
FILE: .gitignore
================================================
*.db
*.graf
test*.sql
test*.nim
test*.html
testy.art
test*.art


================================================
FILE: Dockerfile
================================================
FROM arturolang/arturo

RUN  apk update && apk upgrade
RUN apk add --no-cache sqlite-dev
RUN apk add sqlite

ADD grafito.art /home/grafito.art

WORKDIR /home

ENTRYPOINT [ "/home/grafito.art" ]


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2024 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================

<p align="center"><img align="center" width="350" src="https://raw.githubusercontent.com/arturo-lang/grafito/master/logo.png"/></p>
<p align="center">
  <b>Portable, Serverless & Lightweight<br>SQLite-based Graph Database</b>
  <br><br>
  <img src="https://img.shields.io/github/license/arturo-lang/grafito?style=for-the-badge">
  <a href="https://github.com/arturo-lang/arturo" style="text-decoration: none; display: inline-block;"><img src="https://img.shields.io/badge/language-Arturo-6A156B.svg?style=for-the-badge" alt="Language"/></a>
  <img src="https://img.shields.io/github/actions/workflow/status/arturo-lang/grafito/test.yml?branch=main&style=for-the-badge">
</p>

<p align="center"><img width="90%" align="center" src="https://raw.githubusercontent.com/arturo-lang/grafito/master/ui-screenshot.png"/></p>

--- 
 
<!--ts-->

* [At A Glance](#at-a-glance)
* [Try Grafito](#try-grafito)
    * [Docker](#docker)
    * [Installation](#installation)
        * [As a Library](#as-a-library)
        * [As a Standalone tool](#as-a-standalone-tool)
* [How To](#how-to)
    * [Create a simple Node](#create-a-simple-node)
    * [Create Relationships between Nodes](#create-relationships-between-nodes)
    * [Search Nodes](#search-nodes)
    * [Delete an existing Node](#delete-an-existing-node)
    * [Delete an existing Relationship](#delete-an-existing-relationship)
    * [Preview a Set of Nodes](#preview-a-set-of-nodes)
    * [More complex queries](#more-complex-queries)
    	* [Reverse edge queries](#reverse-edge-queries) 
    	* [Using filters](#using-filters)
    * [Not just a query language!](#not-just-a-query-language)
* [Command Reference](#command-reference)
    * [put](#put)
    * [unput](#unput)
    * [link](#link)
    * [unlink](#unlink)
    * [what](#what)
    * [fetch](#fetch)
    * [preview](#preview)
* [Filter Reference](#filter-reference)
    * [contains](#contains)
    * [prefix](#prefix)
    * [suffix](#suffix)
    * [over](#over)
    * [under](#under)
    * [overOrEqual](#greaterOrEqual)
    * [underOrEqual](#underOrEqual)
    * [in](#in)
    * [not](#not)
* [Community](#community)
* [License](#license)   

<!--te-->
 
---

## At A Glance

I know you really don't care about long explanations and want to have a look at working code right away, so... here you are (this is the code that creates the graph in the image above):

```red
;---------------------------------------------
; Import Grafito
; and ... let's rock'n'roll! :)
;---------------------------------------------
do.import {grafito.art}

do [
    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample11"
    ;---------------------------------------------
    graph .helpers: [person movie country book]
          .create
          .palette: 'default
          "sample11" 
    [
        unless dbExists? [
            ;---------------------------------------------
            ; Populate the database
            ;---------------------------------------------

            uk: country.new [name: "United Kingdom"]
            au: country.new [name: "Australia"]
            us: country.new [name: "United States"] 
            ca: country.new [name: "Canada"]
            fr: country.new [name: "France"]
            de: country.new [name: "Germany"]
            se: country.new [name: "Sweden"]
            es: country.new [name: "Spain"]
            pl: country.new [name: "Poland"]

            nolan:      person.new [name: "Christopher Nolan" birthday: 1970 sex: "m"]
            pearce:     person.new [name: "Guy Pearce" birthday: 1967 sex: "m"]
            hanson:     person.new [name: "Curtis Hanson" birthday: 1945 sex: "m"]
            spacey:     person.new [name: "Kevin Spacey" birthday: 1959 sex: "m"]
            dicaprio:   person.new [name: "Leonardo DiCaprio" birthday: 1974 sex: "m"]
            hardy:      person.new [name: "Tom Hardy" birthday: 1977 sex: "m"]
            cotillard:  person.new [name: "Marion Cotillard" birthday: 1975 sex: "f"]
            moss:       person.new [name: "Carrie-Ann Moss" birthday: 1967 sex: "f"]
            kidman:     person.new [name: "Nicole Kidman" birthday: 1967 sex: "f"]
            cruise:     person.new [name: "Tom Cruise" birthday: 1962 sex: "m"]
            kubrick:    person.new [name: "Stanley Kubrick" birthday: 1928 died: 1999 sex: "m" alive: false]
            burton:     person.new [name: "Tim Burton" birthday: 1958 sex: "m"]
            depp:       person.new [name: "Johny Depp" birthday: 1965 sex: "m"]
            hallstrom:  person.new [name: "Lasse Hallström" birthday: 1946 sex: "m"]
            scorsese:   person.new [name: "Martin Scorsese" birthday: 1942 sex: "m"]
            sydow:      person.new [name: "Max von Sydow" birthday: 1929 died: 2020 sex: "m" alive: false]
            binoche:    person.new [name: "Juliette Binoche" birthday: 1964 sex: "f"]
            dench:      person.new [name: "Judi Dench" birthday: 1934 sex: "f"]
            eastwood:   person.new [name: "Clint Eastwood" birthday: 1930 sex: "m"]
            polanski:   person.new [name: "Roman Polanski" birthday: 1933 sex: "m"]
            olin:       person.new [name: "Lena Olin" birthday: 1955 sex: "f"]
            zimmer:     person.new [name: "Hans Zimmer" birthday: 1957 sex: "m"]
            pook:       person.new [name: "Jocelyn Pook" birthday: 1960 sex: "f"]
            lehane:     person.new [name: "Dennis Lehane" birthday: 1965 sex: "m"]
            penn:       person.new [name: "Sean Penn" birthday: 1960 sex: "m"]
            malick:     person.new [name: "Terrence Malick" birthday: 1943 sex: "m"]
            brody:      person.new [name: "Adrien Brody" birthday: 1973 sex: "m"]
            wach1:      person.new [name: "Lana Wachowski" birthday: 1965 sex: "f"]
            wach2:      person.new [name: "Lilly Wachowski" birthday: 1967 sex: "f"]

            memento:        movie.new [title: "Memento" year: 2000]
            inception:      movie.new [title: "Inception" year: 2010]
            laconfidential: movie.new [title: "L.A. Confidential" year: 1997]
            matrix:         movie.new [title: "The Matrix" year: 1999]
            eyes:           movie.new [title: "Eyes Wide Shut" year: 1999]
            bigfish:        movie.new [title: "Big Fish" year: 2003]
            sleepyhollow:   movie.new [title: "Sleepy Hollow" year: 1999]
            chocolat:       movie.new [title: "Chocolat" year: 2000]
            jedgar:         movie.new [title: "J. Edgar" year: 2011]
            ninthgate:      movie.new [title: "The Ninth Gate" year: 1999]
            shutter:        movie.new [title: "Shutter Island" year: 2010]
            mystic:         movie.new [title: "Mystic River" year: 2003]
            redline:        movie.new [title: "Thin Red Line" year: 1998]
            pianist:        movie.new [title: "The Pianist" year: 2002]

            mysticB:        book.new [title: "Mystic River" year: 2001 language: "en"]

            ;---------------------------------------------
            ; Define the relationships
            ; between our nodes
            ;---------------------------------------------

            [nolan hardy dench pook] ~> 'isFrom uk
            [pearce kidman] ~> 'isFrom au
            [malick brody hanson spacey dicaprio wach1 wach2 cruise kubrick burton depp eastwood scorsese lehane penn] ~> 'isFrom us
            moss ~> 'isFrom ca
            [cotillard binoche] ~> 'isFrom fr
            polanski ~> 'isFrom [fr pl]
            [hallstrom olin sydow] ~> 'isFrom se
            zimmer ~> 'isFrom de

            nolan ~> 'directed [memento inception]
            hanson ~> 'directed laconfidential
            [wach1 wach2] ~> 'directed matrix
            kubrick ~> 'directed eyes
            burton ~> 'directed [bigfish sleepyhollow]
            hallstrom ~> 'directed chocolat
            eastwood ~> 'directed [jedgar mystic]
            polanski ~> 'directed [pianist ninthgate]
            scorsese ~> 'directed shutter
            malick ~> 'directed [pianist redline]

            pearce ~> 'actedIn [memento laconfidential]
            spacey ~> 'actedIn laconfidential
            [dicaprio hardy cotillard] ~> 'actedIn inception
            [dicaprio sydow] ~> 'actedIn shutter
            cotillard ~> 'actedIn bigfish
            moss ~> 'actedIn [memento matrix chocolat]
            [cruise kidman] ~> 'actedIn eyes
            depp ~> 'actedIn [chocolat sleepyhollow]
            [binoche dench olin] ~> 'actedIn chocolat
            [dicaprio dench] ~> 'actedIn jedgar
            [depp olin] ~> 'actedIn ninthgate
            penn ~> 'actedIn [mystic redline]
            brody ~> 'actedIn [redline pianist]

            zimmer ~> 'composed inception
            pook ~> 'composed eyes

            nolan ~> 'written inception

            lehane ~> 'written mysticB
            mystic ~> 'basedOn mysticB

            [redline bigfish memento laconfidential jedgar shutter mystic] ~> 'origin us
            matrix ~> 'origin [us au]
            [inception eyes chocolat] ~> 'origin [uk us]
            sleepyhollow ~> 'origin [us de]
            ninthgate ~> 'origin [us fr es]
            pianist ~> 'origin [uk fr de pl]

            wach1 ~> 'sibling wach2
            cruise ~> 'married kidman
        ]

        ;---------------------------------------------
        ; Fetch every "person" &
        ; open the Desktop app for visualization
        ;---------------------------------------------
        
        preview fetch 'person ø
    ]
]
```

## Try Grafito!

### Docker

The easiest way to try Grafito is using Docker (although, without support for the Desktop app - yet)

```
docker run -it arturolang/grafito
```

or, if you want to run a specific script:

```
docker run -it -v $(pwd):/home arturolang/grafito <yourscript>
```

### Installation

To install local, first you have to have installed the latest version of [Arturo](https://github.com/arturo-lang/arturo).

Then, just clone this repo and simply go to the folder via your terminal.


#### As a Library

After having installed the latest version of Arturo, you can use Grafito from any Arturo script as a library.

For example, here's how to run the above example:

```
arturo examples/sample11.art
```

#### As a Standalone tool

Of course, you can also run Grafito as a tool on it own:

```
./grafito.art <database>
```

(If you pass a name, it will use it as your database file. If not, the database will be in-memory)

<p align="center"><img width="100%" align="center" src="https://raw.githubusercontent.com/arturo-lang/grafito/master/console.png"/></p>

And you can see your lightweight graph engine in action!

## How To

### Create a simple Node

```red
graph.create "mygraph" [
	put'person [name: "John" sex: 'm]
]
```

The exact same thing using node helpers:

```red
graph.create "mygraph"
     .helpers: [person]
[
	person.new [name: "John", sex: 'm]
]
```

### Create Relationships between Nodes

```red
graph.create "mygraph" [
	john: put 'person [name: "John" sex: 'm]
	joan: put 'person [name: "Joan" sex: 'f]

	link john 'marriedTo joan
]
```

The exact same thing using node helpers and some syntactic sugar:

```red
graph.create "mygraph"
     .helpers: [person]
[
	john: person.new [name: "John", sex: 'm]
	joan: person.new [name: "Joan", sex: 'f]

	john <~> 'marriedTo joan
]
```

### Search Nodes

```red
graph "mygraph" [
	inspect fetch 'person [name: "Joan"]
]
```
The exact same thing using node helpers:

```red
graph "mygraph"
     .helpers: [person]
[
	inspect person [name: "Joan"]
]
```

### Delete an existing Node

```red
graph "mygraph" [
	unput fetch 'person [name: "John"]
]
```

### Delete an existing Relationship

```red
graph "mygraph" [
	unlink fetch 'person [name: "John"] 'marriedTo 
           fetch 'person [name: "Joan"]
]
```

### Preview a Set of Nodes

```red
graph "mygraph" [
	preview fetch 'person ø
]
```

(If you run the `sample4` in the *examples* folder, you'll be a minimal movie database. Running the command `preview` will open up the Desktop app with the image you see above ;-))

### More complex queries

```red
graph "mygraph" [
	inspect fetch'person [
		sex: "m"
		marriedTo: fetch 'person [name: "Joan"]
	]
]
```

The exact same thing using node helpers:

```red
graph "mygraph"
     .helpers: [person]
[
	inspect person [
		sex: "m"
		marriedTo: person [name: "Joan"]
	]
]
```

#### Reverse edge queries

```red
; using our sample11.art graph

movie [
	directed: <| person "Clint Eastwood"
]
```

#### Using filters

```red
graph "mygraph" [
	fetch 'person [
		surname:"Doe"
		age: -> over: 30
	]
]
```

### Not just a query language!

Now, let's be reminded that although Grafito may present itself as an easy-to-use
Graph Query Language, actually it's a "shell" on top of Arturo. That is: you can use anything you would normally use in a full-blown programming language, *along with* the extra layer that is Grafito. Awesome, right?

The above is a - very simple - example, but gives you definitely a rough idea (and no, [`union`](https://arturo-lang.io/documentation/library/sets/union/) has nothing to do with Grafito... it's just a normal command from Arturo's standard library)

```red
union 
    person [
        sex: "m"
        birthday: -> under: 1960
    ]
    person [
        sex: "f
        isFrom: country "France"
    ]
```

(totally random example: Find all the men that were born before 1960 + all the women from... France!)

## Command Reference

All of the following commands must run within a `graph` environment. In order to set it up, use:

```red
graph <database> [
	;; your code goes here
]
```
> ⚠️  The `graph` command is not needed when you run Grafito as a tool, since the "environment" is already set up for you. ;-) 

If you pass `null` (or `ø`) then the database will be *in-memory*. If you want to save to a file on disk, then pass a string with the desired database name. If the database already exists, it will be re-opened. If not, it will be created from scratch.

> 💡  You may force the database to be re-created from scratch, regardless of whether it exists, by setting the `.create` attribute. E.g.
> ```
> graph.create "mygraph" [
> 	;; your code goes here
> ]
> ```

### put

#### Description

Insert new node(s) to graph with given name and attributes.

#### Usage

<pre>
<b>put</b> <ins>name</ins> <i>:literal</i>, <i>:string</i>
    <ins>attributes</ins> <i>:dictionary</i>, <i>:block</i>
</pre>

#### Returns

- *:dictionary* (node)
- *:block* (of nodes)

#### Examples

```red
put 'person [name: "John" surname: "Doe" birthday: 1986]
```

### unput

#### Description

Remove given node(s) from graph.

#### Usage

<pre>
<b>unput</b> <ins>node</ins> <i>:dictionary</i>, <i>:block</i>
</pre>

#### Examples

```red
x: put 'person [name: "John" surname: "Doe" birthday: 1986]
unput x
```

### link

#### Description

Create a connection from source to target node with given name.

#### Usage

<pre>
<b>link</b> <ins>source</ins> <i>:dictionary</i> (node), <i>:block</i> (of nodes)
     <ins>name</ins> <i>:literal</i>, <i>:string</i>
     <ins>target</ins> <i>:dictionary</i> (node), <i>:block</i> (of nodes)
</pre>

#### Returns

- *:dictionary* (edge)

#### Examples

```red
link put 'person [name: "John" surname: "Doe" birthday: 1986] 'marriedTo 
     put 'person [name: "Mary" surname: "Doe" birthday: 1986]
```

### unlink

#### Description

Remove connection from source to target node with given name

#### Usage

<pre>
<b>unlink</b> <ins>source</ins> <i>:dictionary</i> (node), <i>:block</i> (of nodes)
       <ins>name</ins> <i>:literal</i>, <i>:string</i>
       <ins>target</ins> <i>:dictionary</i> (node), <i>:block</i> (of nodes)
</pre>

#### Examples

```red
x: put 'person [name: "John" surname: "Doe" birthday: 1986]
y: put 'person [name: "Mary" surname: "Doe" birthday: 1986]

link 'marriedTo x y
unlink 'marriedTo x y
```

### fetch

#### Description

Retrieves nodes with name that match all given attributes.

#### Usage

<pre>
<b>fetch</b> <ins>name</ins> <i>:literal</i>, <i>:string</i>
      <ins>properties</ins> <i>:block</i> <i>:dictionary</i> <i>:null</i>
</pre>

#### Returns

- *:block* of *:dictionary* (node)

#### Examples

```red
print fetch 'person [surname: "Doe"]
print fetch 'person [
	surname: "Doe"
	marriedTo: fetch'person [name: "Mary"]
]
```

### preview

#### Description

Preview given array of nodes in Desktop app.

#### Usage

<pre>
<b>preview</b> <ins>nodes</ins> <i>:block</i>
</pre>

#### Examples

```red
preview fetch 'person [surname: "Doe"]
```

## Filter Reference

When querying - e.g. with `fetch` or `what` - you can search for results, not only for exact matches, but also using one of the filters below.

```red
fetch'person [
	surname: "Doe" 	; here, we are looking for an exact match
			; that is: people with the surname Doe
]
```

```red
fetch'person [
	surname: [
		contains: "D"	; here, we are using the 'contains filter
			        ; that is: people whose surname contains the letter D
	]
]
```

(The above, using Arturo's powerful syntax, could also be written like: 
```red
fetch'person [ surname: -> contains: "D" ]
```

### contains

Get rows that *contain* the given text.

### prefix

Get rows that start with, or "have as prefix", the given text.

### suffix

Get rows that end with, or "have as suffix", the given text.

### over

Get rows with a numeric value *greater than* the given one.

### under

Get rows with a numeric value *less than* the given one.

### overOrEqual

Get rows with a numeric value *greater than or equal to* the given one.

### underOrEqual

Get rows with a numeric value *less than or equal to* the given one.

### in

Get rows with a numeric value *equal* to *one of those in* the given block.

### not

Get rows with a value *not equal to* the given one (or block of given values).

Community
------------------------------

In case you want to ask a question, suggest an idea, or practically anything related to Grafito (or Arturo) - feel free! Everything and everyone is welcome.

For that, the most convenient place for me would be the [GitHub Issues](https://github.com/arturo-lang/grafito/issues) page.

[![Stargazers over time](https://starchart.cc/arturo-lang/grafito.svg)](https://starchart.cc/arturo-lang/grafito)

## License

MIT License

Copyright (c) 2023 Yanis Zafirópulos

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: examples/sample1.art
================================================
;; Just run this with:
;; arturo sample.art
;;
;; This will create a local sample.db
;; along with the corresponding dot file
;; and its visualization as sample.png 
;; - provided GraphViz is installed
;;
;; Have fun!

do.import "grafito.art"

do [
	graph.create "sample1" [
		john: put 'person [s: "John" sex: 'm]
		joan: put 'person [s: "Joan" sex: 'f]
		bob:  put 'person [s: "Bob"  sex: 'm]
		jill: put 'person [s: "Jill" sex: 'f]

		link'marriedTo john joan
		link'childOf @[bob jill] @[john joan]
	]
]

do [
	benchmark [
		graph.verbose "sample1" [

			print "getting first person named Joan..."
			joan: what'person [s: "Joan"]
			inspect joan

			print "getting all male people married to Joan..."
			husband: what 'person [sex: 'm marriedTo: joan]
			inspect husband

			; inspect fetch 'person [
			; 	marriedTo: what 'person [s: "Joan"]
			; ]

			preview fetch 'person ø
		]
	]
]

; do [
; 	graph "sample1" [
; 		preview fetch 'person ø
; 	]
; ]

; execute ~"dot -Tpng sample.dot -o sample.png"


================================================
FILE: examples/sample10.art
================================================
do.import {grafito.art}

do [
    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample4"
    ;---------------------------------------------
    graph.create "sample10" [
        j: put 'person [name: "John" age: 35]
        n: put 'person [name: "Jane" age: 41]
        link 'likes j n
        preview fetch 'person ø
    ]
]

================================================
FILE: examples/sample11.art
================================================
;---------------------------------------------
; Import Grafito
; and ... let's rock'n'roll! :)
;---------------------------------------------
import ./{../grafito.art}

do [
    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample11"
    ;---------------------------------------------
    graph .helpers: [person movie country book]
          .create
          .palette: 'default
          "sample11" 
    [
        unless dbExists? [
            ;---------------------------------------------
            ; Populate the database
            ;---------------------------------------------

            uk: country.new [name: "United Kingdom"]
            au: country.new [name: "Australia"]
            us: country.new [name: "United States"] 
            ca: country.new [name: "Canada"]
            fr: country.new [name: "France"]
            de: country.new [name: "Germany"]
            se: country.new [name: "Sweden"]
            es: country.new [name: "Spain"]
            pl: country.new [name: "Poland"]

            nolan:      person.new [name: "Christopher Nolan" birthday: 1970 sex: "m"]
            pearce:     person.new [name: "Guy Pearce" birthday: 1967 sex: "m"]
            hanson:     person.new [name: "Curtis Hanson" birthday: 1945 sex: "m"]
            spacey:     person.new [name: "Kevin Spacey" birthday: 1959 sex: "m"]
            dicaprio:   person.new [name: "Leonardo DiCaprio" birthday: 1974 sex: "m"]
            hardy:      person.new [name: "Tom Hardy" birthday: 1977 sex: "m"]
            cotillard:  person.new [name: "Marion Cotillard" birthday: 1975 sex: "f"]
            moss:       person.new [name: "Carrie-Ann Moss" birthday: 1967 sex: "f"]
            kidman:     person.new [name: "Nicole Kidman" birthday: 1967 sex: "f"]
            cruise:     person.new [name: "Tom Cruise" birthday: 1962 sex: "m"]
            kubrick:    person.new [name: "Stanley Kubrick" birthday: 1928 died: 1999 sex: "m" alive: false]
            burton:     person.new [name: "Tim Burton" birthday: 1958 sex: "m"]
            depp:       person.new [name: "Johny Depp" birthday: 1965 sex: "m"]
            hallstrom:  person.new [name: "Lasse Hallström" birthday: 1946 sex: "m"]
            scorsese:   person.new [name: "Martin Scorsese" birthday: 1942 sex: "m"]
            sydow:      person.new [name: "Max von Sydow" birthday: 1929 died: 2020 sex: "m" alive: false]
            binoche:    person.new [name: "Juliette Binoche" birthday: 1964 sex: "f"]
            dench:      person.new [name: "Judi Dench" birthday: 1934 sex: "f"]
            eastwood:   person.new [name: "Clint Eastwood" birthday: 1930 sex: "m"]
            polanski:   person.new [name: "Roman Polanski" birthday: 1933 sex: "m"]
            olin:       person.new [name: "Lena Olin" birthday: 1955 sex: "f"]
            zimmer:     person.new [name: "Hans Zimmer" birthday: 1957 sex: "m"]
            pook:       person.new [name: "Jocelyn Pook" birthday: 1960 sex: "f"]
            lehane:     person.new [name: "Dennis Lehane" birthday: 1965 sex: "m"]
            penn:       person.new [name: "Sean Penn" birthday: 1960 sex: "m"]
            malick:     person.new [name: "Terrence Malick" birthday: 1943 sex: "m"]
            brody:      person.new [name: "Adrien Brody" birthday: 1973 sex: "m"]
            wach1:      person.new [name: "Lana Wachowski" birthday: 1965 sex: "f"]
            wach2:      person.new [name: "Lilly Wachowski" birthday: 1967 sex: "f"]

            memento:        movie.new [title: "Memento" year: 2000]
            inception:      movie.new [title: "Inception" year: 2010]
            laconfidential: movie.new [title: "L.A. Confidential" year: 1997]
            matrix:         movie.new [title: "The Matrix" year: 1999]
            eyes:           movie.new [title: "Eyes Wide Shut" year: 1999]
            bigfish:        movie.new [title: "Big Fish" year: 2003]
            sleepyhollow:   movie.new [title: "Sleepy Hollow" year: 1999]
            chocolat:       movie.new [title: "Chocolat" year: 2000]
            jedgar:         movie.new [title: "J. Edgar" year: 2011]
            ninthgate:      movie.new [title: "The Ninth Gate" year: 1999]
            shutter:        movie.new [title: "Shutter Island" year: 2010]
            mystic:         movie.new [title: "Mystic River" year: 2003]
            redline:        movie.new [title: "Thin Red Line" year: 1998]
            pianist:        movie.new [title: "The Pianist" year: 2002]

            mysticB:        book.new [title: "Mystic River" year: 2001 language: "en"]

            ;---------------------------------------------
            ; Define the relationships
            ; between our nodes
            ;---------------------------------------------

            [nolan hardy dench pook] ~> 'isFrom uk
            [pearce kidman] ~> 'isFrom au
            [malick brody hanson spacey dicaprio wach1 wach2 cruise kubrick burton depp eastwood scorsese lehane penn] ~> 'isFrom us
            moss ~> 'isFrom ca
            [cotillard binoche] ~> 'isFrom fr
            polanski ~> 'isFrom [fr pl]
            [hallstrom olin sydow] ~> 'isFrom se
            zimmer ~> 'isFrom de

            nolan ~> 'directed [memento inception]
            hanson ~> 'directed laconfidential
            [wach1 wach2] ~> 'directed matrix
            kubrick ~> 'directed eyes
            burton ~> 'directed [bigfish sleepyhollow]
            hallstrom ~> 'directed chocolat
            eastwood ~> 'directed [jedgar mystic]
            polanski ~> 'directed [pianist ninthgate]
            scorsese ~> 'directed shutter
            malick ~> 'directed [pianist redline]

            pearce ~> 'actedIn [memento laconfidential]
            spacey ~> 'actedIn laconfidential
            [dicaprio hardy cotillard] ~> 'actedIn inception
            [dicaprio sydow] ~> 'actedIn shutter
            cotillard ~> 'actedIn bigfish
            moss ~> 'actedIn [memento matrix chocolat]
            [cruise kidman] ~> 'actedIn eyes
            depp ~> 'actedIn [chocolat sleepyhollow]
            [binoche dench olin] ~> 'actedIn chocolat
            [dicaprio dench] ~> 'actedIn jedgar
            [depp olin] ~> 'actedIn ninthgate
            penn ~> 'actedIn [mystic redline]
            brody ~> 'actedIn [redline pianist]

            zimmer ~> 'composed inception
            pook ~> 'composed eyes

            nolan ~> 'written inception

            lehane ~> 'written mysticB
            mystic ~> 'basedOn mysticB

            [redline bigfish memento laconfidential jedgar shutter mystic] ~> 'origin us
            matrix ~> 'origin [us au]
            [inception eyes chocolat] ~> 'origin [uk us]
            sleepyhollow ~> 'origin [us de]
            ninthgate ~> 'origin [us fr es]
            pianist ~> 'origin [uk fr de pl]

            wach1 ~> 'sibling wach2
            cruise ~> 'married kidman
        ]

        ;---------------------------------------------
        ; Fetch every "person" &
        ; open the Desktop app for visualization
        ;---------------------------------------------
        
        preview fetch 'person ø
    ]
]

================================================
FILE: examples/sample12.art
================================================
do.import {grafito.art}

do [
    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample11"
    ;---------------------------------------------
    graph .helpers: [word]
          .create
          .palette: 'default
          "sample12" 
    [
        unless dbExists? [
            'word [name: "for" lang: "en"]

            {for_en}: put'word [name: {for}, lang: "en"]
{Because, as, since.}: put'sense [name: {Because, as, since.}]
[ {parce que_fr}, {car_fr}, {da_de}, {weil_de}, {denn_de}, {διότι_el}, {επειδή_el}, {γιατί_el}, {perché_it}, {poiché_it}, {porque_pt}, {pentru că_ro}, {căci_ro}, {porque_es}, {pues_es}, {como_es} ]: put.many 'word  [ [name:{parce que}, lang:{fr}], [name:{car}, lang:{fr}], [name:{da}, lang:{de}], [name:{weil}, lang:{de}], [name:{denn}, lang:{de}], [name:{διότι}, lang:{el}], [name:{επειδή}, lang:{el}], [name:{γιατί}, lang:{el}], [name:{perché}, lang:{it}], [name:{poiché}, lang:{it}], [name:{porque}, lang:{pt}], [name:{pentru că}, lang:{ro}], [name:{căci}, lang:{ro}], [name:{porque}, lang:{es}], [name:{pues}, lang:{es}], [name:{como}, lang:{es}] ]
link [var{parce que_fr} var{car_fr} var{da_de} var{weil_de} var{denn_de} var{διότι_el} var{επειδή_el} var{γιατί_el} var{perché_it} var{poiché_it} var{porque_pt} var{pentru că_ro} var{căci_ro} var{porque_es} var{pues_es} var{como_es} var{for_en}] 'means var{Because, as, since.}
{Towards; in the direction of.}: put'sense [name: {Towards; in the direction of.}]
[ {pour_fr}, {zu_de}, {nach_de}, {για_el}, {per_it}, {verso_it}, {a_pt}, {para_pt}, {pentru_ro}, {a_es}, {hacia_es} ]: put.many 'word  [ [name:{pour}, lang:{fr}], [name:{zu}, lang:{de}], [name:{nach}, lang:{de}], [name:{για}, lang:{el}], [name:{per}, lang:{it}], [name:{verso}, lang:{it}], [name:{a}, lang:{pt}], [name:{para}, lang:{pt}], [name:{pentru}, lang:{ro}], [name:{a}, lang:{es}], [name:{hacia}, lang:{es}] ]
link [var{parce que_fr} var{car_fr} var{da_de} var{weil_de} var{denn_de} var{διότι_el} var{επειδή_el} var{γιατί_el} var{perché_it} var{poiché_it} var{porque_pt} var{pentru că_ro} var{căci_ro} var{porque_es} var{pues_es} var{como_es} var{pour_fr} var{zu_de} var{nach_de} var{για_el} var{per_it} var{verso_it} var{a_pt} var{para_pt} var{pentru_ro} var{a_es} var{hacia_es} var{for_en}] 'means var{Towards; in the direction of.}
{Directed at; intended to belong to.}: put'sense [name: {Directed at; intended to belong to.}]
[ {pour_fr}, {für_de}, {για_el}, {per_it}, {para_pt}, {pentru_ro}, {para_es} ]: put.many 'word  [ [name:{pour}, lang:{fr}], [name:{für}, lang:{de}], [name:{για}, lang:{el}], [name:{per}, lang:{it}], [name:{para}, lang:{pt}], [name:{pentru}, lang:{ro}], [name:{para}, lang:{es}] ]
link [var{parce que_fr} var{car_fr} var{da_de} var{weil_de} var{denn_de} var{διότι_el} var{επειδή_el} var{γιατί_el} var{perché_it} var{poiché_it} var{porque_pt} var{pentru că_ro} var{căci_ro} var{porque_es} var{pues_es} var{como_es} var{pour_fr} var{zu_de} var{nach_de} var{για_el} var{per_it} var{verso_it} var{a_pt} var{para_pt} var{pentru_ro} var{a_es} var{hacia_es} var{pour_fr} var{für_de} var{για_el} var{per_it} var{para_pt} var{pentru_ro} var{para_es} var{for_en}] 'means var{Directed at; intended to belong to.}
{In order to help, benefit, gratify, honor etc. (someone or something).}: put'sense [name: {In order to help, benefit, gratify, honor etc. (someone or something).}]
{To be used or treated in a stated way, or with a stated purpose.}: put'sense [name: {To be used or treated in a stated way, or with a stated purpose.}]
{Supporting, in favour of.}: put'sense [name: {Supporting, in favour of.}]
[ {pour_fr}, {für_de}, {υπέρ_el}, {pro_it}, {a favor de_pt}, {pentru_ro}, {por_es} ]: put.many 'word  [ [name:{pour}, lang:{fr}], [name:{für}, lang:{de}], [name:{υπέρ}, lang:{el}], [name:{pro}, lang:{it}], [name:{a favor de}, lang:{pt}], [name:{pentru}, lang:{ro}], [name:{por}, lang:{es}] ]
link [var{parce que_fr} var{car_fr} var{da_de} var{weil_de} var{denn_de} var{διότι_el} var{επειδή_el} var{γιατί_el} var{perché_it} var{poiché_it} var{porque_pt} var{pentru că_ro} var{căci_ro} var{porque_es} var{pues_es} var{como_es} var{pour_fr} var{zu_de} var{nach_de} var{για_el} var{per_it} var{verso_it} var{a_pt} var{para_pt} var{pentru_ro} var{a_es} var{hacia_es} var{pour_fr} var{für_de} var{για_el} var{per_it} var{para_pt} var{pentru_ro} var{para_es} var{pour_fr} var{für_de} var{υπέρ_el} var{pro_it} var{a favor de_pt} var{pentru_ro} var{por_es} var{for_en}] 'means var{Supporting, in favour of.}
{Because of.}: put'sense [name: {Because of.}]
[ {pour_fr}, {wegen_de}, {για_el}, {λόγω_el}, {per_it}, {por causa de_pt}, {por_pt}, {por_es} ]: put.many 'word  [ [name:{pour}, lang:{fr}], [name:{wegen}, lang:{de}], [name:{για}, lang:{el}], [name:{λόγω}, lang:{el}], [name:{per}, lang:{it}], [name:{por causa de}, lang:{pt}], [name:{por}, lang:{pt}], [name:{por}, lang:{es}] ]
link [var{parce que_fr} var{car_fr} var{da_de} var{weil_de} var{denn_de} var{διότι_el} var{επειδή_el} var{γιατί_el} var{perché_it} var{poiché_it} var{porque_pt} var{pentru că_ro} var{căci_ro} var{porque_es} var{pues_es} var{como_es} var{pour_fr} var{zu_de} var{nach_de} var{για_el} var{per_it} var{verso_it} var{a_pt} var{para_pt} var{pentru_ro} var{a_es} var{hacia_es} var{pour_fr} var{für_de} var{για_el} var{per_it} var{para_pt} var{pentru_ro} var{para_es} var{pour_fr} var{für_de} var{υπέρ_el} var{pro_it} var{a favor de_pt} var{pentru_ro} var{por_es} var{pour_fr} var{wegen_de} var{για_el} var{λόγω_el} var{per_it} var{por causa de_pt} var{por_pt} var{por_es} var{for_en}] 'means var{Because of.}
{Intended to cure, remove or counteract; in order to cure, remove or counteract.}: put'sense [name: {Intended to cure, remove or counteract; in order to cure, remove or counteract.}]
{Over (a period of time).}: put'sense [name: {Over (a period of time).}]
[ {depuis_fr}, {pendant_fr}, {seit_de}, {lang_de}, {-lang_de}, {tagelang etc._de}, {durante_it}, {por_pt}, {durante_pt}, {por_es}, {durante_es} ]: put.many 'word  [ [name:{depuis}, lang:{fr}], [name:{pendant}, lang:{fr}], [name:{seit}, lang:{de}], [name:{lang}, lang:{de}], [name:{-lang}, lang:{de}], [name:{tagelang etc.}, lang:{de}], [name:{durante}, lang:{it}], [name:{por}, lang:{pt}], [name:{durante}, lang:{pt}], [name:{por}, lang:{es}], [name:{durante}, lang:{es}] ]
link [var{parce que_fr} var{car_fr} var{da_de} var{weil_de} var{denn_de} var{διότι_el} var{επειδή_el} var{γιατί_el} var{perché_it} var{poiché_it} var{porque_pt} var{pentru că_ro} var{căci_ro} var{porque_es} var{pues_es} var{como_es} var{pour_fr} var{zu_de} var{nach_de} var{για_el} var{per_it} var{verso_it} var{a_pt} var{para_pt} var{pentru_ro} var{a_es} var{hacia_es} var{pour_fr} var{für_de} var{για_el} var{per_it} var{para_pt} var{pentru_ro} var{para_es} var{pour_fr} var{für_de} var{υπέρ_el} var{pro_it} var{a favor de_pt} var{pentru_ro} var{por_es} var{pour_fr} var{wegen_de} var{για_el} var{λόγω_el} var{per_it} var{por causa de_pt} var{por_pt} var{por_es} var{depuis_fr} var{pendant_fr} var{seit_de} var{lang_de} var{-lang_de} var{tagelang etc._de} var{durante_it} var{por_pt} var{durante_pt} var{por_es} var{durante_es} var{for_en}] 'means var{Over (a period of time).}
{Throughout or across (a distance in space).}: put'sense [name: {Throughout or across (a distance in space).}]
{Used to introduce a subject within a to-infinitive clause.}: put'sense [name: {Used to introduce a subject within a to-infinitive clause.}]
{On behalf of.}: put'sense [name: {On behalf of.}]
{In the role or capacity of; instead of; in place of.}: put'sense [name: {In the role or capacity of; instead of; in place of.}]
{In exchange for; in correspondence or equivalence with.}: put'sense [name: {In exchange for; in correspondence or equivalence with.}]
{In order to obtain or acquire.}: put'sense [name: {In order to obtain or acquire.}]
[ {pour_fr}, {für_de}, {por_pt}, {por_es} ]: put.many 'word  [ [name:{pour}, lang:{fr}], [name:{für}, lang:{de}], [name:{por}, lang:{pt}], [name:{por}, lang:{es}] ]
link [var{parce que_fr} var{car_fr} var{da_de} var{weil_de} var{denn_de} var{διότι_el} var{επειδή_el} var{γιατί_el} var{perché_it} var{poiché_it} var{porque_pt} var{pentru că_ro} var{căci_ro} var{porque_es} var{pues_es} var{como_es} var{pour_fr} var{zu_de} var{nach_de} var{για_el} var{per_it} var{verso_it} var{a_pt} var{para_pt} var{pentru_ro} var{a_es} var{hacia_es} var{pour_fr} var{für_de} var{για_el} var{per_it} var{para_pt} var{pentru_ro} var{para_es} var{pour_fr} var{für_de} var{υπέρ_el} var{pro_it} var{a favor de_pt} var{pentru_ro} var{por_es} var{pour_fr} var{wegen_de} var{για_el} var{λόγω_el} var{per_it} var{por causa de_pt} var{por_pt} var{por_es} var{depuis_fr} var{pendant_fr} var{seit_de} var{lang_de} var{-lang_de} var{tagelang etc._de} var{durante_it} var{por_pt} var{durante_pt} var{por_es} var{durante_es} var{pour_fr} var{für_de} var{por_pt} var{por_es} var{for_en}] 'means var{In order to obtain or acquire.}
{By the standards of, usually with the implication of those standards being lower than one might otherwise expect.}: put'sense [name: {By the standards of, usually with the implication of those standards being lower than one might otherwise expect.}]
[ {für_de}, {para_pt}, {para ser_es} ]: put.many 'word  [ [name:{für}, lang:{de}], [name:{para}, lang:{pt}], [name:{para ser}, lang:{es}] ]
link [var{parce que_fr} var{car_fr} var{da_de} var{weil_de} var{denn_de} var{διότι_el} var{επειδή_el} var{γιατί_el} var{perché_it} var{poiché_it} var{porque_pt} var{pentru că_ro} var{căci_ro} var{porque_es} var{pues_es} var{como_es} var{pour_fr} var{zu_de} var{nach_de} var{για_el} var{per_it} var{verso_it} var{a_pt} var{para_pt} var{pentru_ro} var{a_es} var{hacia_es} var{pour_fr} var{für_de} var{για_el} var{per_it} var{para_pt} var{pentru_ro} var{para_es} var{pour_fr} var{für_de} var{υπέρ_el} var{pro_it} var{a favor de_pt} var{pentru_ro} var{por_es} var{pour_fr} var{wegen_de} var{για_el} var{λόγω_el} var{per_it} var{por causa de_pt} var{por_pt} var{por_es} var{depuis_fr} var{pendant_fr} var{seit_de} var{lang_de} var{-lang_de} var{tagelang etc._de} var{durante_it} var{por_pt} var{durante_pt} var{por_es} var{durante_es} var{pour_fr} var{für_de} var{por_pt} var{por_es} var{für_de} var{para_pt} var{para ser_es} var{for_en}] 'means var{By the standards of, usually with the implication of those standards being lower than one might otherwise expect.}
{To be, or as being.}: put'sense [name: {To be, or as being.}]
{Despite, in spite of.}: put'sense [name: {Despite, in spite of.}]
{Indicating something desired or anticipated.}: put'sense [name: {Indicating something desired or anticipated.}]
{Introducing the first item(s) in a potential sequence.}: put'sense [name: {Introducing the first item(s) in a potential sequence.}]
{In honor of; after.}: put'sense [name: {In honor of; after.}]
{Due or facing (a certain outcome or fate).}: put'sense [name: {Due or facing (a certain outcome or fate).}]
{Out of; used to indicate a fraction, a ratio}: put'sense [name: {Out of; used to indicate a fraction, a ratio}]
{Used as part of a score to indicate the number of wickets that have fallen.}: put'sense [name: {Used as part of a score to indicate the number of wickets that have fallen.}]
{Indicating that in prevention of which, or through fear of which, anything is done.}: put'sense [name: {Indicating that in prevention of which, or through fear of which, anything is done.}]
{Used in various more-or-less idiomatic ways to construe individual verbs, indicating various semantic relationships such as target, purpose, result, etc.; see also the entries for individual phrasal verbs, e.g. ask for, look for, stand for, etc.}: put'sense [name: {Used in various more-or-less idiomatic ways to construe individual verbs, indicating various semantic relationships such as target, purpose, result, etc.; see also the entries for individual phrasal verbs, e.g. ask for, look for, stand for, etc.}]
{So (that), in order to}: put'sense [name: {So (that), in order to}]
{To, the particle for marking the following verb as an infinitive.}: put'sense [name: {To, the particle for marking the following verb as an infinitive.}]
{desertification_en}: put'word [name: {desertification}, lang: "en"]
{The process by which a geographic region becomes a desert, resulting from natural changes in climate or by human activity.}: put'sense [name: {The process by which a geographic region becomes a desert, resulting from natural changes in climate or by human activity.}]
[ {désertification_fr}, {Desertifikation_de}, {fortschreitende Wüstenbildung_de}, {ερημοποίηση_el}, {desertificazione_it}, {desertificação_pt}, {desertificación_es} ]: put.many 'word  [ [name:{désertification}, lang:{fr}], [name:{Desertifikation}, lang:{de}], [name:{fortschreitende Wüstenbildung}, lang:{de}], [name:{ερημοποίηση}, lang:{el}], [name:{desertificazione}, lang:{it}], [name:{desertificação}, lang:{pt}], [name:{desertificación}, lang:{es}] ]
link [var{désertification_fr} var{Desertifikation_de} var{fortschreitende Wüstenbildung_de} var{ερημοποίηση_el} var{desertificazione_it} var{desertificação_pt} var{desertificación_es} var{desertification_en}] 'means var{The process by which a geographic region becomes a desert, resulting from natural changes in climate or by human activity.}
{acute_en}: put'word [name: {acute}, lang: "en"]
{Brief, quick, short.}: put'sense [name: {Brief, quick, short.}]
{High or shrill.}: put'sense [name: {High or shrill.}]
{Intense, sensitive, sharp.}: put'sense [name: {Intense, sensitive, sharp.}]
[ {aigu_fr}, {aiguë_fr}, {scharf_de}, {οξύς_el}, {agudo_pt}, {agudo_es}, {perspicaz_es}, {sagaz_es} ]: put.many 'word  [ [name:{aigu}, lang:{fr}], [name:{aiguë}, lang:{fr}], [name:{scharf}, lang:{de}], [name:{οξύς}, lang:{el}], [name:{agudo}, lang:{pt}], [name:{agudo}, lang:{es}], [name:{perspicaz}, lang:{es}], [name:{sagaz}, lang:{es}] ]
link [var{aigu_fr} var{aiguë_fr} var{scharf_de} var{οξύς_el} var{agudo_pt} var{agudo_es} var{perspicaz_es} var{sagaz_es} var{acute_en}] 'means var{Intense, sensitive, sharp.}
{Urgent.}: put'sense [name: {Urgent.}]
[ {urgente_pt}, {grave_es} ]: put.many 'word  [ [name:{urgente}, lang:{pt}], [name:{grave}, lang:{es}] ]
link [var{aigu_fr} var{aiguë_fr} var{scharf_de} var{οξύς_el} var{agudo_pt} var{agudo_es} var{perspicaz_es} var{sagaz_es} var{urgente_pt} var{grave_es} var{acute_en}] 'means var{Urgent.}
{With the sides meeting directly to form an acute angle (at an apex or base).}: put'sense [name: {With the sides meeting directly to form an acute angle (at an apex or base).}]
{Of an angle: less than 90 degrees.}: put'sense [name: {Of an angle: less than 90 degrees.}]
[ {aigu_fr}, {spitz_de}, {οξύς_el}, {acuto_it}, {agudo_pt}, {ascuțit_ro}, {agudo_es} ]: put.many 'word  [ [name:{aigu}, lang:{fr}], [name:{spitz}, lang:{de}], [name:{οξύς}, lang:{el}], [name:{acuto}, lang:{it}], [name:{agudo}, lang:{pt}], [name:{ascuțit}, lang:{ro}], [name:{agudo}, lang:{es}] ]
link [var{aigu_fr} var{aiguë_fr} var{scharf_de} var{οξύς_el} var{agudo_pt} var{agudo_es} var{perspicaz_es} var{sagaz_es} var{urgente_pt} var{grave_es} var{aigu_fr} var{spitz_de} var{οξύς_el} var{acuto_it} var{agudo_pt} var{ascuțit_ro} var{agudo_es} var{acute_en}] 'means var{Of an angle: less than 90 degrees.}
{Of a triangle: having all three interior angles measuring less than 90 degrees.}: put'sense [name: {Of a triangle: having all three interior angles measuring less than 90 degrees.}]
{Of an accent or tone: generally higher than others.}: put'sense [name: {Of an accent or tone: generally higher than others.}]
{Of an abnormal condition of recent or sudden onset, in contrast to delayed onset; this sense does not imply severity, unlike the common usage.}: put'sense [name: {Of an abnormal condition of recent or sudden onset, in contrast to delayed onset; this sense does not imply severity, unlike the common usage.}]
[ {aigu_fr}, {akut_de}, {agudo_pt} ]: put.many 'word  [ [name:{aigu}, lang:{fr}], [name:{akut}, lang:{de}], [name:{agudo}, lang:{pt}] ]
link [var{aigu_fr} var{aiguë_fr} var{scharf_de} var{οξύς_el} var{agudo_pt} var{agudo_es} var{perspicaz_es} var{sagaz_es} var{urgente_pt} var{grave_es} var{aigu_fr} var{spitz_de} var{οξύς_el} var{acuto_it} var{agudo_pt} var{ascuțit_ro} var{agudo_es} var{aigu_fr} var{akut_de} var{agudo_pt} var{acute_en}] 'means var{Of an abnormal condition of recent or sudden onset, in contrast to delayed onset; this sense does not imply severity, unlike the common usage.}
{Of a short-lived condition, in contrast to a chronic condition; this sense also does not imply severity.}: put'sense [name: {Of a short-lived condition, in contrast to a chronic condition; this sense also does not imply severity.}]
[ {aigu_fr}, {οξύς_el}, {agudo_pt} ]: put.many 'word  [ [name:{aigu}, lang:{fr}], [name:{οξύς}, lang:{el}], [name:{agudo}, lang:{pt}] ]
link [var{aigu_fr} var{aiguë_fr} var{scharf_de} var{οξύς_el} var{agudo_pt} var{agudo_es} var{perspicaz_es} var{sagaz_es} var{urgente_pt} var{grave_es} var{aigu_fr} var{spitz_de} var{οξύς_el} var{acuto_it} var{agudo_pt} var{ascuțit_ro} var{agudo_es} var{aigu_fr} var{akut_de} var{agudo_pt} var{aigu_fr} var{οξύς_el} var{agudo_pt} var{acute_en}] 'means var{Of a short-lived condition, in contrast to a chronic condition; this sense also does not imply severity.}
{After a letter of the alphabet: having an acute accent.}: put'sense [name: {After a letter of the alphabet: having an acute accent.}]
[ {aigu_fr} ]: put.many 'word  [ [name:{aigu}, lang:{fr}] ]
link [var{aigu_fr} var{aiguë_fr} var{scharf_de} var{οξύς_el} var{agudo_pt} var{agudo_es} var{perspicaz_es} var{sagaz_es} var{urgente_pt} var{grave_es} var{aigu_fr} var{spitz_de} var{οξύς_el} var{acuto_it} var{agudo_pt} var{ascuțit_ro} var{agudo_es} var{aigu_fr} var{akut_de} var{agudo_pt} var{aigu_fr} var{οξύς_el} var{agudo_pt} var{aigu_fr} var{acute_en}] 'means var{After a letter of the alphabet: having an acute accent.}
{A person who has the acute form of a disorder, such as schizophrenia.}: put'sense [name: {A person who has the acute form of a disorder, such as schizophrenia.}]
{An accent or tone higher than others.}: put'sense [name: {An accent or tone higher than others.}]
{An acute accent (´).}: put'sense [name: {An acute accent (´).}]
{To give an acute sound to.}: put'sense [name: {To give an acute sound to.}]
{To make acute; to sharpen, to whet.}: put'sense [name: {To make acute; to sharpen, to whet.}]
{humble_en}: put'word [name: {humble}, lang: "en"]
{Not pretentious or magnificent; unpretending; unassuming.}: put'sense [name: {Not pretentious or magnificent; unpretending; unassuming.}]
{Having a low opinion of oneself; not proud, arrogant, or assuming; modest.}: put'sense [name: {Having a low opinion of oneself; not proud, arrogant, or assuming; modest.}]
[ {humble_fr}, {demütig_de}, {bescheiden_de}, {umile_it}, {modesto_it}, {humilde_pt}, {umil_ro}, {modesto_es}, {humilde_es} ]: put.many 'word  [ [name:{humble}, lang:{fr}], [name:{demütig}, lang:{de}], [name:{bescheiden}, lang:{de}], [name:{umile}, lang:{it}], [name:{modesto}, lang:{it}], [name:{humilde}, lang:{pt}], [name:{umil}, lang:{ro}], [name:{modesto}, lang:{es}], [name:{humilde}, lang:{es}] ]
link [var{humble_fr} var{demütig_de} var{bescheiden_de} var{umile_it} var{modesto_it} var{humilde_pt} var{umil_ro} var{modesto_es} var{humilde_es} var{humble_en}] 'means var{Having a low opinion of oneself; not proud, arrogant, or assuming; modest.}
{To defeat or reduce the power, independence, or pride of}: put'sense [name: {To defeat or reduce the power, independence, or pride of}]
{To make humble or lowly; to make less proud or arrogant; to make meek and submissive.}: put'sense [name: {To make humble or lowly; to make less proud or arrogant; to make meek and submissive.}]
[ {erniedrigen_de}, {demütig machen_de}, {umili_ro} ]: put.many 'word  [ [name:{erniedrigen}, lang:{de}], [name:{demütig machen}, lang:{de}], [name:{umili}, lang:{ro}] ]
link [var{humble_fr} var{demütig_de} var{bescheiden_de} var{umile_it} var{modesto_it} var{humilde_pt} var{umil_ro} var{modesto_es} var{humilde_es} var{erniedrigen_de} var{demütig machen_de} var{umili_ro} var{humble_en}] 'means var{To make humble or lowly; to make less proud or arrogant; to make meek and submissive.}
{An arrest based on weak evidence intended to demean or punish the subject.}: put'sense [name: {An arrest based on weak evidence intended to demean or punish the subject.}]
{To hum.}: put'sense [name: {To hum.}]
{Alternative form of hummel.}: put'sense [name: {Alternative form of hummel.}]
{Alternative form of hummel.}: put'sense [name: {Alternative form of hummel.}]
{million_en}: put'word [name: {million}, lang: "en"]
{The cardinal number 1,000,000: 10⁶; a thousand thousand.}: put'sense [name: {The cardinal number 1,000,000: 10⁶; a thousand thousand.}]
[ {million_fr}, {Million_de}, {εκατομμύριο_el}, {milione_it}, {milhão_pt}, {milion_ro}, {millón_es} ]: put.many 'word  [ [name:{million}, lang:{fr}], [name:{Million}, lang:{de}], [name:{εκατομμύριο}, lang:{el}], [name:{milione}, lang:{it}], [name:{milhão}, lang:{pt}], [name:{milion}, lang:{ro}], [name:{millón}, lang:{es}] ]
link [var{million_fr} var{Million_de} var{εκατομμύριο_el} var{milione_it} var{milhão_pt} var{milion_ro} var{millón_es} var{million_en}] 'means var{The cardinal number 1,000,000: 10⁶; a thousand thousand.}
{An unspecified very large number.}: put'sense [name: {An unspecified very large number.}]
{before_en}: put'word [name: {before}, lang: "en"]
{Earlier than (in time).}: put'sense [name: {Earlier than (in time).}]
[ {avant_fr}, {avant que_fr}, {vor_de}, {πριν_el}, {prima_it}, {innanzi_it}, {antes de_pt}, {înainte_ro}, {anterior_ro}, {antes de_es}, {antes que_es} ]: put.many 'word  [ [name:{avant}, lang:{fr}], [name:{avant que}, lang:{fr}], [name:{vor}, lang:{de}], [name:{πριν}, lang:{el}], [name:{prima}, lang:{it}], [name:{innanzi}, lang:{it}], [name:{antes de}, lang:{pt}], [name:{înainte}, lang:{ro}], [name:{anterior}, lang:{ro}], [name:{antes de}, lang:{es}], [name:{antes que}, lang:{es}] ]
link [var{avant_fr} var{avant que_fr} var{vor_de} var{πριν_el} var{prima_it} var{innanzi_it} var{antes de_pt} var{înainte_ro} var{anterior_ro} var{antes de_es} var{antes que_es} var{before_en}] 'means var{Earlier than (in time).}
{In front of in space.}: put'sense [name: {In front of in space.}]
[ {devant_fr}, {vor_de}, {μπροστά σε_el}, {μπροστά από_el}, {davanti_it}, {innanzi_it}, {ante_pt}, {em frente a_pt}, {na frente de_pt}, {diante de_pt}, {înainte_ro}, {în față_ro}, {ante_es}, {frente a_es}, {enfrente de_es} ]: put.many 'word  [ [name:{devant}, lang:{fr}], [name:{vor}, lang:{de}], [name:{μπροστά σε}, lang:{el}], [name:{μπροστά από}, lang:{el}], [name:{davanti}, lang:{it}], [name:{innanzi}, lang:{it}], [name:{ante}, lang:{pt}], [name:{em frente a}, lang:{pt}], [name:{na frente de}, lang:{pt}], [name:{diante de}, lang:{pt}], [name:{înainte}, lang:{ro}], [name:{în față}, lang:{ro}], [name:{ante}, lang:{es}], [name:{frente a}, lang:{es}], [name:{enfrente de}, lang:{es}] ]
link [var{avant_fr} var{avant que_fr} var{vor_de} var{πριν_el} var{prima_it} var{innanzi_it} var{antes de_pt} var{înainte_ro} var{anterior_ro} var{antes de_es} var{antes que_es} var{devant_fr} var{vor_de} var{μπροστά σε_el} var{μπροστά από_el} var{davanti_it} var{innanzi_it} var{ante_pt} var{em frente a_pt} var{na frente de_pt} var{diante de_pt} var{înainte_ro} var{în față_ro} var{ante_es} var{frente a_es} var{enfrente de_es} var{before_en}] 'means var{In front of in space.}
{In the presence of.}: put'sense [name: {In the presence of.}]
{Under consideration, judgment, authority of (someone).}: put'sense [name: {Under consideration, judgment, authority of (someone).}]
{In store for, in the future of (someone).}: put'sense [name: {In store for, in the future of (someone).}]
{In front of, according to a formal system of ordering items.}: put'sense [name: {In front of, according to a formal system of ordering items.}]
[ {avant_fr}, {vor_de}, {antes de_pt}, {antes de_es} ]: put.many 'word  [ [name:{avant}, lang:{fr}], [name:{vor}, lang:{de}], [name:{antes de}, lang:{pt}], [name:{antes de}, lang:{es}] ]
link [var{avant_fr} var{avant que_fr} var{vor_de} var{πριν_el} var{prima_it} var{innanzi_it} var{antes de_pt} var{înainte_ro} var{anterior_ro} var{antes de_es} var{antes que_es} var{devant_fr} var{vor_de} var{μπροστά σε_el} var{μπροστά από_el} var{davanti_it} var{innanzi_it} var{ante_pt} var{em frente a_pt} var{na frente de_pt} var{diante de_pt} var{înainte_ro} var{în față_ro} var{ante_es} var{frente a_es} var{enfrente de_es} var{avant_fr} var{vor_de} var{antes de_pt} var{antes de_es} var{before_en}] 'means var{In front of, according to a formal system of ordering items.}
{At a higher or greater position than, in a ranking.}: put'sense [name: {At a higher or greater position than, in a ranking.}]
{At an earlier time.}: put'sense [name: {At an earlier time.}]
[ {avant_fr}, {zuvor_de}, {vorher_de}, {prima_it}, {antes_pt}, {înainte_ro} ]: put.many 'word  [ [name:{avant}, lang:{fr}], [name:{zuvor}, lang:{de}], [name:{vorher}, lang:{de}], [name:{prima}, lang:{it}], [name:{antes}, lang:{pt}], [name:{înainte}, lang:{ro}] ]
link [var{avant_fr} var{avant que_fr} var{vor_de} var{πριν_el} var{prima_it} var{innanzi_it} var{antes de_pt} var{înainte_ro} var{anterior_ro} var{antes de_es} var{antes que_es} var{devant_fr} var{vor_de} var{μπροστά σε_el} var{μπροστά από_el} var{davanti_it} var{innanzi_it} var{ante_pt} var{em frente a_pt} var{na frente de_pt} var{diante de_pt} var{înainte_ro} var{în față_ro} var{ante_es} var{frente a_es} var{enfrente de_es} var{avant_fr} var{vor_de} var{antes de_pt} var{antes de_es} var{avant_fr} var{zuvor_de} var{vorher_de} var{prima_it} var{antes_pt} var{înainte_ro} var{before_en}] 'means var{At an earlier time.}
{In advance.}: put'sense [name: {In advance.}]
[ {eher_de}, {im Voraus_de}, {primeiro_pt}, {în avans_ro} ]: put.many 'word  [ [name:{eher}, lang:{de}], [name:{im Voraus}, lang:{de}], [name:{primeiro}, lang:{pt}], [name:{în avans}, lang:{ro}] ]
link [var{avant_fr} var{avant que_fr} var{vor_de} var{πριν_el} var{prima_it} var{innanzi_it} var{antes de_pt} var{înainte_ro} var{anterior_ro} var{antes de_es} var{antes que_es} var{devant_fr} var{vor_de} var{μπροστά σε_el} var{μπροστά από_el} var{davanti_it} var{innanzi_it} var{ante_pt} var{em frente a_pt} var{na frente de_pt} var{diante de_pt} var{înainte_ro} var{în față_ro} var{ante_es} var{frente a_es} var{enfrente de_es} var{avant_fr} var{vor_de} var{antes de_pt} var{antes de_es} var{avant_fr} var{zuvor_de} var{vorher_de} var{prima_it} var{antes_pt} var{înainte_ro} var{eher_de} var{im Voraus_de} var{primeiro_pt} var{în avans_ro} var{before_en}] 'means var{In advance.}
{At the front end.}: put'sense [name: {At the front end.}]
[ {vorn_de}, {vorne_de} ]: put.many 'word  [ [name:{vorn}, lang:{de}], [name:{vorne}, lang:{de}] ]
link [var{avant_fr} var{avant que_fr} var{vor_de} var{πριν_el} var{prima_it} var{innanzi_it} var{antes de_pt} var{înainte_ro} var{anterior_ro} var{antes de_es} var{antes que_es} var{devant_fr} var{vor_de} var{μπροστά σε_el} var{μπροστά από_el} var{davanti_it} var{innanzi_it} var{ante_pt} var{em frente a_pt} var{na frente de_pt} var{diante de_pt} var{înainte_ro} var{în față_ro} var{ante_es} var{frente a_es} var{enfrente de_es} var{avant_fr} var{vor_de} var{antes de_pt} var{antes de_es} var{avant_fr} var{zuvor_de} var{vorher_de} var{prima_it} var{antes_pt} var{înainte_ro} var{eher_de} var{im Voraus_de} var{primeiro_pt} var{în avans_ro} var{vorn_de} var{vorne_de} var{before_en}] 'means var{At the front end.}
{In advance of the time when.}: put'sense [name: {In advance of the time when.}]
[ {avant que_fr}, {bevor_de}, {prima_it}, {antes de que_es} ]: put.many 'word  [ [name:{avant que}, lang:{fr}], [name:{bevor}, lang:{de}], [name:{prima}, lang:{it}], [name:{antes de que}, lang:{es}] ]
link [var{avant_fr} var{avant que_fr} var{vor_de} var{πριν_el} var{prima_it} var{innanzi_it} var{antes de_pt} var{înainte_ro} var{anterior_ro} var{antes de_es} var{antes que_es} var{devant_fr} var{vor_de} var{μπροστά σε_el} var{μπροστά από_el} var{davanti_it} var{innanzi_it} var{ante_pt} var{em frente a_pt} var{na frente de_pt} var{diante de_pt} var{înainte_ro} var{în față_ro} var{ante_es} var{frente a_es} var{enfrente de_es} var{avant_fr} var{vor_de} var{antes de_pt} var{antes de_es} var{avant_fr} var{zuvor_de} var{vorher_de} var{prima_it} var{antes_pt} var{înainte_ro} var{eher_de} var{im Voraus_de} var{primeiro_pt} var{în avans_ro} var{vorn_de} var{vorne_de} var{avant que_fr} var{bevor_de} var{prima_it} var{antes de que_es} var{before_en}] 'means var{In advance of the time when.}
{Rather or sooner than.}: put'sense [name: {Rather or sooner than.}]
[ {bevor_de} ]: put.many 'word  [ [name:{bevor}, lang:{de}] ]
link [var{avant_fr} var{avant que_fr} var{vor_de} var{πριν_el} var{prima_it} var{innanzi_it} var{antes de_pt} var{înainte_ro} var{anterior_ro} var{antes de_es} var{antes que_es} var{devant_fr} var{vor_de} var{μπροστά σε_el} var{μπροστά από_el} var{davanti_it} var{innanzi_it} var{ante_pt} var{em frente a_pt} var{na frente de_pt} var{diante de_pt} var{înainte_ro} var{în față_ro} var{ante_es} var{frente a_es} var{enfrente de_es} var{avant_fr} var{vor_de} var{antes de_pt} var{antes de_es} var{avant_fr} var{zuvor_de} var{vorher_de} var{prima_it} var{antes_pt} var{înainte_ro} var{eher_de} var{im Voraus_de} var{primeiro_pt} var{în avans_ro} var{vorn_de} var{vorne_de} var{avant que_fr} var{bevor_de} var{prima_it} var{antes de que_es} var{bevor_de} var{before_en}] 'means var{Rather or sooner than.}
{overall_en}: put'word [name: {overall}, lang: "en"]
{All-encompassing, all around.}: put'sense [name: {All-encompassing, all around.}]
[ {global_fr}, {total_fr}, {Gesamt-_de}, {complessivo_it}, {globale_it}, {generale_it}, {abrangente_pt}, {geral_pt}, {total_es}, {completo_es}, {general_es} ]: put.many 'word  [ [name:{global}, lang:{fr}], [name:{total}, lang:{fr}], [name:{Gesamt-}, lang:{de}], [name:{complessivo}, lang:{it}], [name:{globale}, lang:{it}], [name:{generale}, lang:{it}], [name:{abrangente}, lang:{pt}], [name:{geral}, lang:{pt}], [name:{total}, lang:{es}], [name:{completo}, lang:{es}], [name:{general}, lang:{es}] ]
link [var{global_fr} var{total_fr} var{Gesamt-_de} var{complessivo_it} var{globale_it} var{generale_it} var{abrangente_pt} var{geral_pt} var{total_es} var{completo_es} var{general_es} var{overall_en}] 'means var{All-encompassing, all around.}
{Generally; with everything considered.}: put'sense [name: {Generally; with everything considered.}]
[ {en général_fr}, {insgesamt_de}, {tutto sommato_it}, {in generale_it}, {complessivamente_it}, {nell'insieme_it}, {em geral_pt}, {sobretodo_es}, {totalmente_es}, {completamente_es} ]: put.many 'word  [ [name:{en général}, lang:{fr}], [name:{insgesamt}, lang:{de}], [name:{tutto sommato}, lang:{it}], [name:{in generale}, lang:{it}], [name:{complessivamente}, lang:{it}], [name:{nell'insieme}, lang:{it}], [name:{em geral}, lang:{pt}], [name:{sobretodo}, lang:{es}], [name:{totalmente}, lang:{es}], [name:{completamente}, lang:{es}] ]
link [var{global_fr} var{total_fr} var{Gesamt-_de} var{complessivo_it} var{globale_it} var{generale_it} var{abrangente_pt} var{geral_pt} var{total_es} var{completo_es} var{general_es} var{en général_fr} var{insgesamt_de} var{tutto sommato_it} var{in generale_it} var{complessivamente_it} var{nell'insieme_it} var{em geral_pt} var{sobretodo_es} var{totalmente_es} var{completamente_es} var{overall_en}] 'means var{Generally; with everything considered.}
{A garment worn over other clothing to protect it; a coverall or boiler suit. A garment, for manual labor or for casual wear, often made of a single piece of fabric, with long legs and a bib upper, supported from the shoulders with straps, and having several large pockets and loops for carrying tools.}: put'sense [name: {A garment worn over other clothing to protect it; a coverall or boiler suit. A garment, for manual labor or for casual wear, often made of a single piece of fabric, with long legs and a bib upper, supported from the shoulders with straps, and having several large pockets and loops for carrying tools.}]
[ {blouse_fr}, {combinaison_fr}, {salopette_fr}, {Overall_de}, {Latzhose_de}, {blusa_it}, {tuta da lavoro_it}, {macacão_pt}, {braga_es}, {mono_es}, {overol_es} ]: put.many 'word  [ [name:{blouse}, lang:{fr}], [name:{combinaison}, lang:{fr}], [name:{salopette}, lang:{fr}], [name:{Overall}, lang:{de}], [name:{Latzhose}, lang:{de}], [name:{blusa}, lang:{it}], [name:{tuta da lavoro}, lang:{it}], [name:{macacão}, lang:{pt}], [name:{braga}, lang:{es}], [name:{mono}, lang:{es}], [name:{overol}, lang:{es}] ]
link [var{global_fr} var{total_fr} var{Gesamt-_de} var{complessivo_it} var{globale_it} var{generale_it} var{abrangente_pt} var{geral_pt} var{total_es} var{completo_es} var{general_es} var{en général_fr} var{insgesamt_de} var{tutto sommato_it} var{in generale_it} var{complessivamente_it} var{nell'insieme_it} var{em geral_pt} var{sobretodo_es} var{totalmente_es} var{completamente_es} var{blouse_fr} var{combinaison_fr} var{salopette_fr} var{Overall_de} var{Latzhose_de} var{blusa_it} var{tuta da lavoro_it} var{macacão_pt} var{braga_es} var{mono_es} var{overol_es} var{overall_en}] 'means var{A garment worn over other clothing to protect it; a coverall or boiler suit. A garment, for manual labor or for casual wear, often made of a single piece of fabric, with long legs and a bib upper, supported from the shoulders with straps, and having several large pockets and loops for carrying tools.}
{A garment, worn for manual labor, with an integral covering extending to the chest, supported by straps.}: put'sense [name: {A garment, worn for manual labor, with an integral covering extending to the chest, supported by straps.}]
{do_en}: put'word [name: {do}, lang: "en"]
{A syntactic marker.}: put'sense [name: {A syntactic marker.}]
{A syntactic marker.}: put'sense [name: {A syntactic marker.}]
[ {_fr}, {_de}, {_it}, {_pt}, {_es} ]: put.many 'word  [ [name:{}, lang:{fr}], [name:{}, lang:{de}], [name:{}, lang:{it}], [name:{}, lang:{pt}], [name:{}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{do_en}] 'means var{A syntactic marker.}
{A syntactic marker.}: put'sense [name: {A syntactic marker.}]
[ {schon_de}, {sim_pt}, {sí_es} ]: put.many 'word  [ [name:{schon}, lang:{de}], [name:{sim}, lang:{pt}], [name:{sí}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{do_en}] 'means var{A syntactic marker.}
{A syntactic marker.}: put'sense [name: {A syntactic marker.}]
[ {_fr}, {_de}, {_it}, {_pt}, {_es} ]: put.many 'word  [ [name:{}, lang:{fr}], [name:{}, lang:{de}], [name:{}, lang:{it}], [name:{}, lang:{pt}], [name:{}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{do_en}] 'means var{A syntactic marker.}
{To perform; to execute.}: put'sense [name: {To perform; to execute.}]
[ {faire_fr}, {tun_de}, {machen_de}, {κάμνω_el}, {κάνω_el}, {fare_it}, {fazer_pt}, {realizar_pt}, {face_ro}, {hacer_es}, {fazer_pt} ]: put.many 'word  [ [name:{faire}, lang:{fr}], [name:{tun}, lang:{de}], [name:{machen}, lang:{de}], [name:{κάμνω}, lang:{el}], [name:{κάνω}, lang:{el}], [name:{fare}, lang:{it}], [name:{fazer}, lang:{pt}], [name:{realizar}, lang:{pt}], [name:{face}, lang:{ro}], [name:{hacer}, lang:{es}], [name:{fazer}, lang:{pt}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{do_en}] 'means var{To perform; to execute.}
{To cause, make (someone) (do something).}: put'sense [name: {To cause, make (someone) (do something).}]
{To suffice.}: put'sense [name: {To suffice.}]
[ {aller_fr}, {reichen_de}, {servir_pt}, {valer_es} ]: put.many 'word  [ [name:{aller}, lang:{fr}], [name:{reichen}, lang:{de}], [name:{servir}, lang:{pt}], [name:{valer}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{do_en}] 'means var{To suffice.}
{To be reasonable or acceptable.}: put'sense [name: {To be reasonable or acceptable.}]
[ {aller_fr}, {andare_it}, {servir_pt}, {valer_es} ]: put.many 'word  [ [name:{aller}, lang:{fr}], [name:{andare}, lang:{it}], [name:{servir}, lang:{pt}], [name:{valer}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{do_en}] 'means var{To be reasonable or acceptable.}
{To have (as an effect).}: put'sense [name: {To have (as an effect).}]
[ {fazer_pt} ]: put.many 'word  [ [name:{fazer}, lang:{pt}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{do_en}] 'means var{To have (as an effect).}
{To fare, perform (well or poorly).}: put'sense [name: {To fare, perform (well or poorly).}]
[ {ir_pt} ]: put.many 'word  [ [name:{ir}, lang:{pt}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{do_en}] 'means var{To fare, perform (well or poorly).}
{To have as one's job.}: put'sense [name: {To have as one's job.}]
[ {fazer_pt}, {hacer_es} ]: put.many 'word  [ [name:{fazer}, lang:{pt}], [name:{hacer}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{fazer_pt} var{hacer_es} var{do_en}] 'means var{To have as one's job.}
{To perform the tasks or actions associated with (something).}: put'sense [name: {To perform the tasks or actions associated with (something).}]
{To cook.}: put'sense [name: {To cook.}]
[ {fazer_pt}, {preparar_pt}, {hacer_es} ]: put.many 'word  [ [name:{fazer}, lang:{pt}], [name:{preparar}, lang:{pt}], [name:{hacer}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{fazer_pt} var{hacer_es} var{fazer_pt} var{preparar_pt} var{hacer_es} var{do_en}] 'means var{To cook.}
{To travel in, to tour, to make a circuit of.}: put'sense [name: {To travel in, to tour, to make a circuit of.}]
{To treat in a certain way.}: put'sense [name: {To treat in a certain way.}]
{To work for or on, by way of caring for, looking after, preparing, cleaning, keeping in order, etc.}: put'sense [name: {To work for or on, by way of caring for, looking after, preparing, cleaning, keeping in order, etc.}]
{To act or behave in a certain manner; to conduct oneself.}: put'sense [name: {To act or behave in a certain manner; to conduct oneself.}]
{To spend (time) in jail. (See also do time)}: put'sense [name: {To spend (time) in jail. (See also do time)}]
[ {passar_pt} ]: put.many 'word  [ [name:{passar}, lang:{pt}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{fazer_pt} var{hacer_es} var{fazer_pt} var{preparar_pt} var{hacer_es} var{passar_pt} var{do_en}] 'means var{To spend (time) in jail. (See also do time)}
{To impersonate or depict.}: put'sense [name: {To impersonate or depict.}]
{To copy or emulate the actions or behaviour that is associated with the person or thing mentioned.}: put'sense [name: {To copy or emulate the actions or behaviour that is associated with the person or thing mentioned.}]
{To kill.}: put'sense [name: {To kill.}]
{To deal with for good and all; to finish up; to undo; to ruin; to do for.}: put'sense [name: {To deal with for good and all; to finish up; to undo; to ruin; to do for.}]
{To punish for a misdemeanor.}: put'sense [name: {To punish for a misdemeanor.}]
{To have sex with. (See also do it)}: put'sense [name: {To have sex with. (See also do it)}]
[ {se faire_fr}, {comer_pt}, {coger_es}, {culear_es}, {joder_es} ]: put.many 'word  [ [name:{se faire}, lang:{fr}], [name:{comer}, lang:{pt}], [name:{coger}, lang:{es}], [name:{culear}, lang:{es}], [name:{joder}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{fazer_pt} var{hacer_es} var{fazer_pt} var{preparar_pt} var{hacer_es} var{passar_pt} var{se faire_fr} var{comer_pt} var{coger_es} var{culear_es} var{joder_es} var{do_en}] 'means var{To have sex with. (See also do it)}
{To cheat or swindle.}: put'sense [name: {To cheat or swindle.}]
{To convert into a certain form; especially, to translate.}: put'sense [name: {To convert into a certain form; especially, to translate.}]
{To finish.}: put'sense [name: {To finish.}]
{To work as a domestic servant (with for).}: put'sense [name: {To work as a domestic servant (with for).}]
{Used to form the present progressive of verbs.}: put'sense [name: {Used to form the present progressive of verbs.}]
{To cash or to advance money for, as a bill or note.}: put'sense [name: {To cash or to advance money for, as a bill or note.}]
{To make or provide.}: put'sense [name: {To make or provide.}]
{To injure (one's own body part).}: put'sense [name: {To injure (one's own body part).}]
{To take drugs.}: put'sense [name: {To take drugs.}]
[ {nehmen_de}, {usar_pt} ]: put.many 'word  [ [name:{nehmen}, lang:{de}], [name:{usar}, lang:{pt}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{fazer_pt} var{hacer_es} var{fazer_pt} var{preparar_pt} var{hacer_es} var{passar_pt} var{se faire_fr} var{comer_pt} var{coger_es} var{culear_es} var{joder_es} var{nehmen_de} var{usar_pt} var{do_en}] 'means var{To take drugs.}
{To exist with a purpose or for a reason.}: put'sense [name: {To exist with a purpose or for a reason.}]
[ {fazer_pt}, {hacer_es} ]: put.many 'word  [ [name:{fazer}, lang:{pt}], [name:{hacer}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{fazer_pt} var{hacer_es} var{fazer_pt} var{preparar_pt} var{hacer_es} var{passar_pt} var{se faire_fr} var{comer_pt} var{coger_es} var{culear_es} var{joder_es} var{nehmen_de} var{usar_pt} var{fazer_pt} var{hacer_es} var{do_en}] 'means var{To exist with a purpose or for a reason.}
{A party, celebration, social function.}: put'sense [name: {A party, celebration, social function.}]
{A hairdo.}: put'sense [name: {A hairdo.}]
[ {penteado_pt} ]: put.many 'word  [ [name:{penteado}, lang:{pt}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{fazer_pt} var{hacer_es} var{fazer_pt} var{preparar_pt} var{hacer_es} var{passar_pt} var{se faire_fr} var{comer_pt} var{coger_es} var{culear_es} var{joder_es} var{nehmen_de} var{usar_pt} var{fazer_pt} var{hacer_es} var{penteado_pt} var{do_en}] 'means var{A hairdo.}
{Something that can or should be done (usually in the phrase dos and don'ts).}: put'sense [name: {Something that can or should be done (usually in the phrase dos and don'ts).}]
{Ado; bustle; stir; to-do; A period of confusion or argument.}: put'sense [name: {Ado; bustle; stir; to-do; A period of confusion or argument.}]
{A cheat; a swindler.}: put'sense [name: {A cheat; a swindler.}]
{An act of swindling; a fraud or deception.}: put'sense [name: {An act of swindling; a fraud or deception.}]
{A syllable used in solfège to represent the first and eighth tonic of a major scale.}: put'sense [name: {A syllable used in solfège to represent the first and eighth tonic of a major scale.}]
[ {do_fr}, {ντο_el}, {dó_pt}, {do_es} ]: put.many 'word  [ [name:{do}, lang:{fr}], [name:{ντο}, lang:{el}], [name:{dó}, lang:{pt}], [name:{do}, lang:{es}] ]
link [var{_fr} var{_de} var{_it} var{_pt} var{_es} var{schon_de} var{sim_pt} var{sí_es} var{_fr} var{_de} var{_it} var{_pt} var{_es} var{faire_fr} var{tun_de} var{machen_de} var{κάμνω_el} var{κάνω_el} var{fare_it} var{fazer_pt} var{realizar_pt} var{face_ro} var{hacer_es} var{fazer_pt} var{aller_fr} var{reichen_de} var{servir_pt} var{valer_es} var{aller_fr} var{andare_it} var{servir_pt} var{valer_es} var{fazer_pt} var{ir_pt} var{fazer_pt} var{hacer_es} var{fazer_pt} var{preparar_pt} var{hacer_es} var{passar_pt} var{se faire_fr} var{comer_pt} var{coger_es} var{culear_es} var{joder_es} var{nehmen_de} var{usar_pt} var{fazer_pt} var{hacer_es} var{penteado_pt} var{do_fr} var{ντο_el} var{dó_pt} var{do_es} var{do_en}] 'means var{A syllable used in solfège to represent the first and eighth tonic of a major scale.}
{Abbreviation of ditto.}: put'sense [name: {Abbreviation of ditto.}]
{The cardinal number occurring after el and before do one in a duodecimal system. Written 10, decimal value 12.}: put'sense [name: {The cardinal number occurring after el and before do one in a duodecimal system. Written 10, decimal value 12.}]
{literature_en}: put'word [name: {literature}, lang: "en"]
{The body of all written works.}: put'sense [name: {The body of all written works.}]
[ {littérature_fr}, {Literatur_de}, {λογοτεχνία_el}, {βιβλιογραφία_el}, {letteratura_it}, {literatura_pt}, {literatură_ro}, {literatura_es} ]: put.many 'word  [ [name:{littérature}, lang:{fr}], [name:{Literatur}, lang:{de}], [name:{λογοτεχνία}, lang:{el}], [name:{βιβλιογραφία}, lang:{el}], [name:{letteratura}, lang:{it}], [name:{literatura}, lang:{pt}], [name:{literatură}, lang:{ro}], [name:{literatura}, lang:{es}] ]
link [var{littérature_fr} var{Literatur_de} var{λογοτεχνία_el} var{βιβλιογραφία_el} var{letteratura_it} var{literatura_pt} var{literatură_ro} var{literatura_es} var{literature_en}] 'means var{The body of all written works.}
{The collected creative writing of a nation, people, group, or culture.}: put'sense [name: {The collected creative writing of a nation, people, group, or culture.}]
[ {literatura_pt}, {literatura_es} ]: put.many 'word  [ [name:{literatura}, lang:{pt}], [name:{literatura}, lang:{es}] ]
link [var{littérature_fr} var{Literatur_de} var{λογοτεχνία_el} var{βιβλιογραφία_el} var{letteratura_it} var{literatura_pt} var{literatură_ro} var{literatura_es} var{literatura_pt} var{literatura_es} var{literature_en}] 'means var{The collected creative writing of a nation, people, group, or culture.}
{All the papers, treatises, etc. published in academic journals on a particular subject.}: put'sense [name: {All the papers, treatises, etc. published in academic journals on a particular subject.}]
[ {littérature_fr}, {letteratura_it}, {literatura_pt}, {literatura_es} ]: put.many 'word  [ [name:{littérature}, lang:{fr}], [name:{letteratura}, lang:{it}], [name:{literatura}, lang:{pt}], [name:{literatura}, lang:{es}] ]
link [var{littérature_fr} var{Literatur_de} var{λογοτεχνία_el} var{βιβλιογραφία_el} var{letteratura_it} var{literatura_pt} var{literatură_ro} var{literatura_es} var{literatura_pt} var{literatura_es} var{littérature_fr} var{letteratura_it} var{literatura_pt} var{literatura_es} var{literature_en}] 'means var{All the papers, treatises, etc. published in academic journals on a particular subject.}
{Written fiction of a high standard.}: put'sense [name: {Written fiction of a high standard.}]
{sufficient_en}: put'word [name: {sufficient}, lang: "en"]
{An adequate quantity of; enough.}: put'sense [name: {An adequate quantity of; enough.}]
{A quantity (of something) that is as large as is needed.}: put'sense [name: {A quantity (of something) that is as large as is needed.}]
{Of a type or kind that suffices, that satisfies requirements or needs.}: put'sense [name: {Of a type or kind that suffices, that satisfies requirements or needs.}]
{Possessing adequate talents or accomplishments; of competent power or ability; qualified; fit.}: put'sense [name: {Possessing adequate talents or accomplishments; of competent power or ability; qualified; fit.}]
[ {appropriato_it}, {suficiente_pt}, {autosuffisant_fr}, {autosufficiente_it} ]: put.many 'word  [ [name:{appropriato}, lang:{it}], [name:{suficiente}, lang:{pt}], [name:{autosuffisant}, lang:{fr}], [name:{autosufficiente}, lang:{it}] ]
link [var{appropriato_it} var{suficiente_pt} var{autosuffisant_fr} var{autosufficiente_it} var{sufficient_en}] 'means var{Possessing adequate talents or accomplishments; of competent power or ability; qualified; fit.}
{Capable of meeting obligations; responsible.}: put'sense [name: {Capable of meeting obligations; responsible.}]
[ {idoneo_it} ]: put.many 'word  [ [name:{idoneo}, lang:{it}] ]
link [var{appropriato_it} var{suficiente_pt} var{autosuffisant_fr} var{autosufficiente_it} var{idoneo_it} var{sufficient_en}] 'means var{Capable of meeting obligations; responsible.}
{Having enough money to meet obligations and live comfortably.}: put'sense [name: {Having enough money to meet obligations and live comfortably.}]
{modernism_en}: put'word [name: {modernism}, lang: "en"]
{Modern or contemporary ideas, thought, practices, etc.}: put'sense [name: {Modern or contemporary ideas, thought, practices, etc.}]
{Anything that is characteristic of modernity.}: put'sense [name: {Anything that is characteristic of modernity.}]
{Any of several styles of art, architecture, literature, philosophy, etc., that flourished in the 20th century.}: put'sense [name: {Any of several styles of art, architecture, literature, philosophy, etc., that flourished in the 20th century.}]
[ {modernisme_fr}, {Modernismus_de}, {νεωτερισμός_el}, {modernismo_it}, {modernismo_pt}, {modernismo_es} ]: put.many 'word  [ [name:{modernisme}, lang:{fr}], [name:{Modernismus}, lang:{de}], [name:{νεωτερισμός}, lang:{el}], [name:{modernismo}, lang:{it}], [name:{modernismo}, lang:{pt}], [name:{modernismo}, lang:{es}] ]
link [var{modernisme_fr} var{Modernismus_de} var{νεωτερισμός_el} var{modernismo_it} var{modernismo_pt} var{modernismo_es} var{modernism_en}] 'means var{Any of several styles of art, architecture, literature, philosophy, etc., that flourished in the 20th century.}
{A religious movement in the early 20th century that tried to reconcile Roman Catholic dogma with modern science and philosophy.}: put'sense [name: {A religious movement in the early 20th century that tried to reconcile Roman Catholic dogma with modern science and philosophy.}]
{midnight_en}: put'word [name: {midnight}, lang: "en"]
{The middle of the night: the sixth temporal hour, equidistant between sunset and sunrise.}: put'sense [name: {The middle of the night: the sixth temporal hour, equidistant between sunset and sunrise.}]
[ {medianoche_es}, {madrugada_es} ]: put.many 'word  [ [name:{medianoche}, lang:{es}], [name:{madrugada}, lang:{es}] ]
link [var{medianoche_es} var{madrugada_es} var{midnight_en}] 'means var{The middle of the night: the sixth temporal hour, equidistant between sunset and sunrise.}
{Twelve o'clock at night exactly.}: put'sense [name: {Twelve o'clock at night exactly.}]
[ {minuit_fr}, {Mitternacht_de}, {μεσάνυχτα_el}, {mezzanotte_it}, {meia-noite_pt}, {miezul nopții_ro}, {miez de noapte_ro}, {mijloc de noapte_ro}, {medianoche_es} ]: put.many 'word  [ [name:{minuit}, lang:{fr}], [name:{Mitternacht}, lang:{de}], [name:{μεσάνυχτα}, lang:{el}], [name:{mezzanotte}, lang:{it}], [name:{meia-noite}, lang:{pt}], [name:{miezul nopții}, lang:{ro}], [name:{miez de noapte}, lang:{ro}], [name:{mijloc de noapte}, lang:{ro}], [name:{medianoche}, lang:{es}] ]
link [var{medianoche_es} var{madrugada_es} var{minuit_fr} var{Mitternacht_de} var{μεσάνυχτα_el} var{mezzanotte_it} var{meia-noite_pt} var{miezul nopții_ro} var{miez de noapte_ro} var{mijloc de noapte_ro} var{medianoche_es} var{midnight_en}] 'means var{Twelve o'clock at night exactly.}
{boxcars}: put'sense [name: {boxcars}]
{Utterly dark or black.}: put'sense [name: {Utterly dark or black.}]
{able_en}: put'word [name: {able}, lang: "en"]
{Having the necessary powers or the needed resources to accomplish a task.}: put'sense [name: {Having the necessary powers or the needed resources to accomplish a task.}]
{Free from constraints preventing completion of task; permitted to; not prevented from.}: put'sense [name: {Free from constraints preventing completion of task; permitted to; not prevented from.}]
[ {capable_fr}, {imstande_de}, {fähig_de}, {δυνάμενος_el}, {μπορώ να_el}, {είμαι ικανός να_el}, {capace_it}, {possível_pt}, {permitido_pt}, {capaz_es} ]: put.many 'word  [ [name:{capable}, lang:{fr}], [name:{imstande}, lang:{de}], [name:{fähig}, lang:{de}], [name:{δυνάμενος}, lang:{el}], [name:{μπορώ να}, lang:{el}], [name:{είμαι ικανός να}, lang:{el}], [name:{capace}, lang:{it}], [name:{possível}, lang:{pt}], [name:{permitido}, lang:{pt}], [name:{capaz}, lang:{es}] ]
link [var{capable_fr} var{imstande_de} var{fähig_de} var{δυνάμενος_el} var{μπορώ να_el} var{είμαι ικανός να_el} var{capace_it} var{possível_pt} var{permitido_pt} var{capaz_es} var{able_en}] 'means var{Free from constraints preventing completion of task; permitted to; not prevented from.}
{Gifted with skill, intelligence, knowledge, or competence.}: put'sense [name: {Gifted with skill, intelligence, knowledge, or competence.}]
[ {capable_fr}, {expérimenté_fr}, {fähig_de}, {tüchtig_de}, {ικανός_el}, {abile_it}, {capaz_pt}, {abil_ro}, {capabil_ro}, {diestro_es}, {hábil_es}, {capaz_es} ]: put.many 'word  [ [name:{capable}, lang:{fr}], [name:{expérimenté}, lang:{fr}], [name:{fähig}, lang:{de}], [name:{tüchtig}, lang:{de}], [name:{ικανός}, lang:{el}], [name:{abile}, lang:{it}], [name:{capaz}, lang:{pt}], [name:{abil}, lang:{ro}], [name:{capabil}, lang:{ro}], [name:{diestro}, lang:{es}], [name:{hábil}, lang:{es}], [name:{capaz}, lang:{es}] ]
link [var{capable_fr} var{imstande_de} var{fähig_de} var{δυνάμενος_el} var{μπορώ να_el} var{είμαι ικανός να_el} var{capace_it} var{possível_pt} var{permitido_pt} var{capaz_es} var{capable_fr} var{expérimenté_fr} var{fähig_de} var{tüchtig_de} var{ικανός_el} var{abile_it} var{capaz_pt} var{abil_ro} var{capabil_ro} var{diestro_es} var{hábil_es} var{capaz_es} var{able_en}] 'means var{Gifted with skill, intelligence, knowledge, or competence.}
{Legally qualified or competent.}: put'sense [name: {Legally qualified or competent.}]
[ {habilité_fr}, {kompetent_de}, {αρτιμελής_el}, {έχων σώας τας φρένας_el}, {competente_pt}, {abilitat_ro}, {competent_ro}, {competente_es} ]: put.many 'word  [ [name:{habilité}, lang:{fr}], [name:{kompetent}, lang:{de}], [name:{αρτιμελής}, lang:{el}], [name:{έχων σώας τας φρένας}, lang:{el}], [name:{competente}, lang:{pt}], [name:{abilitat}, lang:{ro}], [name:{competent}, lang:{ro}], [name:{competente}, lang:{es}] ]
link [var{capable_fr} var{imstande_de} var{fähig_de} var{δυνάμενος_el} var{μπορώ να_el} var{είμαι ικανός να_el} var{capace_it} var{possível_pt} var{permitido_pt} var{capaz_es} var{capable_fr} var{expérimenté_fr} var{fähig_de} var{tüchtig_de} var{ικανός_el} var{abile_it} var{capaz_pt} var{abil_ro} var{capabil_ro} var{diestro_es} var{hábil_es} var{capaz_es} var{habilité_fr} var{kompetent_de} var{αρτιμελής_el} var{έχων σώας τας φρένας_el} var{competente_pt} var{abilitat_ro} var{competent_ro} var{competente_es} var{able_en}] 'means var{Legally qualified or competent.}
{Capable of performing all the requisite duties; as an able seaman.}: put'sense [name: {Capable of performing all the requisite duties; as an able seaman.}]
{Having the physical strength; robust; healthy.}: put'sense [name: {Having the physical strength; robust; healthy.}]
{Easy to use.}: put'sense [name: {Easy to use.}]
{Suitable; competent.}: put'sense [name: {Suitable; competent.}]
{Liable to.}: put'sense [name: {Liable to.}]
{Rich; well-to-do.}: put'sense [name: {Rich; well-to-do.}]
{To make ready.}: put'sense [name: {To make ready.}]
{To make capable; to enable.}: put'sense [name: {To make capable; to enable.}]
{To dress.}: put'sense [name: {To dress.}]
{To give power to; to reinforce; to confirm.}: put'sense [name: {To give power to; to reinforce; to confirm.}]
{To vouch for; to guarantee.}: put'sense [name: {To vouch for; to guarantee.}]
{The letter "A" in Navy Phonetic Alphabet.}: put'sense [name: {The letter "A" in Navy Phonetic Alphabet.}]
{signal_en}: put'word [name: {signal}, lang: "en"]
{A sequence of states representing an encoded message in a communication channel.}: put'sense [name: {A sequence of states representing an encoded message in a communication channel.}]
{Any variation of a quantity or change in an entity over time that conveys information upon detection.}: put'sense [name: {Any variation of a quantity or change in an entity over time that conveys information upon detection.}]
{A sign made to give notice of some occurrence, command, or danger, or to indicate the start of a concerted action.}: put'sense [name: {A sign made to give notice of some occurrence, command, or danger, or to indicate the start of a concerted action.}]
[ {signal_fr}, {Signal_de}, {σήμα_el}, {segnale_it}, {sinal_pt}, {semnal_ro}, {señal_es} ]: put.many 'word  [ [name:{signal}, lang:{fr}], [name:{Signal}, lang:{de}], [name:{σήμα}, lang:{el}], [name:{segnale}, lang:{it}], [name:{sinal}, lang:{pt}], [name:{semnal}, lang:{ro}], [name:{señal}, lang:{es}] ]
link [var{signal_fr} var{Signal_de} var{σήμα_el} var{segnale_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{signal_en}] 'means var{A sign made to give notice of some occurrence, command, or danger, or to indicate the start of a concerted action.}
{An on-off light, semaphore, or other device used to give an indication to another person.}: put'sense [name: {An on-off light, semaphore, or other device used to give an indication to another person.}]
{An electromagnetic action, normally a voltage that is a function of time, that conveys the information of the radio or TV program or of communication with another party.}: put'sense [name: {An electromagnetic action, normally a voltage that is a function of time, that conveys the information of the radio or TV program or of communication with another party.}]
[ {segnale_it}, {campo_it}, {sinal_pt}, {semnal_ro}, {señal_es} ]: put.many 'word  [ [name:{segnale}, lang:{it}], [name:{campo}, lang:{it}], [name:{sinal}, lang:{pt}], [name:{semnal}, lang:{ro}], [name:{señal}, lang:{es}] ]
link [var{signal_fr} var{Signal_de} var{σήμα_el} var{segnale_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{segnale_it} var{campo_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{signal_en}] 'means var{An electromagnetic action, normally a voltage that is a function of time, that conveys the information of the radio or TV program or of communication with another party.}
{An action, change or process done to convey information and thus reduce uncertainty.}: put'sense [name: {An action, change or process done to convey information and thus reduce uncertainty.}]
{A token; an indication; a foreshadowing; a sign.}: put'sense [name: {A token; an indication; a foreshadowing; a sign.}]
[ {sinal_pt} ]: put.many 'word  [ [name:{sinal}, lang:{pt}] ]
link [var{signal_fr} var{Signal_de} var{σήμα_el} var{segnale_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{segnale_it} var{campo_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{sinal_pt} var{signal_en}] 'means var{A token; an indication; a foreshadowing; a sign.}
{Useful information, as opposed to noise.}: put'sense [name: {Useful information, as opposed to noise.}]
[ {sinal_pt} ]: put.many 'word  [ [name:{sinal}, lang:{pt}] ]
link [var{signal_fr} var{Signal_de} var{σήμα_el} var{segnale_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{segnale_it} var{campo_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{sinal_pt} var{sinal_pt} var{signal_en}] 'means var{Useful information, as opposed to noise.}
{A simple interprocess communication used to notify a process or thread of an occurrence.}: put'sense [name: {A simple interprocess communication used to notify a process or thread of an occurrence.}]
[ {signal_fr} ]: put.many 'word  [ [name:{signal}, lang:{fr}] ]
link [var{signal_fr} var{Signal_de} var{σήμα_el} var{segnale_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{segnale_it} var{campo_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{sinal_pt} var{sinal_pt} var{signal_fr} var{signal_en}] 'means var{A simple interprocess communication used to notify a process or thread of an occurrence.}
{A signalling interaction between cells}: put'sense [name: {A signalling interaction between cells}]
{To indicate; to convey or communicate by a signal.}: put'sense [name: {To indicate; to convey or communicate by a signal.}]
[ {signaler_fr}, {signalisieren_de}, {segnalare_it}, {indicare_it}, {señalar_es} ]: put.many 'word  [ [name:{signaler}, lang:{fr}], [name:{signalisieren}, lang:{de}], [name:{segnalare}, lang:{it}], [name:{indicare}, lang:{it}], [name:{señalar}, lang:{es}] ]
link [var{signal_fr} var{Signal_de} var{σήμα_el} var{segnale_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{segnale_it} var{campo_it} var{sinal_pt} var{semnal_ro} var{señal_es} var{sinal_pt} var{sinal_pt} var{signal_fr} var{signaler_fr} var{signalisieren_de} var{segnalare_it} var{indicare_it} var{señalar_es} var{signal_en}] 'means var{To indicate; to convey or communicate by a signal.}
{To communicate with (a person or system) by a signal.}: put'sense [name: {To communicate with (a person or system) by a signal.}]
{Standing above others in rank, importance, or achievement.}: put'sense [name: {Standing above others in rank, importance, or achievement.}]
{weapon_en}: put'word [name: {weapon}, lang: "en"]
{An instrument of attack or defense in combat or hunting, e.g. most guns, missiles, or swords; arm.}: put'sense [name: {An instrument of attack or defense in combat or hunting, e.g. most guns, missiles, or swords; arm.}]
[ {arme_fr}, {Waffe_de}, {όπλο_el}, {arma_it}, {arma_pt}, {armă_ro}, {arma_es} ]: put.many 'word  [ [name:{arme}, lang:{fr}], [name:{Waffe}, lang:{de}], [name:{όπλο}, lang:{el}], [name:{arma}, lang:{it}], [name:{arma}, lang:{pt}], [name:{armă}, lang:{ro}], [name:{arma}, lang:{es}] ]
link [var{arme_fr} var{Waffe_de} var{όπλο_el} var{arma_it} var{arma_pt} var{armă_ro} var{arma_es} var{weapon_en}] 'means var{An instrument of attack or defense in combat or hunting, e.g. most guns, missiles, or swords; arm.}
{An instrument or other means of harming or exerting control over another.}: put'sense [name: {An instrument or other means of harming or exerting control over another.}]
[ {όπλο_el} ]: put.many 'word  [ [name:{όπλο}, lang:{el}] ]
link [var{arme_fr} var{Waffe_de} var{όπλο_el} var{arma_it} var{arma_pt} var{armă_ro} var{arma_es} var{όπλο_el} var{weapon_en}] 'means var{An instrument or other means of harming or exerting control over another.}
{A tool of any kind.}: put'sense [name: {A tool of any kind.}]
{An idiot, an oaf, a fool, a tool; a contemptible or incompetent person.}: put'sense [name: {An idiot, an oaf, a fool, a tool; a contemptible or incompetent person.}]
{Any very skilled, competent, or capable person or thing worthy of awe.}: put'sense [name: {Any very skilled, competent, or capable person or thing worthy of awe.}]
{To equip with a weapon; to arm.}: put'sense [name: {To equip with a weapon; to arm.}]
{devastation_en}: put'word [name: {devastation}, lang: "en"]
{The act of devastating, or the state of being devastated; a laying waste.}: put'sense [name: {The act of devastating, or the state of being devastated; a laying waste.}]
[ {dévastation_fr}, {Verwüstung_de}, {Zerstörung_de}, {αφανισμός_el}, {συντριβή_el}, {καταστροφή_el}, {devastação_pt}, {devastare_ro}, {devastación_es}, {asolamiento_es}, {arrasamiento_es}, {quebranto_es} ]: put.many 'word  [ [name:{dévastation}, lang:{fr}], [name:{Verwüstung}, lang:{de}], [name:{Zerstörung}, lang:{de}], [name:{αφανισμός}, lang:{el}], [name:{συντριβή}, lang:{el}], [name:{καταστροφή}, lang:{el}], [name:{devastação}, lang:{pt}], [name:{devastare}, lang:{ro}], [name:{devastación}, lang:{es}], [name:{asolamiento}, lang:{es}], [name:{arrasamiento}, lang:{es}], [name:{quebranto}, lang:{es}] ]
link [var{dévastation_fr} var{Verwüstung_de} var{Zerstörung_de} var{αφανισμός_el} var{συντριβή_el} var{καταστροφή_el} var{devastação_pt} var{devastare_ro} var{devastación_es} var{asolamiento_es} var{arrasamiento_es} var{quebranto_es} var{devastation_en}] 'means var{The act of devastating, or the state of being devastated; a laying waste.}
{Waste or misapplication of the assets of a deceased person by an executor or administrator; devastavit.}: put'sense [name: {Waste or misapplication of the assets of a deceased person by an executor or administrator; devastavit.}]
{solidary_en}: put'word [name: {solidary}, lang: "en"]
{Having community of interests and responsibilities.}: put'sense [name: {Having community of interests and responsibilities.}]
{itself_en}: put'word [name: {itself}, lang: "en"]
{it; A thing as the object of a verb or preposition that also appears as the subject}: put'sense [name: {it; A thing as the object of a verb or preposition that also appears as the subject}]
[ {se_fr}, {von selbst_de}, {von allein_de}, {selbst_de}, {sich selbst_de}, {sé_it}, {se_pt}, {a si mesmo_pt}, {se_es}, {solo_es}, {a si mismo_es}, {por si mismo_es} ]: put.many 'word  [ [name:{se}, lang:{fr}], [name:{von selbst}, lang:{de}], [name:{von allein}, lang:{de}], [name:{selbst}, lang:{de}], [name:{sich selbst}, lang:{de}], [name:{sé}, lang:{it}], [name:{se}, lang:{pt}], [name:{a si mesmo}, lang:{pt}], [name:{se}, lang:{es}], [name:{solo}, lang:{es}], [name:{a si mismo}, lang:{es}], [name:{por si mismo}, lang:{es}] ]
link [var{se_fr} var{von selbst_de} var{von allein_de} var{selbst_de} var{sich selbst_de} var{sé_it} var{se_pt} var{a si mesmo_pt} var{se_es} var{solo_es} var{a si mismo_es} var{por si mismo_es} var{itself_en}] 'means var{it; A thing as the object of a verb or preposition that also appears as the subject}
{it; used to intensify the subject, especially to emphasize that it is the only participant in the predicate}: put'sense [name: {it; used to intensify the subject, especially to emphasize that it is the only participant in the predicate}]
[ {soi-même_fr}, {se stesso_it}, {sé stesso_it}, {ele/ela mesmo_pt}, {próprio_pt}, {própria_pt}, {sí mismo_es}, {mismo_es} ]: put.many 'word  [ [name:{soi-même}, lang:{fr}], [name:{se stesso}, lang:{it}], [name:{sé stesso}, lang:{it}], [name:{ele/ela mesmo}, lang:{pt}], [name:{próprio}, lang:{pt}], [name:{própria}, lang:{pt}], [name:{sí mismo}, lang:{es}], [name:{mismo}, lang:{es}] ]
link [var{se_fr} var{von selbst_de} var{von allein_de} var{selbst_de} var{sich selbst_de} var{sé_it} var{se_pt} var{a si mesmo_pt} var{se_es} var{solo_es} var{a si mismo_es} var{por si mismo_es} var{soi-même_fr} var{se stesso_it} var{sé stesso_it} var{ele/ela mesmo_pt} var{próprio_pt} var{própria_pt} var{sí mismo_es} var{mismo_es} var{itself_en}] 'means var{it; used to intensify the subject, especially to emphasize that it is the only participant in the predicate}
{it; used to refer back to an earlier subject}: put'sense [name: {it; used to refer back to an earlier subject}]
{audience_en}: put'word [name: {audience}, lang: "en"]
{A group of people within hearing; specifically, a large gathering of people listening to or watching a performance, speech, etc.}: put'sense [name: {A group of people within hearing; specifically, a large gathering of people listening to or watching a performance, speech, etc.}]
[ {assistance_fr}, {public_fr}, {auditoire_fr}, {Publikum_de}, {Zuschauer_de}, {Audienzen_de}, {ακροατήριο_el}, {κοινό_el}, {pubblico_it}, {uditorio_it}, {público_pt}, {plateia_pt}, {asistență_ro}, {audiencia_es}, {público_es} ]: put.many 'word  [ [name:{assistance}, lang:{fr}], [name:{public}, lang:{fr}], [name:{auditoire}, lang:{fr}], [name:{Publikum}, lang:{de}], [name:{Zuschauer}, lang:{de}], [name:{Audienzen}, lang:{de}], [name:{ακροατήριο}, lang:{el}], [name:{κοινό}, lang:{el}], [name:{pubblico}, lang:{it}], [name:{uditorio}, lang:{it}], [name:{público}, lang:{pt}], [name:{plateia}, lang:{pt}], [name:{asistență}, lang:{ro}], [name:{audiencia}, lang:{es}], [name:{público}, lang:{es}] ]
link [var{assistance_fr} var{public_fr} var{auditoire_fr} var{Publikum_de} var{Zuschauer_de} var{Audienzen_de} var{ακροατήριο_el} var{κοινό_el} var{pubblico_it} var{uditorio_it} var{público_pt} var{plateia_pt} var{asistență_ro} var{audiencia_es} var{público_es} var{audience_en}] 'means var{A group of people within hearing; specifically, a large gathering of people listening to or watching a performance, speech, etc.}
{Hearing; the condition or state of hearing or listening.}: put'sense [name: {Hearing; the condition or state of hearing or listening.}]
{A widespread or nationwide viewing or listening public, as of a TV or radio network or program.}: put'sense [name: {A widespread or nationwide viewing or listening public, as of a TV or radio network or program.}]
{A formal meeting with a state or religious dignitary.}: put'sense [name: {A formal meeting with a state or religious dignitary.}]
[ {audience_fr}, {Audienz_de}, {ακρόαση_el}, {udienza_it}, {audiência_pt}, {audiență_ro}, {audiencia_es} ]: put.many 'word  [ [name:{audience}, lang:{fr}], [name:{Audienz}, lang:{de}], [name:{ακρόαση}, lang:{el}], [name:{udienza}, lang:{it}], [name:{audiência}, lang:{pt}], [name:{audiență}, lang:{ro}], [name:{audiencia}, lang:{es}] ]
link [var{assistance_fr} var{public_fr} var{auditoire_fr} var{Publikum_de} var{Zuschauer_de} var{Audienzen_de} var{ακροατήριο_el} var{κοινό_el} var{pubblico_it} var{uditorio_it} var{público_pt} var{plateia_pt} var{asistență_ro} var{audiencia_es} var{público_es} var{audience_fr} var{Audienz_de} var{ακρόαση_el} var{udienza_it} var{audiência_pt} var{audiență_ro} var{audiencia_es} var{audience_en}] 'means var{A formal meeting with a state or religious dignitary.}
{The readership of a book or other written publication.}: put'sense [name: {The readership of a book or other written publication.}]
[ {lectorat_fr}, {Publikum_de}, {κοινό_el}, {pubblico_it}, {público_pt}, {público-alvo_pt}, {leitorado_pt}, {público_es} ]: put.many 'word  [ [name:{lectorat}, lang:{fr}], [name:{Publikum}, lang:{de}], [name:{κοινό}, lang:{el}], [name:{pubblico}, lang:{it}], [name:{público}, lang:{pt}], [name:{público-alvo}, lang:{pt}], [name:{leitorado}, lang:{pt}], [name:{público}, lang:{es}] ]
link [var{assistance_fr} var{public_fr} var{auditoire_fr} var{Publikum_de} var{Zuschauer_de} var{Audienzen_de} var{ακροατήριο_el} var{κοινό_el} var{pubblico_it} var{uditorio_it} var{público_pt} var{plateia_pt} var{asistență_ro} var{audiencia_es} var{público_es} var{audience_fr} var{Audienz_de} var{ακρόαση_el} var{udienza_it} var{audiência_pt} var{audiență_ro} var{audiencia_es} var{lectorat_fr} var{Publikum_de} var{κοινό_el} var{pubblico_it} var{público_pt} var{público-alvo_pt} var{leitorado_pt} var{público_es} var{audience_en}] 'means var{The readership of a book or other written publication.}
{A following.}: put'sense [name: {A following.}]
[ {κοινό_el}, {público_pt}, {audiencia_es} ]: put.many 'word  [ [name:{κοινό}, lang:{el}], [name:{público}, lang:{pt}], [name:{audiencia}, lang:{es}] ]
link [var{assistance_fr} var{public_fr} var{auditoire_fr} var{Publikum_de} var{Zuschauer_de} var{Audienzen_de} var{ακροατήριο_el} var{κοινό_el} var{pubblico_it} var{uditorio_it} var{público_pt} var{plateia_pt} var{asistență_ro} var{audiencia_es} var{público_es} var{audience_fr} var{Audienz_de} var{ακρόαση_el} var{udienza_it} var{audiência_pt} var{audiență_ro} var{audiencia_es} var{lectorat_fr} var{Publikum_de} var{κοινό_el} var{pubblico_it} var{público_pt} var{público-alvo_pt} var{leitorado_pt} var{público_es} var{κοινό_el} var{público_pt} var{audiencia_es} var{audience_en}] 'means var{A following.}
{An audiencia (judicial court of the Spanish empire), or the territory administered by it.}: put'sense [name: {An audiencia (judicial court of the Spanish empire), or the territory administered by it.}]
{diary_en}: put'word [name: {diary}, lang: "en"]
{A daily log of experiences, especially those of the writer.}: put'sense [name: {A daily log of experiences, especially those of the writer.}]
[ {journal intime_fr}, {Tagebuch_de}, {ημερολόγιο_el}, {diario_it}, {diário_pt}, {jurnal intim_ro}, {diario_es} ]: put.many 'word  [ [name:{journal intime}, lang:{fr}], [name:{Tagebuch}, lang:{de}], [name:{ημερολόγιο}, lang:{el}], [name:{diario}, lang:{it}], [name:{diário}, lang:{pt}], [name:{jurnal intim}, lang:{ro}], [name:{diario}, lang:{es}] ]
link [var{journal intime_fr} var{Tagebuch_de} var{ημερολόγιο_el} var{diario_it} var{diário_pt} var{jurnal intim_ro} var{diario_es} var{diary_en}] 'means var{A daily log of experiences, especially those of the writer.}
{A personal organizer or appointment diary.}: put'sense [name: {A personal organizer or appointment diary.}]
{Lasting for one day.}: put'sense [name: {Lasting for one day.}]
{To keep a diary or journal.}: put'sense [name: {To keep a diary or journal.}]
        ]

        preview fetch 'word ø
    ]
]

================================================
FILE: examples/sample2.art
================================================
do.import {grafito.art}

do [ graph.create "sample2" [
    honorEnN: put'Pos [p:"noun"]
    honorEsN: put'Pos [p:"noun"]
    dishonorEnN: put'Pos [p:"noun"]

    tokenS: put'Sense [s:"token of praise or respect"]

    link'has (put'Lemma [w:"honor" l:"en"]) honorEnN
    link'has (put'Lemma [w:"honor" l:"es"]) honorEsN
    link'has (put'Lemma [w:"dishonor" l:"en"]) dishonorEnN

    link'means honorEnN tokenS
    link'means honorEsN tokenS

    link'antonym dishonorEnN honorEnN

    preview fetch 'Pos ø
]]

================================================
FILE: examples/sample3.art
================================================
do.import {grafito.art}

do [
    graph.create "sample3" [
        nick: put'person [name: "Nick", sex: "m", birth: 1957]
        eleftheria: put'person [name: "Eleftheria", sex: "f", birth: 1960]
        angela: put'person [name: "Angela", sex: "f", birth: 1999]
        john: put'person [name: "John", sex: "m", birth: 1986]
        
        niovi: put'person [name: "Niovi", sex: "f", birth: 1928]
        johnA: put'person [name: "John", sex: "m", birth: 1933]

        tatie: put'person [name: "Tatie", sex: "m", birth: 1958]

        spaghetti: put'food [name: "Spaghetti"]
        pizza: put'food [name: "Pizza"]
        steak: put'food [name: "Steak"]

        link'marriedTo nick eleftheria
        link'marriedTo johnA niovi

        link'childOf @[angela john] @[nick eleftheria]
        link'childOf @[nick tatie] @[johnA niovi]

        link'likes @[john angela niovi] @[spaghetti]
        link'likes @[eleftheria johnA nick] @[pizza]
        link'likes @[john tatie nick] @[steak]

        preview fetch 'person ø
    ]
]

================================================
FILE: examples/sample4.art
================================================
;---------------------------------------------
; Import Grafito
; and ... let's rock'n'roll! :)
;---------------------------------------------
do.import {grafito.art}

do [
    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample4"
    ;---------------------------------------------
    graph.create "sample4" [

        ;---------------------------------------------
        ; Populate the database
        ;---------------------------------------------

        uk: put'country [name: "United Kingdom"]
        au: put'country [name: "Australia"]
        us: put'country [name: "United States"] 
        ca: put'country [name: "Canada"]

        nolan:    put'person [name: "Christopher Nolan" birthday: 1970 sex: "m"]
        pearce:   put'person [name: "Guy Pearce" birthday: 1967 sex: "m"]
        hanson:   put'person [name: "Curtis Hanson" birthday: 1945 sex: "m"]
        spacey:   put'person [name: "Kevin Spacey" birthday: 1959 sex: "m"]
        dicaprio: put'person [name: "Leonardo DiCaprio" birthday: 1974 sex: "m"]
        moss:     put'person [name: "Carrie-Ann Moss" birthday: 1967 sex: "f"]

        wach1: put'person [name: "Lana Wachowski" birthday: 1965 sex: "f"]
        wach2: put'person [name: "Lilly Wachowski" birthday: 1967 sex: "f"]

        memento:         put'movie [title: "Memento" year: 2000]
        inception:       put'movie [title: "Inception" year: 2010]
        laconfidential:  put'movie [title: "L.A. Confidential" year: 1997]
        matrix:          put'movie [title: "The Matrix" year: 1999]

        ;---------------------------------------------
        ; Define the relationships
        ; between our nodes
        ;---------------------------------------------

        link'isFrom nolan uk
        link'isFrom pearce au
        link'isFrom @[hanson spacey dicaprio wach1 wach2] us
        link'isFrom moss ca

        link'directed nolan @[memento inception]
        link'directed hanson laconfidential
        link'directed @[wach1 wach2] matrix

        link'actedIn pearce @[memento laconfidential]
        link'actedIn spacey laconfidential
        link'actedIn dicaprio inception
        link'actedIn moss @[memento matrix]

        ;---------------------------------------------
        ; Fetch every "person" &
        ; open the Desktop app for visualization
        ;---------------------------------------------
        
        preview fetch 'person ø
    ]
]

================================================
FILE: examples/sample4b.art
================================================
;---------------------------------------------
; Import Grafito
; and ... let's rock'n'roll! :)
;---------------------------------------------
do.import {grafito.art}

do [
    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample4"
    ;---------------------------------------------
    graph.create "sample4b" [
        ;---------------------
        ; HELPERS
        ;---------------------
        
        country: function [block] -> put 'country block
        person: function [block] -> put 'person block
        movie: function [block] -> put 'movie block

        country?: function [block] -> fetch 'country block
        person?: function [block] -> fetch 'person block
        movie?: function [block] -> fetch 'movie block

        ;---------------------------------------------
        ; Populate the database
        ;---------------------------------------------

        uk: country [name: "United Kingdom"]
        au: country [name: "Australia"]
        us: country [name: "United States"] 
        ca: country [name: "Canada"]

        nolan:    person [name: "Christopher Nolan" birthday: 1970 sex: "m"]
        pearce:   person [name: "Guy Pearce" birthday: 1967 sex: "m"]
        hanson:   person [name: "Curtis Hanson" birthday: 1945 sex: "m"]
        spacey:   person [name: "Kevin Spacey" birthday: 1959 sex: "m"]
        dicaprio: person [name: "Leonardo DiCaprio" birthday: 1974 sex: "m"]
        moss:     person [name: "Carrie-Ann Moss" birthday: 1967 sex: "f"]

        wach1: person [name: "Lana Wachowski" birthday: 1965 sex: "f"]
        wach2: person [name: "Lilly Wachowski" birthday: 1967 sex: "f"]

        memento:         movie [title: "Memento" year: 2000]
        inception:       movie [title: "Inception" year: 2010]
        laconfidential:  movie [title: "L.A. Confidential" year: 1997]
        matrix:          movie [title: "The Matrix" year: 1999]

        ;---------------------------------------------
        ; Define the relationships
        ; between our nodes
        ;---------------------------------------------

        link'isFrom nolan uk
        link'isFrom pearce au
        link'isFrom @[hanson spacey dicaprio wach1 wach2] us
        link'isFrom moss ca

        link'directed nolan @[memento inception]
        link'directed hanson laconfidential
        link'directed @[wach1 wach2] matrix

        link'actedIn pearce @[memento laconfidential]
        link'actedIn spacey laconfidential
        link'actedIn dicaprio inception
        link'actedIn moss @[memento matrix]

        ;---------------------------------------------
        ; Fetch every "person" &
        ; open the Desktop app for visualization
        ;---------------------------------------------

        ; person? [isFrom: first country? -> name: "United States" name: -> contains: "d"
        ; ] ; returns DiCaprio

        ; person? [
        ;     isFrom: country? "United States" 
        ;     name: -> contains: "d"
        ; ] ; should return DiCaprio

        ; pythonic (potentially)
        ; person? 
        ;     isFrom: country? 
        ;         name: 
        ;             contains: "United"

        ; person? [
        ;     isFrom: country? [
        ;         name: [
        ;             contains: "United"
        ;         ]
        ;     ] 
        ;     name: [
        ;         contains: "w"
        ;     ]
        ; ]
        
        preview fetch 'person ø
    ]
]

================================================
FILE: examples/sample4c.art
================================================
;---------------------------------------------
; Import Grafito
; and ... let's rock'n'roll! :)
;---------------------------------------------
do.import {grafito.art}

do [

    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample4"
    ;---------------------------------------------
    graph .create
          .helpers: [person movie country] 
          "sample4c" 
    [
        ;---------------------------------------------
        ; Populate the database
        ;---------------------------------------------

        uk: country.new [name: "United Kingdom"]
        au: country.new [name: "Australia"]
        us: country.new [name: "United States"] 
        ca: country.new [name: "Canada"]

        nolan:    person.new [name: "Christopher Nolan" birthday: 1970 sex: "m"]
        pearce:   person.new [name: "Guy Pearce" birthday: 1967 sex: "m"]
        hanson:   person.new [name: "Curtis Hanson" birthday: 1945 sex: "m"]
        spacey:   person.new [name: "Kevin Spacey" birthday: 1959 sex: "m"]
        dicaprio: person.new [name: "Leonardo DiCaprio" birthday: 1974 sex: "m"]
        moss:     person.new [name: "Carrie-Ann Moss" birthday: 1967 sex: "f"]
        kidman:   person.new [name: "Nicole Kidman" birthday: 1967 sex: "f"]
        cruise:   person.new [name: "Tom Cruise" birthday: 1962 sex: "m"]
        kubrick:  person.new [name: "Stanley Kubrick" birthday: 1928 sex: "m"]

        wach1: person.new [name: "Lana Wachowski" birthday: 1965 sex: "f"]
        wach2: person.new [name: "Lilly Wachowski" birthday: 1967 sex: "f"]

        memento:         movie.new [title: "Memento" year: 2000]
        inception:       movie.new [title: "Inception" year: 2010]
        laconfidential:  movie.new [title: "L.A. Confidential" year: 1997]
        matrix:          movie.new [title: "The Matrix" year: 1999]
        eyes:            movie.new [title: "Eyes Wide Shut" year: 1999]

        ;---------------------------------------------
        ; Define the relationships
        ; between our nodes
        ;---------------------------------------------

        link'isFrom nolan uk
        link'isFrom @[pearce kidman] au
        link'isFrom @[hanson spacey dicaprio wach1 wach2 cruise kubrick] us
        link'isFrom moss ca

        link'directed nolan @[memento inception]
        link'directed hanson laconfidential
        link'directed @[wach1 wach2] matrix
        link'directed kubrick eyes

        link'actedIn pearce @[memento laconfidential]
        link'actedIn spacey laconfidential
        link'actedIn dicaprio inception
        link'actedIn moss @[memento matrix]
        link'actedIn @[cruise kidman] eyes

        link'origin memento us
        link'origin laconfidential us 
        link'origin matrix @[us au]
        link'origin @[inception eyes] @[uk us]

        link'sibling wach1 wach2
        link'married cruise kidman

        ;---------------------------------------------
        ; Fetch every "person" &
        ; open the Desktop app for visualization
        ;---------------------------------------------
        
        preview fetch 'person ø
    ]
]

================================================
FILE: examples/sample4d.art
================================================
;---------------------------------------------
; Import Grafito
; and ... let's rock'n'roll! :)
;---------------------------------------------
do.import {grafito.art}

do [
    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample4"
    ;---------------------------------------------
    graph.create "sample4b" [
        ;---------------------
        ; HELPERS
        ;---------------------
        
        newCountry: function [block] -> put 'country block
        newPerson: function [block] -> put 'person block
        newMovie: function [block] -> put 'movie block

        country: function [block] -> fetch 'country block
        person: function [block] -> fetch 'person block
        movie: function [block] -> fetch 'movie block

        ;---------------------------------------------
        ; Populate the database
        ;---------------------------------------------

        uk: newCountry [name: "United Kingdom"]
        au: newCountry [name: "Australia"]
        us: newCountry [name: "United States"] 
        ca: newCountry [name: "Canada"]

        nolan:    newPerson [name: "Christopher Nolan" birthday: 1970 sex: "m"]
        pearce:   newPerson [name: "Guy Pearce" birthday: 1967 sex: "m"]
        hanson:   newPerson [name: "Curtis Hanson" birthday: 1945 sex: "m"]
        spacey:   newPerson [name: "Kevin Spacey" birthday: 1959 sex: "m"]
        dicaprio: newPerson [name: "Leonardo DiCaprio" birthday: 1974 sex: "m"]
        moss:     newPerson [name: "Carrie-Ann Moss" birthday: 1967 sex: "f"]

        wach1: newPerson [name: "Lana Wachowski" birthday: 1965 sex: "f"]
        wach2: newPerson [name: "Lilly Wachowski" birthday: 1967 sex: "f"]

        memento:         newMovie [title: "Memento" year: 2000]
        inception:       newMovie [title: "Inception" year: 2010]
        laconfidential:  newMovie [title: "L.A. Confidential" year: 1997]
        matrix:          newMovie [title: "The Matrix" year: 1999]

        ;---------------------------------------------
        ; Define the relationships
        ; between our nodes
        ;---------------------------------------------

        link'isFrom nolan uk
        link'isFrom pearce au
        link'isFrom @[hanson spacey dicaprio wach1 wach2] us
        link'isFrom moss ca

        link'directed nolan @[memento inception]
        link'directed hanson laconfidential
        link'directed @[wach1 wach2] matrix

        link'actedIn pearce @[memento laconfidential]
        link'actedIn spacey laconfidential
        link'actedIn dicaprio inception
        link'actedIn moss @[memento matrix]

        ;---------------------------------------------
        ; Fetch every "person" &
        ; open the Desktop app for visualization
        ;---------------------------------------------

        ; person? [isFrom: first country? -> name: "United States" name: -> contains: "d"
        ; ] ; returns DiCaprio

        ; person? [
        ;     isFrom: country? "United States" 
        ;     name: -> contains: "d"
        ; ] ; should return DiCaprio

        ; pythonic (potentially)
        ; person? 
        ;     isFrom: country? 
        ;         name: 
        ;             contains: "United"

        ; person? [
        ;     isFrom: country? [
        ;         name: [
        ;             contains: "United"
        ;         ]
        ;     ] 
        ;     name: [
        ;         contains: "w"
        ;     ]
        ; ]
        
        preview person ø
    ]
]

================================================
FILE: examples/sample5.art
================================================
do.import {grafito.art}

do [
    graph.create "sample5" [
        lemma8b257cd027: put 'lemma [w: {book} l: {en}]
        pos3722df1028: put'pos [p: {noun}]
        link'is lemma8b257cd027 pos3722df1028
        sensef86f08d2e2: put'sense [s:{collection of sheets of paper bound together containing printed or written material}]
        link'means pos3722df1028 sensef86f08d2e2
        lemma493be85c29: put'lemma [w: {كتاب} l: {apc}]
        pose499631911: put'pos [p: {noun}]
        link'is lemma493be85c29 pose499631911
        link'means pose499631911 sensef86f08d2e2
        lemma693a742816: put'lemma [w: {ᏗᎪᏪᎵ} l: {chr}]
        pos22d786790a: put'pos [p: {noun}]
        link'is lemma693a742816 pos22d786790a
        link'means pos22d786790a sensef86f08d2e2
        lemma26fd5156d7: put'lemma [w: {書} l: {gan}]
        posf6b3172996: put'pos [p: {noun}]
        link'is lemma26fd5156d7 posf6b3172996
        link'means posf6b3172996 sensef86f08d2e2
        lemma9a3a17ffe8: put'lemma [w: {书} l: {gan}]
        pos9b9ff30210: put'pos [p: {noun}]
        link'is lemma9a3a17ffe8 pos9b9ff30210
        link'means pos9b9ff30210 sensef86f08d2e2
        lemma3027ada842: put'lemma [w: {書} l: {cjy}]
        pose7e0f1482c: put'pos [p: {noun}]
        link'is lemma3027ada842 pose7e0f1482c
        link'means pose7e0f1482c sensef86f08d2e2
        lemmafb0ebfc12a: put'lemma [w: {书} l: {cjy}]
        pos83a0d216aa: put'pos [p: {noun}]
        link'is lemmafb0ebfc12a pos83a0d216aa
        link'means pos83a0d216aa sensef86f08d2e2
        lemmafdf3beed04: put'lemma [w: {書} l: {mnp}]
        pos49fb33a5c6: put'pos [p: {noun}]
        link'is lemmafdf3beed04 pos49fb33a5c6
        link'means pos49fb33a5c6 sensef86f08d2e2
        lemmae8ba2100e7: put'lemma [w: {书} l: {mnp}]
        pos45b2f78257: put'pos [p: {noun}]
        link'is lemmae8ba2100e7 pos45b2f78257
        link'means pos45b2f78257 sensef86f08d2e2
        lemmabfb684d055: put'lemma [w: {書} l: {hsn}]
        pos21c619ca73: put'pos [p: {noun}]
        link'is lemmabfb684d055 pos21c619ca73
        link'means pos21c619ca73 sensef86f08d2e2
        lemma49e788e226: put'lemma [w: {书} l: {hsn}]
        pos53828a28f1: put'pos [p: {noun}]
        link'is lemma49e788e226 pos53828a28f1
        link'means pos53828a28f1 sensef86f08d2e2
        lemma3de6f10595: put'lemma [w: {𞤣𞤫𞤬𞤼𞤫𞤪𞤫} l: {ff}]
        pos61a1c07120: put'pos [p: {noun}]
        link'is lemma3de6f10595 pos61a1c07120
        link'means pos61a1c07120 sensef86f08d2e2
        lemmadd03b675a5: put'lemma [w: {deftere} l: {ff}]
        pos2ba9f770dd: put'pos [p: {noun}]
        link'is lemmadd03b675a5 pos2ba9f770dd
        link'means pos2ba9f770dd sensef86f08d2e2
        lemmab6adde549d: put'lemma [w: {ブック} l: {ja}]
        posefc5173c6e: put'pos [p: {noun}]
        link'is lemmab6adde549d posefc5173c6e
        link'means posefc5173c6e sensef86f08d2e2
        lemma979bc5909e: put'lemma [w: {buku} l: {jv}]
        pos53c5fefdd3: put'pos [p: {noun}]
        link'is lemma979bc5909e pos53c5fefdd3
        link'means pos53c5fefdd3 sensef86f08d2e2
        lemma77d51b75ed: put'lemma [w: {layang} l: {jv}]
        pose41277bf28: put'pos [p: {noun}]
        link'is lemma77d51b75ed pose41277bf28
        link'means pose41277bf28 sensef86f08d2e2
        lemmada9979caf2: put'lemma [w: {serat} l: {jv}]
        pos89453006b2: put'pos [p: {noun}]
        link'is lemmada9979caf2 pos89453006b2
        link'means pos89453006b2 sensef86f08d2e2
        lemmaf9128c3a63: put'lemma [w: {hun} l: {tr}]
        posc360a20e09: put'pos [p: {noun}]
        link'is lemmaf9128c3a63 posc360a20e09
        link'means posc360a20e09 sensef86f08d2e2
        senseb2f79ce965: put'sense [s:{record of betting}]
        link'means pos3722df1028 senseb2f79ce965
        sensee629d8b849: put'sense [s:{convenient collection of small paper items, such as stamps}]
        link'means pos3722df1028 sensee629d8b849
        sense92e15899d7: put'sense [s:{major division of a published work, larger than a chapter}]
        link'means pos3722df1028 sense92e15899d7
        sensea5f1ab78b7: put'sense [s:{script of a musical}]
        link'means pos3722df1028 sensea5f1ab78b7
        sense310968d56f: put'sense [s:{usually in plural: records of the accounts of a business}]
        link'means pos3722df1028 sense310968d56f
        pos7f8fc0a70a: put'pos [p: {verb}]
        link'is lemma8b257cd027 pos7f8fc0a70a
        senseda38a026ab: put'sense [s:{to reserve}]
        link'means pos7f8fc0a70a senseda38a026ab
        lemma5ffab7eaf1: put'lemma [w: {حَجَزَ} l: {ar}]
        pos8f96b36193: put'pos [p: {verb}]
        link'is lemma5ffab7eaf1 pos8f96b36193
        link'means pos8f96b36193 senseda38a026ab
        lemmab052952b74: put'lemma [w: {запазвам} l: {bg}]
        pos400e2c04fa: put'pos [p: {verb}]
        link'is lemmab052952b74 pos400e2c04fa
        link'means pos400e2c04fa senseda38a026ab
        lemmac68abfa48d: put'lemma [w: {reservar} l: {ca}]
        pos718825f926: put'pos [p: {verb}]
        link'is lemmac68abfa48d pos718825f926
        link'means pos718825f926 senseda38a026ab
        lemma99b2986739: put'lemma [w: {預訂} l: {cmn}]
        pos4cd050d838: put'pos [p: {verb}]
        link'is lemma99b2986739 pos4cd050d838
        link'means pos4cd050d838 senseda38a026ab
        lemmafa2b938743: put'lemma [w: {预订} l: {cmn}]
        posb4eb4eba86: put'pos [p: {verb}]
        link'is lemmafa2b938743 posb4eb4eba86
        link'means posb4eb4eba86 senseda38a026ab
        lemma0f0d44abcf: put'lemma [w: {rezervovat} l: {cs}]
        pos162f335187: put'pos [p: {verb}]
        link'is lemma0f0d44abcf pos162f335187
        link'means pos162f335187 senseda38a026ab
        lemmaef137e0718: put'lemma [w: {zarezervovat} l: {cs}]
        posf6d7b3a598: put'pos [p: {verb}]
        link'is lemmaef137e0718 posf6d7b3a598
        link'means posf6d7b3a598 senseda38a026ab
        lemma2692b18099: put'lemma [w: {zabukovat} l: {cs}]
        poscc0eb62b54: put'pos [p: {verb}]
        link'is lemma2692b18099 poscc0eb62b54
        link'means poscc0eb62b54 senseda38a026ab
        lemma1654d11c38: put'lemma [w: {reservere} l: {da}]
        pos9f550e3669: put'pos [p: {verb}]
        link'is lemma1654d11c38 pos9f550e3669
        link'means pos9f550e3669 senseda38a026ab
        lemma3eb280bc1c: put'lemma [w: {bestille} l: {da}]
        pos269495d662: put'pos [p: {verb}]
        link'is lemma3eb280bc1c pos269495d662
        link'means pos269495d662 senseda38a026ab
        lemmaa5e7be2c82: put'lemma [w: {boeken} l: {nl}]
        pos9fb854c050: put'pos [p: {verb}]
        link'is lemmaa5e7be2c82 pos9fb854c050
        link'means pos9fb854c050 senseda38a026ab
        lemmac9f87cbf24: put'lemma [w: {reserveren} l: {nl}]
        pos66b6ed688a: put'pos [p: {verb}]
        link'is lemmac9f87cbf24 pos66b6ed688a
        link'means pos66b6ed688a senseda38a026ab
        lemmabbc5f17f49: put'lemma [w: {rezervi} l: {eo}]
        pos37d07f5e83: put'pos [p: {verb}]
        link'is lemmabbc5f17f49 pos37d07f5e83
        link'means pos37d07f5e83 senseda38a026ab
        lemmab7f16f3b0b: put'lemma [w: {varata} l: {fi}]
        pos810ea59d98: put'pos [p: {verb}]
        link'is lemmab7f16f3b0b pos810ea59d98
        link'means pos810ea59d98 senseda38a026ab
        lemmaea73a2348c: put'lemma [w: {tehdä varaus} l: {fi}]
        pos8c953c4fbb: put'pos [p: {verb}]
        link'is lemmaea73a2348c pos8c953c4fbb
        link'means pos8c953c4fbb senseda38a026ab
        lemmaa6e05310a1: put'lemma [w: {réserver} l: {fr}]
        posdb48c2f6f9: put'pos [p: {verb}]
        link'is lemmaa6e05310a1 posdb48c2f6f9
        link'means posdb48c2f6f9 senseda38a026ab
        lemma57ee34b617: put'lemma [w: {reservar} l: {gl}]
        posedc5b0780b: put'pos [p: {verb}]
        link'is lemma57ee34b617 posedc5b0780b
        link'means posedc5b0780b senseda38a026ab
        lemma20e6bcda51: put'lemma [w: {რეგისტრირება} l: {ka}]
        posa462660823: put'pos [p: {verb}]
        link'is lemma20e6bcda51 posa462660823
        link'means posa462660823 senseda38a026ab
        lemmab7b174e6b7: put'lemma [w: {რეგისტრაციაში გატარება} l: {ka}]
        pos7f7fb6d403: put'pos [p: {verb}]
        link'is lemmab7b174e6b7 pos7f7fb6d403
        link'means pos7f7fb6d403 senseda38a026ab
        lemmad0bd3f2e5f: put'lemma [w: {დაბრონვა} l: {ka}]
        pos217871f31e: put'pos [p: {verb}]
        link'is lemmad0bd3f2e5f pos217871f31e
        link'means pos217871f31e senseda38a026ab
        lemma419efd5922: put'lemma [w: {ბრონირება} l: {ka}]
        pos8f34f3db49: put'pos [p: {verb}]
        link'is lemma419efd5922 pos8f34f3db49
        link'means pos8f34f3db49 senseda38a026ab
        lemma9ce011469e: put'lemma [w: {buchen} l: {de}]
        posbc3dcacdaa: put'pos [p: {verb}]
        link'is lemma9ce011469e posbc3dcacdaa
        link'means posbc3dcacdaa senseda38a026ab
        lemma4adc255247: put'lemma [w: {reservieren} l: {de}]
        posabf9ceb9e3: put'pos [p: {verb}]
        link'is lemma4adc255247 posabf9ceb9e3
        link'means posabf9ceb9e3 senseda38a026ab
        lemma8142abc97f: put'lemma [w: {κρατώ} l: {el}]
        pos29eb57cafc: put'pos [p: {verb}]
        link'is lemma8142abc97f pos29eb57cafc
        link'means pos29eb57cafc senseda38a026ab
        lemma64c115b11d: put'lemma [w: {προκρατ} l: {el}]
        posf6043dbd1d: put'pos [p: {verb}]
        link'is lemma64c115b11d posf6043dbd1d
        link'means posf6043dbd1d senseda38a026ab
        lemma0c080e4747: put'lemma [w: {κλείνω} l: {el}]
        pos9be526592e: put'pos [p: {verb}]
        link'is lemma0c080e4747 pos9be526592e
        link'means pos9be526592e senseda38a026ab
        lemma1445c3359b: put'lemma [w: {रिज़र्व करना} l: {hi}]
        pos2652d23622: put'pos [p: {verb}]
        link'is lemma1445c3359b pos2652d23622
        link'means pos2652d23622 senseda38a026ab
        lemmad879fb0956: put'lemma [w: {lefoglal} l: {hu}]
        posfa7a7ccc22: put'pos [p: {verb}]
        link'is lemmad879fb0956 posfa7a7ccc22
        link'means posfa7a7ccc22 senseda38a026ab
        lemmad3a1fe2739: put'lemma [w: {foglal} l: {hu}]
        posc4b80a955a: put'pos [p: {verb}]
        link'is lemmad3a1fe2739 posc4b80a955a
        link'means posc4b80a955a senseda38a026ab
        lemmaf9d257fe1b: put'lemma [w: {megvált} l: {hu}]
        pos8272261f05: put'pos [p: {verb}]
        link'is lemmaf9d257fe1b pos8272261f05
        link'means pos8272261f05 senseda38a026ab
        lemma0628303c25: put'lemma [w: {vált} l: {hu}]
        pos91a5d1faa1: put'pos [p: {verb}]
        link'is lemma0628303c25 pos91a5d1faa1
        link'means pos91a5d1faa1 senseda38a026ab
        lemmad664047b50: put'lemma [w: {előjegyez} l: {hu}]
        pos172fda6753: put'pos [p: {verb}]
        link'is lemmad664047b50 pos172fda6753
        link'means pos172fda6753 senseda38a026ab
        lemma0fcd290db9: put'lemma [w: {pesan} l: {id}]
        pos3fc7440682: put'pos [p: {verb}]
        link'is lemma0fcd290db9 pos3fc7440682
        link'means pos3fc7440682 senseda38a026ab
        lemma285918e9d7: put'lemma [w: {reservar} l: {ia}]
        pos71e7aa6831: put'pos [p: {verb}]
        link'is lemma285918e9d7 pos71e7aa6831
        link'means pos71e7aa6831 senseda38a026ab
        lemmab388c1d5f4: put'lemma [w: {cuir in áirithe} l: {ga}]
        posc087fab3ae: put'pos [p: {verb}]
        link'is lemmab388c1d5f4 posc087fab3ae
        link'means posc087fab3ae senseda38a026ab
        lemma50000a8536: put'lemma [w: {prenotare} l: {it}]
        pos95467c3689: put'pos [p: {verb}]
        link'is lemma50000a8536 pos95467c3689
        link'means pos95467c3689 senseda38a026ab
        lemmae07803f170: put'lemma [w: {riservare} l: {it}]
        pos6a7ad647ae: put'pos [p: {verb}]
        link'is lemmae07803f170 pos6a7ad647ae
        link'means pos6a7ad647ae senseda38a026ab
        lemma4452d5f6db: put'lemma [w: {予約する} l: {ja}]
        pos454ca32c7b: put'pos [p: {verb}]
        link'is lemma4452d5f6db pos454ca32c7b
        link'means pos454ca32c7b senseda38a026ab
        lemma8fcd8726fe: put'lemma [w: {예약하다} l: {ko}]
        pos4a5a86c7bd: put'pos [p: {verb}]
        link'is lemma8fcd8726fe pos4a5a86c7bd
        link'means pos4a5a86c7bd senseda38a026ab
        lemma2433e61607: put'lemma [w: {豫約} l: {ko}]
        pos6473e71a0d: put'pos [p: {verb}]
        link'is lemma2433e61607 pos6473e71a0d
        link'means pos6473e71a0d senseda38a026ab
        lemma0b78bda757: put'lemma [w: {하다} l: {ko}]
        pos1a5ff82ae5: put'pos [p: {verb}]
        link'is lemma0b78bda757 pos1a5ff82ae5
        link'means pos1a5ff82ae5 senseda38a026ab
        lemma9c4463e264: put'lemma [w: {резерви́ра} l: {mk}]
        pos53276c2faa: put'pos [p: {verb}]
        link'is lemma9c4463e264 pos53276c2faa
        link'means pos53276c2faa senseda38a026ab
        lemma00530c554d: put'lemma [w: {закажува} l: {mk}]
        pos40bedcde3d: put'pos [p: {verb}]
        link'is lemma00530c554d pos40bedcde3d
        link'means pos40bedcde3d senseda38a026ab
        lemma34f6b2ffdd: put'lemma [w: {tempah} l: {ms}]
        pos2d7cbe1793: put'pos [p: {verb}]
        link'is lemma34f6b2ffdd pos2d7cbe1793
        link'means pos2d7cbe1793 senseda38a026ab
        lemmad6f29905b6: put'lemma [w: {tāpui} l: {mi}]
        pos23a68a8d2b: put'pos [p: {verb}]
        link'is lemmad6f29905b6 pos23a68a8d2b
        link'means pos23a68a8d2b senseda38a026ab
        lemmaf698af452b: put'lemma [w: {ukaɗimia} l: {zdj}]
        pos6e1ac881a5: put'pos [p: {verb}]
        link'is lemmaf698af452b pos6e1ac881a5
        link'means pos6e1ac881a5 senseda38a026ab
        lemmac034b1f0e8: put'lemma [w: {boutchi} l: {nrf}]
        pos712ca843ca: put'pos [p: {verb}]
        link'is lemmac034b1f0e8 pos712ca843ca
        link'means pos712ca843ca senseda38a026ab
        lemma77255589bd: put'lemma [w: {bestille} l: {no}]
        posd2ec255c53: put'pos [p: {verb}]
        link'is lemma77255589bd posd2ec255c53
        link'means posd2ec255c53 senseda38a026ab
        lemma0536ef5117: put'lemma [w: {reservere} l: {no}]
        pos93c775435f: put'pos [p: {verb}]
        link'is lemma0536ef5117 pos93c775435f
        link'means pos93c775435f senseda38a026ab
        lemmafc32ea3c6b: put'lemma [w: {رزرو کردن} l: {fa}]
        pos75d89b17a4: put'pos [p: {verb}]
        link'is lemmafc32ea3c6b pos75d89b17a4
        link'means pos75d89b17a4 senseda38a026ab
        lemma0d1a467c92: put'lemma [w: {rezerwować} l: {pl}]
        pos6b76db03c3: put'pos [p: {verb}]
        link'is lemma0d1a467c92 pos6b76db03c3
        link'means pos6b76db03c3 senseda38a026ab
        lemma30625f22fd: put'lemma [w: {zarezerwować} l: {pl}]
        pos283289ef18: put'pos [p: {verb}]
        link'is lemma30625f22fd pos283289ef18
        link'means pos283289ef18 senseda38a026ab
        lemma7bd6f153d5: put'lemma [w: {bukować} l: {pl}]
        pos6e5c9329a8: put'pos [p: {verb}]
        link'is lemma7bd6f153d5 pos6e5c9329a8
        link'means pos6e5c9329a8 senseda38a026ab
        lemma5e6b1a766b: put'lemma [w: {zabukować} l: {pl}]
        pos002a1fcd8e: put'pos [p: {verb}]
        link'is lemma5e6b1a766b pos002a1fcd8e
        link'means pos002a1fcd8e senseda38a026ab
        lemma26b0f4e842: put'lemma [w: {reservar} l: {pt}]
        pos12c0f1ee7a: put'pos [p: {verb}]
        link'is lemma26b0f4e842 pos12c0f1ee7a
        link'means pos12c0f1ee7a senseda38a026ab
        lemma879ebd4b4c: put'lemma [w: {rezerva} l: {ro}]
        pos926bdd0d33: put'pos [p: {verb}]
        link'is lemma879ebd4b4c pos926bdd0d33
        link'means pos926bdd0d33 senseda38a026ab
        lemmace2406de31: put'lemma [w: {брони́ровать} l: {ru}]
        posb84f90110d: put'pos [p: {verb}]
        link'is lemmace2406de31 posb84f90110d
        link'means posb84f90110d senseda38a026ab
        lemmae4ed260f84: put'lemma [w: {заброни́ровать} l: {ru}]
        pose74deb4481: put'pos [p: {verb}]
        link'is lemmae4ed260f84 pose74deb4481
        link'means pose74deb4481 senseda38a026ab
        lemma8f820f7a26: put'lemma [w: {резерви́ровать} l: {ru}]
        pos0347e3dc8e: put'pos [p: {verb}]
        link'is lemma8f820f7a26 pos0347e3dc8e
        link'means pos0347e3dc8e senseda38a026ab
        lemma708016700d: put'lemma [w: {зарезерви́ровать} l: {ru}]
        pos1390c3be31: put'pos [p: {verb}]
        link'is lemma708016700d pos1390c3be31
        link'means pos1390c3be31 senseda38a026ab
        lemma530ab298bb: put'lemma [w: {зака́зывать} l: {ru}]
        pos7067c6efa1: put'pos [p: {verb}]
        link'is lemma530ab298bb pos7067c6efa1
        link'means pos7067c6efa1 senseda38a026ab
        lemma2b81adebcc: put'lemma [w: {заказа́ть} l: {ru}]
        poseafb3e54d8: put'pos [p: {verb}]
        link'is lemma2b81adebcc poseafb3e54d8
        link'means poseafb3e54d8 senseda38a026ab
        lemma27f3081168: put'lemma [w: {predbilježiti} l: {sh}]
        pos2e39921f77: put'pos [p: {verb}]
        link'is lemma27f3081168 pos2e39921f77
        link'means pos2e39921f77 senseda38a026ab
        lemmac390608b64: put'lemma [w: {rezervirati} l: {sh}]
        pos7ca2e7b7a1: put'pos [p: {verb}]
        link'is lemmac390608b64 pos7ca2e7b7a1
        link'means pos7ca2e7b7a1 senseda38a026ab
        lemma0fa6291cae: put'lemma [w: {rezervovať} l: {sk}]
        pos27093a6607: put'pos [p: {verb}]
        link'is lemma0fa6291cae pos27093a6607
        link'means pos27093a6607 senseda38a026ab
        lemma9b51132bd5: put'lemma [w: {zarezervovať} l: {sk}]
        pos3afcdc8775: put'pos [p: {verb}]
        link'is lemma9b51132bd5 pos3afcdc8775
        link'means pos3afcdc8775 senseda38a026ab
        lemmadade0190a1: put'lemma [w: {reservar} l: {es}]
        pos1a3816d253: put'pos [p: {verb}]
        link'is lemmadade0190a1 pos1a3816d253
        link'means pos1a3816d253 senseda38a026ab
        lemmabe96b9eda9: put'lemma [w: {boka} l: {sv}]
        pos8abf78a031: put'pos [p: {verb}]
        link'is lemmabe96b9eda9 pos8abf78a031
        link'means pos8abf78a031 senseda38a026ab
        lemma66f4963c8f: put'lemma [w: {yer ayırma} l: {tr}]
        pos3b7b578927: put'pos [p: {verb}]
        link'is lemma66f4963c8f pos3b7b578927
        link'means pos3b7b578927 senseda38a026ab
        lemma1befa0db9f: put'lemma [w: {kitap} l: {tr}]
        pos5945f4a88c: put'pos [p: {verb}]
        link'is lemma1befa0db9f pos5945f4a88c
        link'means pos5945f4a88c senseda38a026ab
        lemmab0303cee06: put'lemma [w: {cadw} l: {cy}]
        pos36d8a0e63e: put'pos [p: {verb}]
        link'is lemmab0303cee06 pos36d8a0e63e
        link'means pos36d8a0e63e senseda38a026ab
        sense8095a9e6b4: put'sense [s:{to write down, register, record}]
        link'means pos7f8fc0a70a sense8095a9e6b4
        lemmad852354987: put'lemma [w: {записвам} l: {bg}]
        pos8819b3eae4: put'pos [p: {verb}]
        link'is lemmad852354987 pos8819b3eae4
        link'means pos8819b3eae4 sense8095a9e6b4
        lemmab005141cd0: put'lemma [w: {anotar} l: {ca}]
        pos97495274a8: put'pos [p: {verb}]
        link'is lemmab005141cd0 pos97495274a8
        link'means pos97495274a8 sense8095a9e6b4
        lemma0e15b367cc: put'lemma [w: {nedskrive} l: {da}]
        pos97d056b11a: put'pos [p: {verb}]
        link'is lemma0e15b367cc pos97d056b11a
        link'means pos97d056b11a sense8095a9e6b4
        lemmacdefb85839: put'lemma [w: {notere} l: {da}]
        posfdd3b63753: put'pos [p: {verb}]
        link'is lemmacdefb85839 posfdd3b63753
        link'means posfdd3b63753 sense8095a9e6b4
        lemmaa25f253805: put'lemma [w: {bogføre} l: {da}]
        posade3600c74: put'pos [p: {verb}]
        link'is lemmaa25f253805 posade3600c74
        link'means posade3600c74 sense8095a9e6b4
        lemma304f17307c: put'lemma [w: {te boek stellen} l: {nl}]
        posd31eb16f3f: put'pos [p: {verb}]
        link'is lemma304f17307c posd31eb16f3f
        link'means posd31eb16f3f sense8095a9e6b4
        lemma755a870552: put'lemma [w: {noteren} l: {nl}]
        pos6fc05d6155: put'pos [p: {verb}]
        link'is lemma755a870552 pos6fc05d6155
        link'means pos6fc05d6155 sense8095a9e6b4
        lemma8b3d7ecf85: put'lemma [w: {kirjoittaa ylös} l: {fi}]
        pos3c91c6d9bc: put'pos [p: {verb}]
        link'is lemma8b3d7ecf85 pos3c91c6d9bc
        link'means pos3c91c6d9bc sense8095a9e6b4
        lemma2c97454540: put'lemma [w: {kirjata} l: {fi}]
        posc1827b1993: put'pos [p: {verb}]
        link'is lemma2c97454540 posc1827b1993
        link'means posc1827b1993 sense8095a9e6b4
        lemma7e3ca6f4f8: put'lemma [w: {kirjoittaa muistiin} l: {fi}]
        pos9e0e710234: put'pos [p: {verb}]
        link'is lemma7e3ca6f4f8 pos9e0e710234
        link'means pos9e0e710234 sense8095a9e6b4
        lemma26cbdd3150: put'lemma [w: {rekisteröidä} l: {fi}]
        posf3119d023c: put'pos [p: {verb}]
        link'is lemma26cbdd3150 posf3119d023c
        link'means posf3119d023c sense8095a9e6b4
        lemmaf68d609965: put'lemma [w: {anotar} l: {gl}]
        pos84cd315e51: put'pos [p: {verb}]
        link'is lemmaf68d609965 pos84cd315e51
        link'means pos84cd315e51 sense8095a9e6b4
        lemma0de80bc46e: put'lemma [w: {notieren} l: {de}]
        pos84a5f64c2e: put'pos [p: {verb}]
        link'is lemma0de80bc46e pos84a5f64c2e
        link'means pos84a5f64c2e sense8095a9e6b4
        lemmaa10d262aaa: put'lemma [w: {schreiben} l: {de}]
        pos5b1b03041e: put'pos [p: {verb}]
        link'is lemmaa10d262aaa pos5b1b03041e
        link'means pos5b1b03041e sense8095a9e6b4
        lemma540a841c3d: put'lemma [w: {γράφω} l: {el}]
        pos48be3a8c62: put'pos [p: {verb}]
        link'is lemma540a841c3d pos48be3a8c62
        link'means pos48be3a8c62 sense8095a9e6b4
        lemma7fd4b6db6a: put'lemma [w: {καταχωρώ} l: {el}]
        posdc3280615b: put'pos [p: {verb}]
        link'is lemma7fd4b6db6a posdc3280615b
        link'means posdc3280615b sense8095a9e6b4
        lemmab7b990a4b0: put'lemma [w: {σημειώνω} l: {el}]
        pos70c93fbb47: put'pos [p: {verb}]
        link'is lemmab7b990a4b0 pos70c93fbb47
        link'means pos70c93fbb47 sense8095a9e6b4
        lemmaa6b4c7bca1: put'lemma [w: {könyvel} l: {hu}]
        posb4d1705702: put'pos [p: {verb}]
        link'is lemmaa6b4c7bca1 posb4d1705702
        link'means posb4d1705702 sense8095a9e6b4
        lemmab43710f26b: put'lemma [w: {elkönyvel} l: {hu}]
        pos0ae342613c: put'pos [p: {verb}]
        link'is lemmab43710f26b pos0ae342613c
        link'means pos0ae342613c sense8095a9e6b4
        lemma0511896480: put'lemma [w: {lekönyvel} l: {hu}]
        pos3b3b44fb1a: put'pos [p: {verb}]
        link'is lemma0511896480 pos3b3b44fb1a
        link'means pos3b3b44fb1a sense8095a9e6b4
        lemmabce991bde2: put'lemma [w: {annotare} l: {it}]
        pos5ef4098e1e: put'pos [p: {verb}]
        link'is lemmabce991bde2 pos5ef4098e1e
        link'means pos5ef4098e1e sense8095a9e6b4
        lemma2d43e6f98b: put'lemma [w: {trascrivere} l: {it}]
        pos939a70c95b: put'pos [p: {verb}]
        link'is lemma2d43e6f98b pos939a70c95b
        link'means pos939a70c95b sense8095a9e6b4
        lemmaa37bb862d6: put'lemma [w: {記入する} l: {ja}]
        posbac3839f97: put'pos [p: {verb}]
        link'is lemmaa37bb862d6 posbac3839f97
        link'means posbac3839f97 sense8095a9e6b4
        lemma8544784707: put'lemma [w: {внесува} l: {mk}]
        pos70ca5d74c6: put'pos [p: {verb}]
        link'is lemma8544784707 pos70ca5d74c6
        link'means pos70ca5d74c6 sense8095a9e6b4
        lemma875e7a5bda: put'lemma [w: {запишува} l: {mk}]
        pose2a009c635: put'pos [p: {verb}]
        link'is lemma875e7a5bda pose2a009c635
        link'means pose2a009c635 sense8095a9e6b4
        lemmaee5012657d: put'lemma [w: {заведува} l: {mk}]
        posa54755bcaa: put'pos [p: {verb}]
        link'is lemmaee5012657d posa54755bcaa
        link'means posa54755bcaa sense8095a9e6b4
        lemmad70262d4ea: put'lemma [w: {notere} l: {no}]
        pos358f613c8a: put'pos [p: {verb}]
        link'is lemmad70262d4ea pos358f613c8a
        link'means pos358f613c8a sense8095a9e6b4
        lemma02aa35731c: put'lemma [w: {nedskrive} l: {no}]
        posa8ec1ffe68: put'pos [p: {verb}]
        link'is lemma02aa35731c posa8ec1ffe68
        link'means posa8ec1ffe68 sense8095a9e6b4
        lemma01516d0d30: put'lemma [w: {spisać} l: {pl}]
        pos12ec563702: put'pos [p: {verb}]
        link'is lemma01516d0d30 pos12ec563702
        link'means pos12ec563702 sense8095a9e6b4
        lemma2611d0acb7: put'lemma [w: {anotar} l: {pt}]
        pos869ad4d4c8: put'pos [p: {verb}]
        link'is lemma2611d0acb7 pos869ad4d4c8
        link'means pos869ad4d4c8 sense8095a9e6b4
        lemma115333dd6b: put'lemma [w: {zaznačiť} l: {sk}]
        pos78a01b223a: put'pos [p: {verb}]
        link'is lemma115333dd6b pos78a01b223a
        link'means pos78a01b223a sense8095a9e6b4
        lemma096b64d995: put'lemma [w: {zaknihovať} l: {sk}]
        posfe3151ea95: put'pos [p: {verb}]
        link'is lemma096b64d995 posfe3151ea95
        link'means posfe3151ea95 sense8095a9e6b4
        lemma55e473797a: put'lemma [w: {anotar} l: {es}]
        pos6734388ceb: put'pos [p: {verb}]
        link'is lemma55e473797a pos6734388ceb
        link'means pos6734388ceb sense8095a9e6b4
        lemmaa06d6a035f: put'lemma [w: {bokföra} l: {sv}]
        pos82f6ae7130: put'pos [p: {verb}]
        link'is lemmaa06d6a035f pos82f6ae7130
        link'means pos82f6ae7130 sense8095a9e6b4
        lemmaef47e75a55: put'lemma [w: {skriva in} l: {sv}]
        pos9e5da87289: put'pos [p: {verb}]
        link'is lemmaef47e75a55 pos9e5da87289
        link'means pos9e5da87289 sense8095a9e6b4
        sensee218329346: put'sense [s:{to record the details of an offender}]
        link'means pos7f8fc0a70a sensee218329346
        lemmad643753534: put'lemma [w: {rekisteröidä} l: {fi}]
        pos5b8591e2bc: put'pos [p: {verb}]
        link'is lemmad643753534 pos5b8591e2bc
        link'means pos5b8591e2bc sensee218329346
        lemmab34798aa49: put'lemma [w: {felír} l: {hu}]
        pos76ca843a7f: put'pos [p: {verb}]
        link'is lemmab34798aa49 pos76ca843a7f
        link'means pos76ca843a7f sensee218329346
        lemma2384d799e8: put'lemma [w: {調書を取る} l: {ja}]
        pos76f69059ac: put'pos [p: {verb}]
        link'is lemma2384d799e8 pos76f69059ac
        link'means pos76f69059ac sensee218329346
        lemma74800b8ba1: put'lemma [w: {multar} l: {pt}]
        posd2e6f18ffd: put'pos [p: {verb}]
        link'is lemma74800b8ba1 posd2e6f18ffd
        link'means posd2e6f18ffd sensee218329346
        sense5524244560: put'sense [s:{sports: to issue with a caution}]
        link'means pos7f8fc0a70a sense5524244560
        lemmac7b383a3e1: put'lemma [w: {varoittaa} l: {fi}]
        pos0b9995cd5d: put'pos [p: {verb}]
        link'is lemmac7b383a3e1 pos0b9995cd5d
        link'means pos0b9995cd5d sense5524244560
        lemmaa86e7b94de: put'lemma [w: {antaa varoitus} l: {fi}]
        pos236b000aa1: put'pos [p: {verb}]
        link'is lemmaa86e7b94de pos236b000aa1
        link'means pos236b000aa1 sense5524244560
        lemmaeca039bc89: put'lemma [w: {sárga lapot ad} l: {hu}]
        pos583dbbd7c1: put'pos [p: {verb}]
        link'is lemmaeca039bc89 pos583dbbd7c1
        link'means pos583dbbd7c1 sense5524244560
        lemmae0276b43f4: put'lemma [w: {ammonire} l: {it}]
        pos8cff370755: put'pos [p: {verb}]
        link'is lemmae0276b43f4 pos8cff370755
        link'means pos8cff370755 sense5524244560
        sense90edbe61b4: put'sense [s:{slang: to travel very fast}]
        link'means pos7f8fc0a70a sense90edbe61b4
        lemma126c5a7bbb: put'lemma [w: {boeken} l: {nl}]
        posbb935ff58b: put'pos [p: {verb}]
        link'is lemma126c5a7bbb posbb935ff58b
        link'means posbb935ff58b sense90edbe61b4
        lemmab64af5f571: put'lemma [w: {vlammen} l: {nl}]
        pos8ef07ad582: put'pos [p: {verb}]
        link'is lemmab64af5f571 pos8ef07ad582
        link'means pos8ef07ad582 sense90edbe61b4
        lemmadc7c5c24bd: put'lemma [w: {luukuttaa} l: {fi}]
        posc384af9d73: put'pos [p: {verb}]
        link'is lemmadc7c5c24bd posc384af9d73
        link'means posc384af9d73 sense90edbe61b4
        lemmaf7717609a3: put'lemma [w: {rasen} l: {de}]
        pos7b4bf047a5: put'pos [p: {verb}]
        link'is lemmaf7717609a3 pos7b4bf047a5
        link'means pos7b4bf047a5 sense90edbe61b4
        lemma8df31a6b61: put'lemma [w: {száguld} l: {hu}]
        posdf53c51b96: put'pos [p: {verb}]
        link'is lemma8df31a6b61 posdf53c51b96
        link'means posdf53c51b96 sense90edbe61b4
        lemmac38cd89073: put'lemma [w: {スピードを出す} l: {ja}]
        pos52af984c8e: put'pos [p: {verb}]
        link'is lemmac38cd89073 pos52af984c8e
        link'means pos52af984c8e sense90edbe61b4
        lemma43a341aeb4: put'lemma [w: {飛ばす} l: {ja}]
        pos4a27143545: put'pos [p: {verb}]
        link'is lemma43a341aeb4 pos4a27143545
        link'means pos4a27143545 sense90edbe61b4
        sense4ece92bfd9: put'sense [s:{to record bets as bookmaker}]
        link'means pos7f8fc0a70a sense4ece92bfd9
        lemmafaa9c8acee: put'lemma [w: {pitää kirjaa} l: {fi}]
        pos00f8e8942b: put'pos [p: {verb}]
        link'is lemmafaa9c8acee pos00f8e8942b
        link'means pos00f8e8942b sense4ece92bfd9
        sense6ea9e80c3d: put'sense [s:{to receive the highest grade in a class}]
        link'means pos7f8fc0a70a sense6ea9e80c3d
        lemmabb32c98866: put'lemma [w: {legjobbként végez} l: {hu}]
        posb87fd52a1b: put'pos [p: {verb}]
        link'is lemmabb32c98866 posb87fd52a1b
        link'means posb87fd52a1b sense6ea9e80c3d
        sense7b57751785: put'sense [s:{slang: to leave}]
        link'means pos7f8fc0a70a sense7b57751785
        lemma37504a71c2: put'lemma [w: {nostaa kytkintä} l: {fi}]
        pos79f54bd342: put'pos [p: {verb}]
        link'is lemma37504a71c2 pos79f54bd342
        link'means pos79f54bd342 sense7b57751785
        lemma1e895e7987: put'lemma [w: {lelép} l: {hu}]
        posdf6ca3c753: put'pos [p: {verb}]
        link'is lemma1e895e7987 posdf6ca3c753
        link'means posdf6ca3c753 sense7b57751785
        pos7f8fc0a70a: put'pos [p: {verb}]
        link'is lemma8b257cd027 pos7f8fc0a70a
        lemmaceac518675: put 'lemma #[w: {book} l: {li}]
        posf68c8817db: put'pos [p: {noun}]
        link'is lemmaceac518675 posf68c8817db
        lemmac1a1a27858: put 'lemma #[w: {book} l: {enm}]
        pos0ff9e0a13a: put'pos [p: {noun}]
        link'is lemmac1a1a27858 pos0ff9e0a13a
        pos0ff9e0a13a: put'pos [p: {noun}]
        link'is lemmac1a1a27858 pos0ff9e0a13a
        lemma3af60c7721: put 'lemma #[w: {book} l: {nb}]
        pos35c7f973f2: put'pos [p: {verb}]
        link'is lemma3af60c7721 pos35c7f973f2

        preview fetch'pos ø
    ]
]

================================================
FILE: examples/sample6.art
================================================
do.import {grafito.art}

do [
    graph "sample6" [
        put'person [name: "John" surname: "Doe" age: 34]
        put'person [name: "Jane" surname: "doe" age: 24]
        put'person [name: "Bill" surname: "Jones" age: 44]

        ; let's find all the people who are 
        ; more than 30 years old
        inspect fetch'person [
            age: -> greater: 30
        ]
    ]
]

================================================
FILE: examples/sample7.art
================================================
do.import {grafito.art}

do [
    graph.create "sample7" [
        put'country [name: "United States"]
        put'country [name: "Australia"]

        john: put'person [name: "John" surname: "Doe" age: 34 country: "United States"]
        jane: put'person [name: "Jane" surname: "doe" age: 24 country: "United States"]
        put'person [name: "Bill" surname: "Jones" age: 44 country: "Australia"]

        link'marriedTo john jane

        ; let's find all the people who are 
        ; more than 30 years old
        inspect fetch'person [
            age: -> greater: 30
            surname: "Doe"
        ]
    ]
]

================================================
FILE: examples/sample8.art
================================================
do.import {grafito.art}

do [
    graph.create "sample8" [
        ;---------------------------------------------
        ; Populate the database
        ;---------------------------------------------

        us: put'country [name: "United States"]
        au: put'country [name: "Australia"]

        john: put'person [name: "John" surname: "Doe" age: 34]
        jane: put'person [name: "Jane" surname: "doe" age: 24]
        
        bill: put'person [name: "Bill" surname: "Jones" age: 44]
        mary: put'person [name: "Mary" age: 54]

        link'marriedTo john jane
        link'marriedTo bill mary

        link'isFrom @[john mary] us
        link'isFrom @[jane bill] au

        ;---------------------------------------------
        ; Let's perform some interesting queries!
        ;---------------------------------------------

        ; fetch all people
        inspect fetch'person ø

        ; fetch all people that have a surname
        inspect fetch'person [surname: true]

        ; fetch all people that have the name John
        inspect fetch'person [name: "John"]

        ; fetch all people that are over 40 years old
        inspect fetch'person [age: -> greater: 40]

        ; fetch all people that are over 40 years old 
        ; and have the surname "Jones"
        inspect fetch'person [
            age: -> greater: 40
            surname: "Jones"
        ]

        ; fetch all people that have the name John
        ; and are married to someone/anyone
        inspect fetch'person [
            name:"John" 
            marriedTo: ø 
        ]

        ; fetch all people that have the name John
        ; and are married to someone with the name Joan
        inspect fetch'person [
            name:"John" marriedTo: what'person [name:"Joan"]
        ]

        ; fetch all people that have either the name "John"
        ; or the surname "Jones"
        inspect fetch'person .any [
            name:"John" 
            surname:"Jones"
        ]
    ]
]

================================================
FILE: examples/sample9.art
================================================
;---------------------------------------------
; Import Grafito
; and ... let's rock'n'roll! :)
;---------------------------------------------
do.import {grafito.art}

do [
    ;---------------------------------------------
    ; Set up a new graph environment
    ; with a local database named "sample4"
    ;---------------------------------------------
    graph.create "sample9" [

        ArithmeticObj: put'modl [name: "Arithmetic"]
        arraysObj: put'modl [name: "arrays"]
        arturoObj: put'modl [name: "arturo"]
        benchmarkObj: put'modl [name: "benchmark"]
        bignumObj: put'modl [name: "bignum"]
        BinaryObj: put'modl [name: "Binary"]
        bytecodeObj: put'modl [name: "bytecode"]
        CollectionsObj: put'modl [name: "Collections"]
        ComparisonObj: put'modl [name: "Comparison"]
        ConvertersObj: put'modl [name: "Converters"]
        CoreObj: put'modl [name: "Core"]
        CryptoObj: put'modl [name: "Crypto"]
        csvObj: put'modl [name: "csv"]
        databaseObj: put'modl [name: "database"]
        DatabasesObj: put'modl [name: "Databases"]
        datasourceObj: put'modl [name: "datasource"]
        DatesObj: put'modl [name: "Dates"]
        debugObj: put'modl [name: "debug"]
        envObj: put'modl [name: "env"]
        errorsObj: put'modl [name: "errors"]
        evalObj: put'modl [name: "eval"]
        execObj: put'modl [name: "exec"]
        ffiObj: put'modl [name: "ffi"]
        FilesObj: put'modl [name: "Files"]
        globalsObj: put'modl [name: "globals"]
        helperObj: put'modl [name: "helper"]
        htmlObj: put'modl [name: "html"]
        IoObj: put'modl [name: "Io"]
        IteratorsObj: put'modl [name: "Iterators"]
        jsonobjectObj: put'modl [name: "jsonobject"]
        libObj: put'modl [name: "lib"]
        LogicObj: put'modl [name: "Logic"]
        markdownObj: put'modl [name: "markdown"]
        mathsObj: put'modl [name: "maths"]
        md4cObj: put'modl [name: "md4c"]
        minizObj: put'modl [name: "miniz"]
        NetObj: put'modl [name: "Net"]
        NumbersObj: put'modl [name: "Numbers"]
        parseObj: put'modl [name: "parse"]
        pathObj: put'modl [name: "path"]
        PathsObj: put'modl [name: "Paths"]
        ReflectionObj: put'modl [name: "Reflection"]
        replObj: put'modl [name: "repl"]
        SetsObj: put'modl [name: "Sets"]
        stackObj: put'modl [name: "stack"]
        stringsObj: put'modl [name: "strings"]
        StringsObj: put'modl [name: "Strings"]
        SystemObj: put'modl [name: "System"]
        templatesObj: put'modl [name: "templates"]
        tomlObj: put'modl [name: "toml"]
        UiObj: put'modl [name: "Ui"]
        unisortObj: put'modl [name: "unisort"]
        urlObj: put'modl [name: "url"]
        valueObj: put'modl [name: "value"]
        versionObj: put'modl [name: "version"]
        vmObj: put'modl [name: "vm"]
        webviewObj: put'modl [name: "webview"]
        link'rel valueObj bignumObj
        link'rel errorsObj stringsObj
        link'rel valueObj errorsObj
        link'rel envObj valueObj
        link'rel evalObj debugObj
        link'rel globalsObj errorsObj
        link'rel globalsObj valueObj
        link'rel bytecodeObj globalsObj
        link'rel bytecodeObj valueObj
        link'rel evalObj bytecodeObj
        link'rel evalObj globalsObj
        link'rel evalObj valueObj
        link'rel parseObj errorsObj
        link'rel parseObj valueObj
        link'rel stackObj valueObj
        link'rel execObj bytecodeObj
        link'rel execObj errorsObj
        link'rel execObj evalObj
        link'rel execObj globalsObj
        link'rel execObj parseObj
        link'rel execObj stackObj
        link'rel execObj valueObj
        link'rel vmObj envObj
        link'rel vmObj errorsObj
        link'rel vmObj evalObj
        link'rel vmObj execObj
        link'rel vmObj globalsObj
        link'rel vmObj parseObj
        link'rel vmObj stackObj
        link'rel vmObj valueObj
        link'rel vmObj versionObj
        link'rel libObj globalsObj
        link'rel libObj errorsObj
        link'rel libObj stackObj
        link'rel libObj valueObj
        link'rel ArithmeticObj libObj
        link'rel vmObj ArithmeticObj
        link'rel BinaryObj libObj
        link'rel vmObj BinaryObj
        link'rel arraysObj valueObj
        link'rel CollectionsObj arraysObj
        link'rel unisortObj valueObj
        link'rel CollectionsObj unisortObj
        link'rel CollectionsObj libObj
        link'rel vmObj CollectionsObj
        link'rel ComparisonObj libObj
        link'rel vmObj ComparisonObj
        link'rel ConvertersObj bignumObj
        link'rel urlObj valueObj
        link'rel datasourceObj urlObj
        link'rel ConvertersObj datasourceObj
        link'rel ConvertersObj stringsObj
        link'rel ConvertersObj libObj
        link'rel ConvertersObj errorsObj
        link'rel ConvertersObj execObj
        link'rel ConvertersObj parseObj
        link'rel vmObj ConvertersObj
        link'rel CoreObj datasourceObj
        link'rel ffiObj errorsObj
        link'rel ffiObj valueObj
        link'rel CoreObj ffiObj
        link'rel CoreObj libObj
        link'rel CoreObj envObj
        link'rel CoreObj errorsObj
        link'rel CoreObj evalObj
        link'rel CoreObj execObj
        link'rel CoreObj parseObj
        link'rel vmObj CoreObj
        link'rel CryptoObj libObj
        link'rel vmObj CryptoObj
        link'rel databaseObj valueObj
        link'rel DatabasesObj databaseObj
        link'rel DatabasesObj libObj
        link'rel vmObj DatabasesObj
        link'rel DatesObj libObj
        link'rel vmObj DatesObj
        link'rel htmlObj valueObj
        ; link'rel markdownObj md4cObj
        ; link'rel markdownObj valueObj
        ; link'rel tomlObj valueObj
        ; link'rel FilesObj minizObj
        ; link'rel FilesObj htmlObj
        ; link'rel FilesObj markdownObj
        ; link'rel FilesObj tomlObj
        ; link'rel csvObj valueObj
        ; link'rel FilesObj csvObj
        ; link'rel FilesObj datasourceObj
        ; link'rel jsonobjectObj valueObj
        ; link'rel FilesObj jsonobjectObj
        ; link'rel FilesObj libObj
        ; link'rel vmObj FilesObj
        ; link'rel replObj valueObj
        ; link'rel IoObj replObj
        ; link'rel IoObj libObj
        ; link'rel IoObj evalObj
        ; link'rel IoObj execObj
        ; link'rel vmObj IoObj
        ; link'rel IteratorsObj libObj
        ; link'rel IteratorsObj errorsObj
        ; link'rel IteratorsObj evalObj
        ; link'rel IteratorsObj execObj
        ; link'rel vmObj IteratorsObj
        ; link'rel LogicObj libObj
        ; link'rel LogicObj execObj
        ; link'rel vmObj LogicObj
        ; link'rel NetObj webviewObj
        ; link'rel NetObj libObj
        ; link'rel NetObj envObj
        ; link'rel NetObj execObj
        ; link'rel vmObj NetObj
        ; link'rel NumbersObj bignumObj
        ; link'rel mathsObj bignumObj
        ; link'rel mathsObj valueObj
        ; link'rel NumbersObj mathsObj
        ; link'rel NumbersObj libObj
        ; link'rel vmObj NumbersObj
        ; link'rel pathObj valueObj
        ; link'rel PathsObj pathObj
        ; link'rel PathsObj urlObj
        ; link'rel PathsObj libObj
        ; link'rel PathsObj envObj
        ; link'rel vmObj PathsObj
        ; link'rel ReflectionObj benchmarkObj
        ; link'rel helperObj globalsObj
        ; link'rel helperObj valueObj
        ; link'rel ReflectionObj helperObj
        ; link'rel ReflectionObj libObj
        ; link'rel ReflectionObj envObj
        ; link'rel ReflectionObj execObj
        ; link'rel vmObj ReflectionObj
        ; link'rel SetsObj libObj
        ; link'rel vmObj SetsObj
        ; link'rel StringsObj stringsObj
        ; link'rel templatesObj execObj
        ; link'rel templatesObj parseObj
        ; link'rel templatesObj stackObj
        ; link'rel templatesObj valueObj
        ; link'rel StringsObj templatesObj
        ; link'rel StringsObj libObj
        ; link'rel vmObj StringsObj
        ; link'rel SystemObj libObj
        ; link'rel SystemObj errorsObj
        ; link'rel SystemObj execObj
        ; link'rel vmObj SystemObj
        ; link'rel UiObj libObj
        ; link'rel UiObj jsonobjectObj
        ; link'rel UiObj urlObj
        ; link'rel UiObj webviewObj
        ; link'rel UiObj envObj
        ; link'rel UiObj execObj
        ;link'rel vmObj UiObj
        ;link'rel arturoObj versionObj
        link'rel arturoObj valueObj
        link'rel arturoObj vmObj
                
        preview fetch 'modl ø
    ]
]

================================================
FILE: grafito.art
================================================
#!/usr/bin/env arturo
;========================================================
; Grafito
;
; SQLite-based Graph Database
; in Arturo
;--------------------------------------------------------
;; name: grafito
;; version: 0.2.12
;; author: drkameleon
;; website: « https://github.com/arturo-lang/grafito
;; category: database
;; embed: [
;;      "ui" "sql"
;;      ".art" ".sql" ".html" ".less" ".js"
;; ]
;========================================================

;--------------------------
; The main library
;--------------------------

Grafito: #[
    ; version
    Version: 0.2.12
 
    ; configuration
    Debug?: false
    verbose?: true
    caseSensitive?: true

    ; colors
    Palette: ""
]

;
; Define custom objects
;--------------------------
define :edgeFilter [direction, content, properties]

;----------------------------------------------

graph: function [
    dbpath :string :null
    body :block
][
    ;; description: « initiate a new graph environment with given name and body
    ;; options: [
    ;;      create: « recreate database from scratch, even if it exists
    ;;      case: « queries should be case-sensitive
    ;;      verbose: « show messages regarding database operations
    ;;      palette: :string :literal « select color palette (current: default)
    ;; ]
    ;; returns: :any
    ;; example: {
    ;;      graph "mydb" [
    ;;          ; do sth with this graph database
    ;;      ]
    ;;      ..........
    ;;      ; in memory database
    ;;      graph ø [
    ;;          ; do sth with this graph database
    ;;      ]
    ;; }

    ;==========================================
    ; CONSTANTS
    ;==========================================

    ; Global SQL scripts

    schemaSQL:                      split.by:";" read.file ./"sql/schema.sql"

    createNodeSQL:                  read.file ./"sql/procs/createNode.sql"
    updateNodeSQL:                  read.file ./"sql/procs/updateNode.sql"
    updateNodePropertySQL:          read.file ./"sql/procs/updateNodeProperty.sql"
    updateNodePropertiesSQL:        read.file ./"sql/procs/updateNodeProperties.sql"
    deleteNodeSQL:                  read.file ./"sql/procs/deleteNode.sql"
    deleteNodeEdgesSQL:             read.file ./"sql/procs/deleteNodeEdges.sql"
    getNodeSQL:                     read.file ./"sql/procs/getNode.sql"
    getRelatedNodesSQL:             read.file ./"sql/procs/getRelatedNodes.sql"
    getMaxNodeIdSQL:                read.file ./"sql/procs/getMaxNodeId.sql"

    createEdgeSQL:                  read.file ./"sql/procs/createEdge.sql"
    updateEdgeSQL:                  read.file ./"sql/procs/updateEdge.sql"
    deleteEdgeSQL:                  read.file ./"sql/procs/deleteEdge.sql"
    deleteEdgeByIdSQL:              read.file ./"sql/procs/deleteEdgeById.sql"

    fetchNodesSQL:                  read.file ./"sql/procs/fetchNodes.sql"
    fetchNodesWithEdgesSQL:         read.file ./"sql/procs/fetchNodes.withEdges.sql"

    countNodesSQL:                  read.file ./"sql/procs/countNodes.sql"
    countEdgesSQL:                  read.file ./"sql/procs/countEdges.sql"

    ; Global SQL filters

    hasEdgeFilter:                  read.file ./"sql/filters/hasEdge.sql"
    hasPropertyFilter:              read.file ./"sql/filters/hasProperty.sql"
    edgeWithTargetFilter:           read.file ./"sql/filters/edgeWithTarget.sql"
    edgeWithSourceFilter:           read.file ./"sql/filters/edgeWithSource.sql"
    edgeWithAnyFilter:              read.file ./"sql/filters/edgeWithAny.sql"
    edgeWithPropertiesFilter:       read.file ./"sql/filters/edgeWithProperties.sql"
    nodePropertyWithValueFilter:    read.file ./"sql/filters/nodePropertyWithValue.sql"
    edgePropertyWithValueFilter:    read.file ./"sql/filters/edgePropertyWithValue.sql"

    ; Global SQL pragmas

    caseInsensitiveLikePragma:      read.file ./"sql/pragmas/caseInsensitiveLike.sql"
    caseSensitiveLikePragma:        read.file ./"sql/pragmas/caseSensitiveLike.sql"

    ; Global UI template

    app: read.file ./"ui/index.html"

    ; Color palettes
    ; for graph nodes

    colorPalettes: #.raw flatten.once map list ./"ui/palettes" 'pal [
        @[extract.filename pal, to :block read.file pal]
    ]

    ;==========================================
    ; HELPERS
    ;==========================================

    ;
    ; Perform query
    ;--------------------------

    performQuery: function [ctx, qu, params][
        if and? [Grafito\Debug?][null? attr 'noDebug] [
            context: to :string ctx
            prepend: " | "
            print color.bold #gray ">: " ++ context
            
            queryString: qu
            if block? qu [
                queryString: join.with:"\n" qu
            ]

            print color #gray prepend ++ join.with:"\n"++prepend split.lines queryString
            inspect params
            print ""
        ]
        (not? null? params)? [
            query db .with: params qu
        ][
            query db qu
        ]
    ]

    ;
    ; Print message
    ;--------------------------

    printDebug: function [msg][
        print color #cyan ":: " ++ msg
    ]

    ;
    ; Format size
    ;--------------------------

    formatSize: function [sz][
        if sz < 1024 -> return sz
        if sz < 1024*1024 -> return sz --> 'kB
        if sz < 1024*1024*1024 -> return sz --> 'MB
        if sz < 1024*1024*1024*1024 -> return sz --> 'GB
        return @[]
    ]

    ;
    ; Get db analytics
    ;--------------------------

    analytics: function [][
        nodeCount: to :integer first first performQuery 'analytics countNodesSQL ø
        edgeCount: to :integer first first performQuery 'analytics countEdgesSQL ø
        avgDegree: edgeCount // nodeCount

        filename: dbPath
        filesize: 0

        if not? empty? filename [
            prefilesize: formatSize volume filename
            filesize: #[
                number: to :string scalar prefilesize
                units: to :string units prefilesize
            ]
        ]

        prememory: formatSize process\memory\occupied
        mem: #[
            number: to :string scalar prememory
            units: to :string units prememory
        ]

        return #[
            database: #[
                nodes: nodeCount
                edges: edgeCount
                degree: to :floating to :string .format: ".2f" avgDegree
            ]
            memory: mem
            disk: #[
                path: filename
                size: filesize
            ]
        ]
    ]

    ;
    ; Get suitable fg color
    ; depending on node bg
    ; for better contrast
    ;--------------------------

    idealForeground: function [back][
        rgbs: values extract back

        lrgbs: map rgbs 'rgb [
            C: rgb // 255
            (C =< 0.03928)? -> C: C // 12.92
                            -> C: ((C+0.055)//1.055) ^ 2.4
            C
        ]

        L: (lrgbs\0*0.2126) + (lrgbs\1*0.7152) + (lrgbs\2*0.0722)

        if L > 0.189 [ return #black ]
        return #white
    ]

    ;
    ; Safe SQLite-compatible
    ; value codification
    ; including Unicode strings
    ;--------------------------
    codifySafe: function [val][
        (string? val)? [
            return {"} ++ (escape.json val) ++ {"}
        ][
            return express val
        ]
    ]

    ;
    ; Get styled node
    ; ready for use in the
    ; graph view
    ;--------------------------

    styleNode: function [nodeId, nodeTag, nodeProps][
        if not? key? Grafito\nodeColors nodeTag [
            cpal: Grafito\Palette
            cpal: colorPalettes\[cpal]

            nodeColor: sample cpal
            existingColors: map values Grafito\nodeColors => first
            
            while [contains? existingColors nodeColor] ->
                nodeColor: sample cpal

            Grafito\nodeColors\[nodeTag]: @[
                nodeColor
                idealForeground nodeColor
            ]

            updateMeta 'colors Grafito\nodeColors
        ]

        bg: to :string Grafito\nodeColors\[nodeTag]\0
        fg: to :string Grafito\nodeColors\[nodeTag]\1

        nodeLabel: first values nodeProps

        highlightField: #[
            border: express darken to :color bg 0.2
            background: bg
        ]

        return #[
            id: to :integer nodeId
            tag: nodeTag
            properties: nodeProps
            label: truncate nodeLabel 10
            fullLabel: nodeLabel
            color: #[
                border: bg
                background: bg
                hover: bg
                highlight: highlightField
            ]
            font: #[
                color: fg
            ]
        ]
    ]

    ;
    ; Create new edge
    ;--------------------------

    edge: function [
        src :integer :dictionary 
        name :literal :string
        tgt :integer :dictionary
    ][
        ;; description: « create edge from source to target node with given name
        ;; returns: :dictionary
        srcId: src
        tgtId: tgt

        props: (attr "") ?? #[]
        unless dictionary? props -> props: # props

        if dictionary? srcId -> srcId: src\id
        if dictionary? tgtId -> tgtId: tgt\id

        edgeId: performQuery.id 'edge createEdgeSQL @[name, write.compact.json props ø, srcId, tgtId]

        #[
            id: edgeId
            tag: name
            properties: props
            source: src
            target: tgt
        ]
    ]

    ;
    ; Delete existing edge
    ;--------------------------

    unedge: function [
        src :integer
        name :literal :string
        tgt :integer
    ][
        ;; description: « delete edge from source to target node with given name

        performQuery 'unedge deleteEdgeSQL @[name, src, tgt]
    ]

    ;
    ; Delete existing edge 
    ; by id
    ;--------------------------

    unedgeById: function [
        eid :integer
    ][
        ;; description: « delete edge with given id

        performQuery 'unedgeById deleteEdgeByIdSQL @[eid]
    ]

    ;
    ; Update single property
    ; by id
    ;--------------------------

    editProperty: function [
        nid :integer
        prop :literal :string
        val :any
    ][
        ;; description: « set or update single node property

        performQuery 'editProperty updateNodePropertySQL @[~"$.|prop|", write.compact.json val ø, nid]
    ]

    ;
    ; Update meta value
    ;--------------------------

    updateMeta: function [
        prop :literal :string
        val :any
    ][
        ;; description: « update a single meta value

        editProperty 1 prop val
    ]

    ;
    ; Re-tag existing edge 
    ; by id
    ;--------------------------

    retagEdge: function [
        eid :integer
        tag :literal :string
    ][
        ;; description: « update edge with given tag

        performQuery 'retag updateEdgeSQL @[tag, eid]
    ]

    ;
    ; Get node with properties
    ; from ID
    ;--------------------------

    nodeFromId: function [nid][
        results: performQuery 'nodeFromId getNodeSQL @[nid]
        
        if empty? results ->
            return ø 

        return #[
            id: nid
            tag: first first results
            properties: read.json last first results
        ]
    ]

    ;
    ; Get nodeset 
    ; for graph visualization
    ;--------------------------

    nodeFromIds: function [nodes][
        nodeset: nodes
        if not? block? nodeset ->
            nodeset: @[nodeset]

        nodeElements: map nodeset 'nd -> styleNode nd\id nd\tag nd\properties
        edgeElements: new []

        loop nodeset [nd][
            rezu: performQuery 'nodeFromIds getRelatedNodesSQL @[nd\id, nd\id, nd\id]

            loop rezu [rez][
                'nodeElements ++ styleNode rez\0 rez\1 read.json rez\2
                'edgeElements ++ #[
                    id: ~"|rez\3|+|rez\4|+|rez\5|"
                    dbId: rez\6
                    label: rez\5
                    properties: read.json rez\7
                    from: to :integer rez\3
                    to: to :integer rez\4
                ]
            ]
        ]

        unique 'nodeElements
        unique 'edgeElements

        return #[
            nodes: nodeElements
            edges: edgeElements
        ]
    ]

    ;
    ; Generate access helper
    ;--------------------------
    generateHelper: function [id,block][
        (not? null? attr 'new)? [
            put id block
        ][
            fetch id block
        ]
    ]

    ;==========================================
    ; REPL
    ;==========================================

    ;
    ; Switch verbosity on/off
    ;--------------------------

    verbose: function [] [
        Grafito\verbose?: not? Grafito\verbose?
    ]

    ;==========================================
    ; METHODS
    ;==========================================

    ;
    ; Create new node
    ;--------------------------
    
    put: function [
        name :literal :string
        attributes :string :block :dictionary
    ][
        ;; description: « insert new node(s) to graph with given name and attributes
        ;; options: [
        ;;      unique: « add only if node doesn't already exist
        ;;      many: « add multiple nodes at once
        ;; ]
        ;; returns: :dictionary :block

        if attr "unique" [
            found: fetch name attributes
            if not? empty? found -> return found
        ]

        result: new []

        (not? null? attr 'many)? [
            lastId: to :integer first first performQuery 'put getMaxNodeIdSQL ø
            queries: new []
            vals: new []
            loop attributes 'nd [
                lastId: lastId + 1
                att: nd
                (block? att)? -> att: # att [
                    (string? att)? -> att: #[
                        name: att
                    ] []
                ]
                'queries ++ createNodeSQL
                'vals ++ @[name, write.compact.json att ø]
                'result ++ #[
                    id: lastId
                    tag: name
                    properties: att
                ]
            ]
            performQuery 'put queries vals

            if Grafito\verbose? ->
                 printDebug ~{created |size attributes| nodes}
        ] [
            att: attributes
            (block? att)? -> att: # att [
                (string? att)? -> att: #[
                    name: att
                ] []
            ]
            nodeId: performQuery.id 'put createNodeSQL @[name, write.compact.json att ø]
            result: #[
                id: nodeId
                tag: name
                properties: att
            ]

            if Grafito\verbose? ->
                printDebug ~{created 1 node (@|nodeId|) with |size att| propert|(1 = size att)? -> "y" -> "ies"|}
        ]
    
        return result
    ]

    ;
    ; Update existing node
    ;--------------------------

    edit: function [
        nd :dictionary :block
        attributes :block :dictionary
    ][
        ;; description: « update given node(s) with attributes
        ;; options: [
        ;;      tag: :literal :string « also set new tag
        ;;      replace: « replace entire object properties with given ones
        ;; ]
        ;; returns: :nothing

        toUpdate: ø

        (dictionary? nd)? ->
            toUpdate: @[nd]
        ->
            toUpdate: new nd

        doReplace?: not? null? attr 'replace
        withTag: attr 'tag

        additional: attributes
        if block? additional ->
            additional: # additional

        loop toUpdate 'updateable [
            newAttributes: ø

            (doReplace?)? ->
                newAttributes: additional
            ->
                newAttributes: extend updateable\properties additional

            updateable\properties: newAttributes
            (null? withTag)? ->
                performQuery 'edit updateNodePropertiesSQL @[write.compact.json newAttributes ø, updateable\id]
            ->
                performQuery 'edit updateNodeSQL @[withTag, write.compact.json newAttributes ø, updateable\id]
        ]
    ]

    ;
    ; Delete existing node
    ;--------------------------

    unput: function [
        nd :integer :dictionary :block
    ][
        ;; description: « remove given node(s) from graph
        ;; returns: :nothing

        toDelete: ø

        (block? nd)? ->
            toDelete: new nd
        ->
            toDelete: @[nd]

        loop toDelete 'deletable [
            nodeId: (dictionary? deletable) ? -> deletable\id -> deletable

            performQuery 'unput @[
                deleteNodeSQL, deleteNodeEdgesSQL
            ] @[
                nodeId, nodeId, nodeId
            ]
        ]
    ]

    ;
    ; Link nodes with edges
    ;--------------------------

    link: function [
        src :block :dictionary
        name :literal :string
        tgt :block :dictionary
    ]
    [
        ;; description: « create a connection from source to target node with given name
        ;; returns: :block :dictionary

        edgeId: 0

        (:dictionary = type tgt)? [
            edges: new []
            if :dictionary = type src [
                ret: edge src name tgt
                return ret
            ]

            sr: @ src
            loop sr [s]->
                'edges ++ edge s name tgt
        
            if Grafito\verbose? -> printDebug ~"created |size edges| edges"

            return edges
        ][
            edges: new []
            tg: @ tgt
            (:dictionary = type src)? [
                loop tg [t][
                    'edges ++ edge src name t
                ]
            ][
                sr: @ src
                loop sr [s] [
                    loop tg [t]->
                        'edges ++ edge s name t
                ]
            ]

            if Grafito\verbose? -> printDebug ~"created |size edges| edges"

            return edges
        ]
    ]

    reverseLink: function [
        tgt :block :dictionary
        name :literal :string
        src :block :dictionary
    ][
        link src name tgt
    ]

    reciprocalLink: function [
        src :block :dictionary
        name :literal :string
        tgt :block :dictionary
    ][
        link src name tgt
        link tgt name src
    ]

    ;
    ; Delete node edges
    ;--------------------------

    unlink: function [
        src :integer :dictionary :block
        name :literal :string
        tgt :integer :dictionary :block
    ][
        ;; description: « remove connection from source to target node with given name

        nodesFrom: new []
        nodesTo: new []

        ;case [(type src)=]
        (dictionary? src)? -> nodesFrom: @[src\id]
        [
            (integer? src)? -> nodesFrom: @[src]
            [
                nodesFrom: new map src 'n [
                    (dictionary? n)? -> n\id
                    -> n
                ]
            ]
        ]

            ; when? -> :dictionary -> nodesFrom: @[src\id]
            ; when? -> :integer -> nodesFrom: @[src]
            ; else  -> nodesFrom: new map src 'n [
            ;     if? dictionary? n -> n\id
            ;     else -> n
            ; ]

        (dictionary? tgt)? -> nodesFrom: @[tgt\id]
        [
            (integer? tgt)? -> nodesFrom: @[tgt]
            [
                nodesFrom: new map tgt 'n [
                    (dictionary? n)? -> n\id
                    -> n
                ]
            ]
        ]

        ; if?case [(type tgt)=]
        ;     when? -> :dictionary -> nodesTo: @[tgt\id]
        ;     when? -> :integer -> nodesTo: @[tgt]
        ;     else  -> nodesTo: new map tgt 'n [
        ;         if? dictionary? n -> n\id
        ;         else -> n
        ;     ]

        loop nodesFrom 'nf [
            loop nodesTo 'nt [
                unedge nf name nt
            ]
        ]

        if Grafito\verbose? [
            totalEdges: mul size nodesFrom size nodesTo
            edgeLabel: (totalEdges = 1) ? -> "edge" -> "edges"
            printDebug ~"removed |totalEdges| |edgeLabel|"
        ]
    ]

    ;
    ; Check node type
    ;--------------------------
    
    isA?: function [ls,nd][
        nd\tag = to :string ls
    ]

    ;
    ; Helpers
    ; for edge filters
    ;--------------------------
    edgeFilterRight: function [cnt, props][
        pp: props
        if block? pp -> pp: # pp
        to :edgeFilter @[1, cnt, pp]
    ]

    edgeFilterLeft: function [cnt, props][
        pp: props
        if block? pp -> pp: # pp
        to :edgeFilter @[2, cnt, pp]
    ]

    edgeFilterAny: function [cnt, props][
        pp: props
        if block? pp -> pp: # pp
        to :edgeFilter @[3, cnt, pp]
    ]

    ;
    ; Fetch all results for tag
    ; with given properties
    ; and edges
    ;--------------------------

    fetch: function [
        name :literal :string
        attributes :null :string :block :dictionary
    ][
        ;; description: « retrieves nodes with name that match all given attributes
        ;; options: [
        ;;      .any « try matching any of the attributes
        ;; ]
        ;; returns: :block
        
        ;; setup main variables

        catchAny?: false
        if not? null? attr "any" ->
            catchAny?: true

        collator: ""
        if not? Grafito\caseSensitive? ->
            collator: " COLLATE NOCASE"

        propertyFilters: new []
        edgeFilters: new []
        qvals: new @[name]
        qpropvals: new []
        qedgevals: new []

        att: new attributes

        (string? att)? [
            [collate,symb,val]: @[collator, "=", codifySafe att]
            
            ; add it once (to check for `name`)
            'propertyFilters ++ ~nodePropertyWithValueFilter
            'qpropvals ++ @[~"$.name"]

            ; add it once more (to check for `title`)
            'propertyFilters ++ ~nodePropertyWithValueFilter
            'qpropvals ++ @[~"$.title"]

            ; we won't it to be valid when any of the two criteria above is true
            ; so we'll have to forcefully set `catchAny?` to true
            catchAny?: true
        ]
        [
            if and? not? dictionary? att 
                    not? null? att ->
                att: # att

            ; ; HACK - to solve
            ; remove.key 'att 'n
            ; remove.key 'att 'a

            if not? empty? att [
                loop att [k,v][
                    if null? v [
                        ; it's an edge filter without criteria
                        'edgeFilters ++ hasEdgeFilter
                        'qedgevals ++ @[k]
                        continue
                    ]
                    if dictionary? v [
                        ; it's an edge filter
                        searchForProperties: ""
                        'edgeFilters ++ ~edgeWithTargetFilter
                        'qedgevals ++ @[k, v\id]
                        continue
                    ]
                    if is? :edgeFilter v [
                        ; it's a directed edge filter
                        if dictionary? v\content [
                            searchForProperties: ""
                            subfilters: []
                            subvals: []
                            if not? empty? v\properties [
                                collator: ""
                                if not? Grafito\caseSensitive? ->
                                    collator: " COLLATE NOCASE"

                                subfilters: new []
                                loop v\properties [kk,vv][
                                    [collate,symb,val]: @[collator, "=", codifySafe vv]
                                    subvals: subvals ++ ~"$.|kk|"
                                    subfilters: subfilters ++ ~edgePropertyWithValueFilter
                                ]
                                subfilters: join.with:" AND " subfilters
                                searchForProperties: ~"AND (|subfilters|)"
                            ]
                                    
                            (v\direction = 1)? [
                                'edgeFilters ++ ~edgeWithTargetFilter
                                'qedgevals ++ @[k, v\content\id] ++ subvals
                            ][
                                (v\direction = 2)? [
                                    'edgeFilters ++ ~edgeWithSourceFilter
                                    'qedgevals ++ @[k, v\content\id] ++ subvals
                                ][
                                    (v\direction = 3)? [
                                        'edgeFilters ++ ~edgeWithAnyFilter 
                                        'qedgevals ++ @[k, v\content\id, v\content\id] ++ subvals
                                    ][
                                        print "Shouldn't have reached here!"
                                    ]
                                ]
                            ]
                        ]
                        if all? @[
                            block? v\content
                            or? 
                                and? [0 < size v\content]
                                     [:dictionary = type first v\content]
                                not? empty? v\properties
                        ][
                            searchForProperties: ""
                            subfilters: []
                            subvals: []
                            if not? empty? v\properties [
                                collator: ""
                                if not? Grafito\caseSensitive? ->
                                    collator: " COLLATE NOCASE"

                                subfilters: new []
                                loop v\properties [kk,vv][
                                    [collate,symb,val]: @[collator, "=", codifySafe vv]
                                    subvals: subvals ++ ~"$.|kk|"
                                    subfilters: subfilters ++ ~edgePropertyWithValueFilter
                                ]
                                subfilters: join.with:" AND " subfilters
                                searchForProperties: ~"AND (|subfilters|)"
                            ]

                            orCriteria: new []
                            (0 < size v\content)? [
                                loop v\content [edgef][
                                    (v\direction = 1)? [
                                        'orCriteria ++ ~edgeWithTargetFilter
                                        'qedgevals ++ @[k, edgef\id] ++ subvals
                                    ][
                                        (v\direction = 2)? [
                                            'orCriteria ++ ~edgeWithSourceFilter
                                            'qedgevals ++ @[k, edgef\id] ++ subvals
                                        ][
                                            (v\direction = 3)? [
                                                'orCriteria ++ ~edgeWithAnyFilter 
                                                'qedgevals ++ @[k, edgef\id, edgef\id] ++ subvals
                                            ][
                                                print "Shouldn't have reached here!"
                                            ]
                                        ]
                                    ]
                                ]
                            ][
                                'orCriteria ++ ~edgeWithPropertiesFilter
                                'qedgevals ++ @[k] ++ subvals
                            ]
                            'edgeFilters ++ "(" ++ (join.with:" OR " orCriteria) ++ ")"
                        ]
                        continue
                    ]
                    if block? v [
                        (and? 0 < size v 
                                :dictionary = type first v)? [
                            ; it's an array of edge filters
                            orCriteria: new []
                            loop v [edgef][
                                searchForProperties: ""
                                'orCriteria ++ ~edgeWithTargetFilter
                                'qedgevals ++ @[k, edgef\id]
                            ]
                            'edgeFilters ++ "(" ++ (join.with:" OR " orCriteria) ++ ")"
                        ]
                        [
                            ; it's a complex property filter
                            loop # v [filt,rg][

                                [collate,symb,val]: @[collator, "=", v]
                                requiresCodification: true

                                (filt = "contains")? -> [collate,symb,val]: @["", "LIKE", ~"%|rg|%"]
                                [
                                    (filt = "prefix")? -> [collate,symb,val]: @["", "LIKE", ~"|rg|%"]
                                    [
                                        (filt = "suffix")? -> [collate,symb,val]: @["", "LIKE", 
Download .txt
gitextract_hq975k_i/

├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   └── workflows/
│       ├── release.yml
│       ├── test.yml
│       └── todos.yml
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── examples/
│   ├── sample1.art
│   ├── sample10.art
│   ├── sample11.art
│   ├── sample12.art
│   ├── sample2.art
│   ├── sample3.art
│   ├── sample4.art
│   ├── sample4b.art
│   ├── sample4c.art
│   ├── sample4d.art
│   ├── sample5.art
│   ├── sample6.art
│   ├── sample7.art
│   ├── sample8.art
│   └── sample9.art
├── grafito.art
├── info.art
├── logo.txt
├── sql/
│   ├── filters/
│   │   ├── edgePropertyWithValue.sql
│   │   ├── edgeWithAny.sql
│   │   ├── edgeWithProperties.sql
│   │   ├── edgeWithSource.sql
│   │   ├── edgeWithTarget.sql
│   │   ├── hasEdge.sql
│   │   ├── hasProperty.sql
│   │   └── nodePropertyWithValue.sql
│   ├── pragmas/
│   │   ├── caseInsensitiveLike.sql
│   │   └── caseSensitiveLike.sql
│   ├── procs/
│   │   ├── countEdges.sql
│   │   ├── countNodes.sql
│   │   ├── createEdge.sql
│   │   ├── createNode.sql
│   │   ├── deleteEdge.sql
│   │   ├── deleteEdgeById.sql
│   │   ├── deleteNode.sql
│   │   ├── deleteNodeEdges.sql
│   │   ├── fetchNodes.sql
│   │   ├── fetchNodes.withEdges.sql
│   │   ├── getAllNodeTags.sql
│   │   ├── getMaxNodeId.sql
│   │   ├── getNode.sql
│   │   ├── getRelatedNodes.sql
│   │   ├── updateEdge.sql
│   │   ├── updateNode.sql
│   │   ├── updateNodeProperties.sql
│   │   └── updateNodeProperty.sql
│   └── schema.sql
└── ui/
    ├── index.html
    ├── palettes/
    │   ├── default.art
    │   ├── earthy.art
    │   ├── inferno.art
    │   ├── light.art
    │   ├── magma.art
    │   ├── pastel.art
    │   ├── playful.art
    │   ├── rainbow.art
    │   ├── vibrant.art
    │   └── viridis.art
    ├── scripts/
    │   ├── ace/
    │   │   ├── ace.js
    │   │   ├── modes/
    │   │   │   └── grafito.js
    │   │   └── themes/
    │   │       └── monokai.js
    │   └── app.js
    └── styles/
        └── app.less
Download .txt
SYMBOL INDEX (102 symbols across 3 files)

FILE: sql/schema.sql
  type nodes (line 4) | CREATE TABLE nodes (
  type node_index (line 10) | CREATE INDEX IF NOT EXISTS node_index ON nodes(id)
  type node_tag_index (line 11) | CREATE INDEX IF NOT EXISTS node_tag_index ON nodes(tag)
  type edges (line 14) | CREATE TABLE edges (
  type edges_index (line 24) | CREATE INDEX IF NOT EXISTS edges_index ON edges(id)
  type edges_source_index (line 25) | CREATE INDEX IF NOT EXISTS edges_source_index ON edges(source)
  type edges_target_index (line 26) | CREATE INDEX IF NOT EXISTS edges_target_index ON edges(target)

FILE: ui/scripts/ace/ace.js
  function r (line 1) | function r(){}
  function w (line 1) | function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentine...
  function H (line 1) | function H(e){return(e=+e)!=e?e=0:0!==e&&e!==1/0&&e!==-1/0&&(e=(0<e||-1)...
  function e (line 1) | function e(t){t=new Array(t+2);return t[0]=t[1]=0,t}
  function i (line 1) | function i(){}
  function o (line 1) | function o(e,t,n){var l,o=s(t);if(!i.isMac&&u){if((u[91]||u[92])&&(o|=8)...
  function i (line 1) | function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0...
  function n (line 1) | function n(){t=null,e()}
  function r (line 1) | function r(){n=null,e()}
  function i (line 1) | function i(e){null==n&&(n=setTimeout(r,e||t))}
  function b (line 1) | function b(r){if(!h){var t,r=k?(t=0,r?0:n.value.length-1):(t=r?2:1,2);tr...
  function w (line 1) | function w(){h||(n.value=f,i.isWebKit&&y.schedule())}
  function q (line 1) | function q(){setTimeout(function(){p&&(n.style.cssText=p,p=""),null==t.r...
  function M (line 1) | function M(r,t){var n=r.clipboardData||window.clipboardData;if(n&&!u){r=...
  function _ (line 1) | function _(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);M...
  function D (line 1) | function D(e){_(e,!0)}
  function P (line 1) | function P(e){_(e,!1)}
  function H (line 1) | function H(e){var s=M(e);"string"==typeof s?(s&&t.onPaste(s),i.isIE&&set...
  function t (line 1) | function t(t){e.focus()}
  function o (line 1) | function o(e){if(e)return i.isWebKit&&!e.which&&s.releaseMouse?s.release...
  function a (line 1) | function a(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e)...
  function u (line 1) | function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler(...
  function f (line 1) | function f(e,t){return(e.start.row==e.end.row?2*t.column-e.start.column-...
  function a (line 1) | function a(e){o.call(this,e)}
  function l (line 1) | function l(){var v=u.getDocumentPosition().row,d=n.$annotations[v];if(!d...
  function c (line 1) | function c(){o=o&&clearTimeout(o),f&&(i.hide(),f=null,t.removeEventListe...
  function h (line 1) | function h(e){i.setPosition(e.x,e.y)}
  function s (line 1) | function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}
  function f (line 1) | function f(e){function C(){var e=g;(function(e,s){var r=Date.now(),i=!s|...
  function l (line 1) | function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}
  function i (line 1) | function i(){this.propagationStopped=!0}
  function s (line 1) | function s(){this.defaultPrevented=!0}
  function p (line 1) | function p(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMar...
  function g (line 1) | function g(e){return!(e<4352)&&(4352<=e&&e<=4447||4515<=e&&e<=4519||4602...
  function r (line 1) | function r(n){n="insertText"===n.action||"insertLines"===n.action;return...
  function a (line 1) | function a(t){var r=e.slice(i,t),o=r.length;r.join("").replace(/12/g,fun...
  function i (line 1) | function i(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}}
  function w (line 1) | function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}
  function i (line 1) | function i(e){for(var t in this.states=e,this.regExps={},this.matchMappi...
  function e (line 1) | function e(e,t){return"start"==e&&!t.length||t.unshift(this.nextState,e)...
  function t (line 1) | function t(e,t){return t.shift(),t.shift()||"start"}
  function r (line 1) | function r(){this.$behaviours={}}
  function r (line 1) | function r(e,t,r){this.$session=e,this.$row=t,this.$rowTokens=e.getToken...
  function i (line 1) | function i(n,t){this.foldData=n,Array.isArray(t)?this.folds=t:t=this.fol...
  function u (line 1) | function u(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}
  function a (line 1) | function a(e,t){u(e.start,t),u(e.end,t)}
  function f (line 1) | function f(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}
  function s (line 1) | function s(e,t){var n,r;this.platform=t||(i.isMac?"mac":"win"),this.comm...
  function s (line 1) | function s(e,t){return{win:e,mac:t}}
  function r (line 1) | function r(){this.reset()}
  function o (line 1) | function o(r){if(n.$themeId!=e)return t&&t();var s;r.cssClass&&(i.import...
  function u (line 1) | function u(e){this.element=i.createElement("div"),this.element.className...
  function a (line 1) | function a(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.w...
  function m (line 1) | function m(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRang...
  function u (line 1) | function u(e){return a.stringRepeat(" ",e)}
  function f (line 1) | function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([...
  function i (line 1) | function i(e,t){return e.row==t.row&&e.column==t.column}
  function u (line 1) | function u(c,n,r,l){var s,u;this.$sendDeltaQueue=this.$sendDeltaQueue.bi...
  function a (line 1) | function a(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),t...
  function u (line 1) | function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(r.le...
  function m (line 1) | function m(e,t,n){if(0===t&&("esc"===n||"return"===n))return h.destroy()...
  function o (line 1) | function o(e){this.session=e,(this.session.widgetManager=this).session.g...

FILE: ui/scripts/app.js
  method data (line 8) | data() {
  method getInputTypeForValue (line 241) | getInputTypeForValue(val){
  method getInputIconForValue (line 248) | getInputIconForValue(key,val){
  method processCommand (line 257) | processCommand(){
  method copyQueryToClipboard (line 317) | copyQueryToClipboard(queryId){
  method rerunQuery (line 323) | rerunQuery(queryId){
  method toggleMultilineMode (line 329) | toggleMultilineMode(){
  method expandNodeNeighbors (line 364) | expandNodeNeighbors(nodeId=null){
  method removeNode (line 389) | removeNode(nodeId=null){
  method deleteNode (line 401) | deleteNode(nodeId=null, message="Delete selected node", andThen=null){
  method removeEdge (line 428) | removeEdge(edgeId=null){
  method deleteEdge (line 440) | deleteEdge(edgeId=null, message="Delete selected edge", showConfirmation...
  method removeElement (line 462) | removeElement(){
  method deleteElement (line 467) | deleteElement(){
  method linkNodeMode (line 473) | linkNodeMode(nodeId=null){
  method addEdgeHandler (line 478) | addEdgeHandler(data, callback){
  method showConfirmationDialog (line 494) | showConfirmationDialog(title, callback, button="Delete", style="is-destr...
  method showFilterDialog (line 507) | showFilterDialog(){
  method showAddNodeDialog (line 520) | showAddNodeDialog(){
  method showPaletteDialog (line 555) | showPaletteDialog(){
  method addNewNodeField (line 583) | addNewNodeField(){
  method showEditNodeDialog (line 596) | showEditNodeDialog(){
  method showAddEdgeDialog (line 638) | showAddEdgeDialog(){
  method showEditEdgeDialog (line 667) | showEditEdgeDialog(){
  method resetFilterData (line 702) | resetFilterData(nomatterwhat=false){
  method getAnalytics (line 726) | getAnalytics(){
  method drawGraph (line 737) | drawGraph(dataset, clean=false, firstDraw=false){
  method drawTable (line 837) | drawTable(rows){
  method refreshGraph (line 873) | refreshGraph() {
  method updateGraphView (line 877) | updateGraphView() {
  method updateEngineSettings (line 902) | updateEngineSettings() {
  method mounted (line 913) | mounted(){
  method updated (line 937) | updated(){
Condensed preview — 72 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (776K chars).
[
  {
    "path": ".gitattributes",
    "chars": 52,
    "preview": "*.art linguist-language=Red\n*.art linguist-vendored\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 20,
    "preview": "github: [drkameleon]"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 2693,
    "preview": "name: \"Release\"\non:\n  push:\n    tags:\n      - 'v*.*.*'\nenv:\n  app-name: grafito\n\ndefaults:\n  run:\n    shell: bash -l {0}"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 2144,
    "preview": "name: \"CI\"\non:\n    push:\n        branches:\n        - master\n    pull_request:\n        types: [opened, synchronize]\n    w"
  },
  {
    "path": ".github/workflows/todos.yml",
    "chars": 351,
    "preview": "name: \"TODO -> Issue\"\non:\n  push:\n    branches:\n      - 'main'\n    tags-ignore:\n      - '**'\njobs:\n  build:\n    runs-on:"
  },
  {
    "path": ".gitignore",
    "chars": 63,
    "preview": "*.db\n*.graf\ntest*.sql\ntest*.nim\ntest*.html\ntesty.art\ntest*.art\n"
  },
  {
    "path": "Dockerfile",
    "chars": 194,
    "preview": "FROM arturolang/arturo\n\nRUN  apk update && apk upgrade\nRUN apk add --no-cache sqlite-dev\nRUN apk add sqlite\n\nADD grafito"
  },
  {
    "path": "LICENSE",
    "chars": 1074,
    "preview": "MIT License\n\nCopyright (c) 2024 Yanis Zafirópulos\n\nPermission is hereby granted, free of charge, to any person obtaining"
  },
  {
    "path": "README.md",
    "chars": 19453,
    "preview": "\n<p align=\"center\"><img align=\"center\" width=\"350\" src=\"https://raw.githubusercontent.com/arturo-lang/grafito/master/log"
  },
  {
    "path": "examples/sample1.art",
    "chars": 1007,
    "preview": ";; Just run this with:\n;; arturo sample.art\n;;\n;; This will create a local sample.db\n;; along with the corresponding dot"
  },
  {
    "path": "examples/sample10.art",
    "chars": 398,
    "preview": "do.import {grafito.art}\n\ndo [\n    ;---------------------------------------------\n    ; Set up a new graph environment\n  "
  },
  {
    "path": "examples/sample11.art",
    "chars": 7228,
    "preview": ";---------------------------------------------\n; Import Grafito\n; and ... let's rock'n'roll! :)\n;-----------------------"
  },
  {
    "path": "examples/sample12.art",
    "chars": 76346,
    "preview": "do.import {grafito.art}\n\ndo [\n    ;---------------------------------------------\n    ; Set up a new graph environment\n  "
  },
  {
    "path": "examples/sample2.art",
    "chars": 509,
    "preview": "do.import {grafito.art}\n\ndo [ graph.create \"sample2\" [\n    honorEnN: put'Pos [p:\"noun\"]\n    honorEsN: put'Pos [p:\"noun\"]"
  },
  {
    "path": "examples/sample3.art",
    "chars": 1035,
    "preview": "do.import {grafito.art}\n\ndo [\n    graph.create \"sample3\" [\n        nick: put'person [name: \"Nick\", sex: \"m\", birth: 1957"
  },
  {
    "path": "examples/sample4.art",
    "chars": 2493,
    "preview": ";---------------------------------------------\n; Import Grafito\n; and ... let's rock'n'roll! :)\n;-----------------------"
  },
  {
    "path": "examples/sample4b.art",
    "chars": 3509,
    "preview": ";---------------------------------------------\n; Import Grafito\n; and ... let's rock'n'roll! :)\n;-----------------------"
  },
  {
    "path": "examples/sample4c.art",
    "chars": 3182,
    "preview": ";---------------------------------------------\n; Import Grafito\n; and ... let's rock'n'roll! :)\n;-----------------------"
  },
  {
    "path": "examples/sample4d.art",
    "chars": 3556,
    "preview": ";---------------------------------------------\n; Import Grafito\n; and ... let's rock'n'roll! :)\n;-----------------------"
  },
  {
    "path": "examples/sample5.art",
    "chars": 30684,
    "preview": "do.import {grafito.art}\n\ndo [\n    graph.create \"sample5\" [\n        lemma8b257cd027: put 'lemma [w: {book} l: {en}]\n     "
  },
  {
    "path": "examples/sample6.art",
    "chars": 384,
    "preview": "do.import {grafito.art}\n\ndo [\n    graph \"sample6\" [\n        put'person [name: \"John\" surname: \"Doe\" age: 34]\n        put"
  },
  {
    "path": "examples/sample7.art",
    "chars": 620,
    "preview": "do.import {grafito.art}\n\ndo [\n    graph.create \"sample7\" [\n        put'country [name: \"United States\"]\n        put'count"
  },
  {
    "path": "examples/sample8.art",
    "chars": 1993,
    "preview": "do.import {grafito.art}\n\ndo [\n    graph.create \"sample8\" [\n        ;---------------------------------------------\n      "
  },
  {
    "path": "examples/sample9.art",
    "chars": 8581,
    "preview": ";---------------------------------------------\n; Import Grafito\n; and ... let's rock'n'roll! :)\n;-----------------------"
  },
  {
    "path": "grafito.art",
    "chars": 44351,
    "preview": "#!/usr/bin/env arturo\n;========================================================\n; Grafito\n;\n; SQLite-based Graph Databas"
  },
  {
    "path": "info.art",
    "chars": 71,
    "preview": "entry: {grafito}\nexecutable: {grafito}\ndepends: []\nrequires: [> 0.9.83]"
  },
  {
    "path": "logo.txt",
    "chars": 279,
    "preview": "                    __ _ _        \n                   / _(_) |       \n    __ _ _ __ __ _| |_ _| |_ ___  \n   / _` | '__/ "
  },
  {
    "path": "sql/filters/edgePropertyWithValue.sql",
    "chars": 57,
    "preview": "(json_extract(edges.properties, ?)|collate| |symb| |val|)"
  },
  {
    "path": "sql/filters/edgeWithAny.sql",
    "chars": 74,
    "preview": "(edges.tag=? AND (edges.target=? OR edges.source=?) |searchForProperties|)"
  },
  {
    "path": "sql/filters/edgeWithProperties.sql",
    "chars": 39,
    "preview": "(edges.tag=? AND |searchForProperties|)"
  },
  {
    "path": "sql/filters/edgeWithSource.sql",
    "chars": 54,
    "preview": "(edges.tag=? AND edges.source=? |searchForProperties|)"
  },
  {
    "path": "sql/filters/edgeWithTarget.sql",
    "chars": 54,
    "preview": "(edges.tag=? AND edges.target=? |searchForProperties|)"
  },
  {
    "path": "sql/filters/hasEdge.sql",
    "chars": 13,
    "preview": "(edges.tag=?)"
  },
  {
    "path": "sql/filters/hasProperty.sql",
    "chars": 39,
    "preview": "(json_extract(nodes.properties, ?)!='')"
  },
  {
    "path": "sql/filters/nodePropertyWithValue.sql",
    "chars": 57,
    "preview": "(json_extract(nodes.properties, ?)|collate| |symb| |val|)"
  },
  {
    "path": "sql/pragmas/caseInsensitiveLike.sql",
    "chars": 30,
    "preview": "PRAGMA case_sensitive_like = 0"
  },
  {
    "path": "sql/pragmas/caseSensitiveLike.sql",
    "chars": 30,
    "preview": "PRAGMA case_sensitive_like = 1"
  },
  {
    "path": "sql/procs/countEdges.sql",
    "chars": 27,
    "preview": "SELECT COUNT(id)\nFROM edges"
  },
  {
    "path": "sql/procs/countNodes.sql",
    "chars": 27,
    "preview": "SELECT COUNT(id)\nFROM nodes"
  },
  {
    "path": "sql/procs/createEdge.sql",
    "chars": 72,
    "preview": "INSERT INTO edges (tag, properties, source, target) \nVALUES (?, ?, ?, ?)"
  },
  {
    "path": "sql/procs/createNode.sql",
    "chars": 50,
    "preview": "INSERT INTO nodes (tag, properties) \nVALUES (?, ?)"
  },
  {
    "path": "sql/procs/deleteEdge.sql",
    "chars": 57,
    "preview": "DELETE \nFROM edges \nWHERE tag=? AND source=? AND target=?"
  },
  {
    "path": "sql/procs/deleteEdgeById.sql",
    "chars": 30,
    "preview": "DELETE \nFROM edges \nWHERE id=?"
  },
  {
    "path": "sql/procs/deleteNode.sql",
    "chars": 30,
    "preview": "DELETE \nFROM nodes \nWHERE id=?"
  },
  {
    "path": "sql/procs/deleteNodeEdges.sql",
    "chars": 46,
    "preview": "DELETE \nFROM edges \nWHERE source=? OR target=?"
  },
  {
    "path": "sql/procs/fetchNodes.sql",
    "chars": 83,
    "preview": "SELECT nodes.id, nodes.tag, nodes.properties\nFROM nodes\nWHERE nodes.tag=? |propies|"
  },
  {
    "path": "sql/procs/fetchNodes.withEdges.sql",
    "chars": 255,
    "preview": "SELECT nodes.id, nodes.tag, nodes.properties\nFROM nodes\nINNER JOIN edges\nON edges.source=nodes.id OR edges.target=nodes."
  },
  {
    "path": "sql/procs/getAllNodeTags.sql",
    "chars": 31,
    "preview": "SELECT DISTINCT tag \nFROM nodes"
  },
  {
    "path": "sql/procs/getMaxNodeId.sql",
    "chars": 26,
    "preview": "SELECT MAX(id) \nFROM nodes"
  },
  {
    "path": "sql/procs/getNode.sql",
    "chars": 64,
    "preview": "SELECT nodes.tag, nodes.properties \nFROM nodes \nWHERE nodes.id=?"
  },
  {
    "path": "sql/procs/getRelatedNodes.sql",
    "chars": 234,
    "preview": "SELECT nodes.id, nodes.tag, nodes.properties, source, target, edges.tag, edges.id AS label, edges.properties\nFROM edges "
  },
  {
    "path": "sql/procs/updateEdge.sql",
    "chars": 34,
    "preview": "UPDATE edges \nSET tag=?\nWHERE id=?"
  },
  {
    "path": "sql/procs/updateNode.sql",
    "chars": 48,
    "preview": "UPDATE nodes \nSET tag=?, properties=?\nWHERE id=?"
  },
  {
    "path": "sql/procs/updateNodeProperties.sql",
    "chars": 41,
    "preview": "UPDATE nodes \nSET properties=?\nWHERE id=?"
  },
  {
    "path": "sql/procs/updateNodeProperty.sql",
    "chars": 69,
    "preview": "UPDATE nodes \nSET properties = json_set(properties, ?, ?) \nWHERE id=?"
  },
  {
    "path": "sql/schema.sql",
    "chars": 744,
    "preview": "PRAGMA encoding=\"UTF-8\";\n\nDROP TABLE IF EXISTS nodes;\nCREATE TABLE nodes (\n    id          INTEGER PRIMARY KEY,\n    tag "
  },
  {
    "path": "ui/index.html",
    "chars": 45315,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta name=\"viewport\" content=\"width="
  },
  {
    "path": "ui/palettes/default.art",
    "chars": 151,
    "preview": "#130075\n#3d0075\n#bd8ed1\n#75250e\n#756c10\n#567513\n#A5D180\n#00752B\n#005f73\n#0a9396\n#94d2bd\n#e9d8a6\n#d1ad94\n#ee9b00\n#ca6702\n"
  },
  {
    "path": "ui/palettes/earthy.art",
    "chars": 127,
    "preview": "#c27e88\n#a9505c\n#c3887d \n#aa5d4e\n#7a4238\n#b2c77a\n#94b049 \n#6a7d34 \n#90b1b1 \n#679292 \n#496868 \n#ae9d92\n#8f786a \n#66564b \n"
  },
  {
    "path": "ui/palettes/inferno.art",
    "chars": 119,
    "preview": "#fcffa4\n#f2ea69\n#f8cd37\n#fcb014\n#fa9407\n#f47918\n#e9612b\n#d94d3d\n#c63d4d\n#b0315b\n#982766\n#801f6c\n#69166e\n#510e6c\n#380962"
  },
  {
    "path": "ui/palettes/light.art",
    "chars": 199,
    "preview": "#a0bfe8\n#6698da\n#3072c9\n#22518f\n#143156\n#eabd9e\n#de9563\n#ce6d2b\n#934e1f\n#582e12\n#edac9b\n#e27a5e\n#d44a25\n#97351a\n#5a1f10\n"
  },
  {
    "path": "ui/palettes/magma.art",
    "chars": 119,
    "preview": "#f0f921\n#fada24\n#febd2a\n#fba238\n#f48849\n#e97158\n#db5c68\n#cc4778\n#b83289\n#a31e9a\n#8b0aa5\n#6f00a8\n#5302a3\n#350498\n#0d0887"
  },
  {
    "path": "ui/palettes/pastel.art",
    "chars": 79,
    "preview": "#3bb2d0\n#3887be\n#8a8acb\n#56b881\n#50667f\n#41afa5\n#f9886c\n#e55e5e\n#ed6498\n#fbb03b"
  },
  {
    "path": "ui/palettes/playful.art",
    "chars": 95,
    "preview": "#7ac70c\n#8ee000\n#faa918\n#ffc715\n#d33131\n#e53838\n#1cb0f6\n#14d4f4\n#8549ba\n#a560e8\n#4c4c4c\n#6f6f6f"
  },
  {
    "path": "ui/palettes/rainbow.art",
    "chars": 87,
    "preview": "#4aae20\n#6cc751\n#225f1e\n#f8cc07\n#ff9300\n#e44436\n#cd3292\n#37aef3\n#0076ba\n#005888\n#8732cd"
  },
  {
    "path": "ui/palettes/vibrant.art",
    "chars": 79,
    "preview": "#ff6050\n#ff0e83\n#d54262\n#813867\n#66336e\n#5677fc\n#341539\n#9013fe\n#ffc208\n#00cc99"
  },
  {
    "path": "ui/palettes/viridis.art",
    "chars": 119,
    "preview": "#fde725\n#d0e11c\n#a0da39\n#73d056\n#4ac16d\n#2db27d\n#1fa187\n#21918c\n#277f8e\n#2e6e8e\n#365c8d\n#3f4788\n#46327e\n#481b6d\n#440154"
  },
  {
    "path": "ui/scripts/ace/ace.js",
    "chars": 323132,
    "preview": "(function(){var t=function(){return this}();var n=function(e,t,r){\"string\"==typeof e?(2==arguments.length&&(r=t),n.modul"
  },
  {
    "path": "ui/scripts/ace/modes/grafito.js",
    "chars": 12826,
    "preview": "ace.define(\"ace/mode/grafito_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_"
  },
  {
    "path": "ui/scripts/ace/themes/monokai.js",
    "chars": 2845,
    "preview": "ace.define(\"ace/theme/monokai\", [\"require\", \"exports\", \"module\", \"ace/lib/dom\"], function(e, t, n) {\n    t.isDark = !0, "
  },
  {
    "path": "ui/scripts/app.js",
    "chars": 38071,
    "preview": "\nconst toastSuccess = (msg)=>{ iziToast.success({title: 'OK', message: msg})};\nconst toastWarning = (msg)=>{ iziToast.wa"
  },
  {
    "path": "ui/styles/app.less",
    "chars": 114106,
    "preview": "/****************************************************\n Global variables\n ***********************************************"
  }
]

About this extraction

This page contains the full source code of the arturo-lang/grafito GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 72 files (734.5 KB), approximately 248.9k tokens, and a symbol index with 102 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!