different-ai / file-organizer-2000

AI-powered organization and chat assistant for Obsidian
https://fileorganizer2000.com
MIT License
332 stars 40 forks source link

Does frontmatter tagging also work for Obsidian's properties? #140

Open Cossackx opened 4 months ago

Cossackx commented 4 months ago

With the addition of Properties, I continue to wonder if that is the better way to go vs. Nested tag. Can FO2K add properties that I already have or is it just tags?

benjaminshafii commented 4 months ago

@Cossackx not today. but we've been thinking on how to make this more extensible.

would you mind sharing a bit more of your use case ? (helps us develop things in the right direction)

Cossackx commented 3 months ago

Example List of Obsidian Properties

Types

  1. Project

    • projectName: The name of the project.
    • dueDate: The project's due date.
    • status: Current status of the project (e.g., active, completed).
  2. Task

    • taskName: The name of the task.
    • dueDate: The task's due date.
    • priority: Task priority level (e.g., high, medium, low).
    • status: Current status of the task (e.g., not started, in progress, completed).
  3. Idea

    • ideaTitle: Title of the idea.
    • description: Brief description of the idea.
    • category: Category of the idea (e.g., business, personal).
  4. Event

    • eventName: The name of the event.
    • eventDate: The date of the event.
    • location: The location where the event will take place.

Property Descriptions

  1. projectName

    • Description: The title or name assigned to a specific project.
    • Example: "Website Redesign"
  2. dueDate

    • Description: The deadline or due date for completing a task or project.
    • Example: "2024-12-31"
  3. status

    • Description: The current state or progress of a task or project.
    • Example: "active", "completed"
  4. priority

    • Description: The level of importance assigned to a task.
    • Example: "high", "medium", "low"

Relationships

  1. _is_relatedto

    • Description: Indicates a general relationship between two notes.
    • Example: "Note1 _is_relatedto Note2"
  2. _dependson

    • Description: Indicates that one note or project is dependent on another.
    • Example: "Task1 _dependson Task2"
  3. _contributesto

    • Description: Indicates that one note contributes to another.
    • Example: "ResearchNote _contributesto ProjectNote"
  4. _is_partof

    • Description: Indicates that one note is part of a larger project or collection.
    • Example: "Task1 _is_partof Project1"

Example Note with Properties and Relationships

Note Content:

---
type: project
projectName: "Develop New Feature"
dueDate: "2024-12-31"
status: "active"
---

# Project Plan

## Description
Details of the new project plan.

## Tasks
- Task1 _depends_on_ Task2
- ResearchNote _contributes_to_ ProjectPlan

## Diagram
![Project Diagram](../Attachments/Images/Diagrams/project-diagram.png)

By defining these properties and relationships, you can maintain a well-organized, flexible PKM system in Obsidian.

Using properties rather than nested tags in Obsidian can offer several advantages:

Advantages of Using Properties

  1. Structured Data: Properties allow for more structured and detailed metadata, making it easier to capture specific information about each note.
  2. Flexible Queries: Properties enable more powerful and flexible querying with tools like Dataview, allowing you to generate dynamic views based on multiple criteria.
  3. Consistency: Properties enforce a consistent schema across your notes, ensuring that specific attributes are always captured in the same way.
  4. Clarity: Properties can make the data more readable and self-explanatory compared to nested tags.

Example Comparison

Using Properties:

---
type: project
projectName: "Develop New Feature"
dueDate: "2024-12-31"
status: "active"
---

Using Nested Tags:

#project/develop_new_feature #due/2024-12-31 #status/active

Queries

Property-Based Query:

table projectName, dueDate, status
from "Notes"
where type = "project"

Tag-Based Query:

table file.name
from "Notes"
where contains(tags, "#project/develop_new_feature") and contains(tags, "#status/active")

Conclusion

While nested tags can also provide some level of organization, properties offer a more structured and powerful way to manage and query your notes, ensuring better consistency and clarity in your PKM system.

Cossackx commented 3 months ago

for example, I don't want FO2K to rigidly separate everything into folders. Instead, I would like it to adjust the front matter properties and keep everything in the least amount of folders as possible, as I determine.