<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://cullyclc.opencommons.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pinfold</id>
	<title>clcwiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://cullyclc.opencommons.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pinfold"/>
	<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/Special:Contributions/Pinfold"/>
	<updated>2026-05-13T11:44:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=601</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=601"/>
		<updated>2025-11-06T18:27:54Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Solid_Project&amp;diff=600</id>
		<title>Solid Project</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Solid_Project&amp;diff=600"/>
		<updated>2025-11-06T18:26:33Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: Created page with &amp;quot;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.__NOTOC__  Below is a structured work plan focusing on clarity, security, and reusability.  ==🧭 Objective==  Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hoste...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1. Register an App with solidcommunity.net&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
Obtain:&lt;br /&gt;
*client_id&lt;br /&gt;
*client_secret&lt;br /&gt;
*redirect_uri&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2. Implement OIDC Flow&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
    from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
    authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
    token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
    authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
    print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
    # After user grants access, use callback URL&lt;br /&gt;
    token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;✅ Deliverable: Authenticated access token for use in CRUD operations.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
    import requests&lt;br /&gt;
    from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
    class SolidPodClient:&lt;br /&gt;
        def __init__(self, base_url, access_token):&lt;br /&gt;
            self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
            self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
        def read(self, path):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            r = requests.get(url, headers=self.headers)&lt;br /&gt;
            g = Graph()&lt;br /&gt;
            g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
            return g&lt;br /&gt;
&lt;br /&gt;
        def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
            return r.status_code&lt;br /&gt;
&lt;br /&gt;
        def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
            return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
        def delete(self, path):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;✅ Deliverable: A reusable Python module that can:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.1. Test Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
     # Example: Create a resource&lt;br /&gt;
     data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     @prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
     &amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
        schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
        schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
     # Example: Read resource&lt;br /&gt;
     graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
     for s, p, o in graph:&lt;br /&gt;
         print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.1. Web Access Control (WAC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
 @prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
    &amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.2. Automate ACL Management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=599</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=599"/>
		<updated>2025-11-06T18:25:35Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1. Register an App with solidcommunity.net&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
Obtain:&lt;br /&gt;
*client_id&lt;br /&gt;
*client_secret&lt;br /&gt;
*redirect_uri&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2. Implement OIDC Flow&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
    from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
    authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
    token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
    authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
    print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
    # After user grants access, use callback URL&lt;br /&gt;
    token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;✅ Deliverable: Authenticated access token for use in CRUD operations.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
    import requests&lt;br /&gt;
    from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
    class SolidPodClient:&lt;br /&gt;
        def __init__(self, base_url, access_token):&lt;br /&gt;
            self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
            self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
        def read(self, path):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            r = requests.get(url, headers=self.headers)&lt;br /&gt;
            g = Graph()&lt;br /&gt;
            g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
            return g&lt;br /&gt;
&lt;br /&gt;
        def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
            return r.status_code&lt;br /&gt;
&lt;br /&gt;
        def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
            return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
        def delete(self, path):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;✅ Deliverable: A reusable Python module that can:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.1. Test Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
     # Example: Create a resource&lt;br /&gt;
     data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     @prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
     &amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
        schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
        schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
     # Example: Read resource&lt;br /&gt;
     graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
     for s, p, o in graph:&lt;br /&gt;
         print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.1. Web Access Control (WAC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
 @prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
    &amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.2. Automate ACL Management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=598</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=598"/>
		<updated>2025-11-06T18:24:50Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🧠 2. Authentication Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1. Register an App with solidcommunity.net&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
Obtain:&lt;br /&gt;
*client_id&lt;br /&gt;
*client_secret&lt;br /&gt;
*redirect_uri&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2. Implement OIDC Flow&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
    from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
    authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
    token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
    authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
    print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
    # After user grants access, use callback URL&lt;br /&gt;
    token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;✅ Deliverable: Authenticated access token for use in CRUD operations.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
    import requests&lt;br /&gt;
    from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
    class SolidPodClient:&lt;br /&gt;
        def __init__(self, base_url, access_token):&lt;br /&gt;
            self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
            self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
        def read(self, path):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            r = requests.get(url, headers=self.headers)&lt;br /&gt;
            g = Graph()&lt;br /&gt;
            g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
            return g&lt;br /&gt;
&lt;br /&gt;
        def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
            return r.status_code&lt;br /&gt;
&lt;br /&gt;
        def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
            return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
        def delete(self, path):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;✅ Deliverable: A reusable Python module that can:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.1. Test Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
     # Example: Create a resource&lt;br /&gt;
     data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     @prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
     &amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
        schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
        schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
     # Example: Read resource&lt;br /&gt;
     graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
     for s, p, o in graph:&lt;br /&gt;
         print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.1. Web Access Control (WAC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
 @prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
    &amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.2. Automate ACL Management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=597</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=597"/>
		<updated>2025-11-06T18:21:45Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🧱 3. Core CRUD Functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
    import requests&lt;br /&gt;
    from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
    class SolidPodClient:&lt;br /&gt;
        def __init__(self, base_url, access_token):&lt;br /&gt;
            self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
            self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
        def read(self, path):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            r = requests.get(url, headers=self.headers)&lt;br /&gt;
            g = Graph()&lt;br /&gt;
            g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
            return g&lt;br /&gt;
&lt;br /&gt;
        def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
            return r.status_code&lt;br /&gt;
&lt;br /&gt;
        def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
            return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
        def delete(self, path):&lt;br /&gt;
            url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
            return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;✅ Deliverable: A reusable Python module that can:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.1. Test Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
     # Example: Create a resource&lt;br /&gt;
     data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     @prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
     &amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
        schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
        schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
     # Example: Read resource&lt;br /&gt;
     graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
     for s, p, o in graph:&lt;br /&gt;
         print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.1. Web Access Control (WAC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
 @prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
    &amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.2. Automate ACL Management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=596</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=596"/>
		<updated>2025-11-06T18:19:19Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* ⚙️ 4. Testing and Verification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.1. Test Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
     # Example: Create a resource&lt;br /&gt;
     data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     @prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
     &amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
        schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
        schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
     &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
     client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
     # Example: Read resource&lt;br /&gt;
     graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
     for s, p, o in graph:&lt;br /&gt;
         print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.1. Web Access Control (WAC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
 @prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
    &amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.2. Automate ACL Management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=595</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=595"/>
		<updated>2025-11-06T18:18:31Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* ⚙️ 4. Testing and Verification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.1. Test Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
 # Example: Create a resource&lt;br /&gt;
 data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 @prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
 &amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
    schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
    schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
 # Example: Read resource&lt;br /&gt;
 graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
 for s, p, o in graph:&lt;br /&gt;
     print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.1. Web Access Control (WAC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
 @prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
    &amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.2. Automate ACL Management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=594</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=594"/>
		<updated>2025-11-06T18:16:42Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🔐 5. Access Control (Optional Extension) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.1. Web Access Control (WAC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
 @prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
    &amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.2. Automate ACL Management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=593</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=593"/>
		<updated>2025-11-06T18:15:41Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🔐 5. Access Control (Optional Extension) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.1. Web Access Control (WAC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.2. Automate ACL Management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=592</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=592"/>
		<updated>2025-11-06T18:14:42Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 📘 7. Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 20px&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 100px&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 300px&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=591</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=591"/>
		<updated>2025-11-06T18:13:51Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 📘 7. Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;width: 30%&amp;quot;|&lt;br /&gt;
| style=&amp;quot;width: 30%&amp;quot;|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width: 30%&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=590</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=590"/>
		<updated>2025-11-06T18:11:29Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 📘 7. Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=589</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=589"/>
		<updated>2025-11-06T18:10:39Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🚀 6. Packaging and Distribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
             solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
             ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=588</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=588"/>
		<updated>2025-11-06T18:09:45Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🚀 6. Packaging and Distribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
:::: &amp;lt;code&amp;gt;solid_client/&amp;lt;/code&amp;gt;&lt;br /&gt;
:::: &amp;lt;code&amp;gt;├── __init__.py&amp;lt;/code&amp;gt;&lt;br /&gt;
:::: &amp;lt;code&amp;gt;├── auth.py&amp;lt;/code&amp;gt;&lt;br /&gt;
:::: &amp;lt;code&amp;gt;├── client.py&amp;lt;/code&amp;gt;&lt;br /&gt;
:::: &amp;lt;code&amp;gt;├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=587</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=587"/>
		<updated>2025-11-06T18:09:09Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🚀 6. Packaging and Distribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
:::: &amp;lt;code&amp;gt;solid_client/&lt;br /&gt;
:::: ├── __init__.py&lt;br /&gt;
:::: ├── auth.py&lt;br /&gt;
:::: ├── client.py&lt;br /&gt;
:::: ├── utils.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=586</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=586"/>
		<updated>2025-11-06T18:07:54Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🚀 6. Packaging and Distribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
::: solid_client/&lt;br /&gt;
::: ├── __init__.py&lt;br /&gt;
::: ├── auth.py&lt;br /&gt;
::: ├── client.py&lt;br /&gt;
::: ├── utils.py&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=585</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=585"/>
		<updated>2025-11-06T18:05:35Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🚀 6. Packaging and Distribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
 solid_client/&lt;br /&gt;
 ├── __init__.py&lt;br /&gt;
 ├── auth.py&lt;br /&gt;
 ├── client.py&lt;br /&gt;
 ├── utils.py&lt;br /&gt;
&lt;br /&gt;
*Add a &amp;lt;code&amp;gt;setup.py&amp;lt;/code&amp;gt; and README.md&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=584</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=584"/>
		<updated>2025-11-06T18:04:36Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 🚀 6. Packaging and Distribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
*Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
 solid_client/&lt;br /&gt;
 ├── __init__.py&lt;br /&gt;
 ├── auth.py&lt;br /&gt;
 ├── client.py&lt;br /&gt;
 ├── utils.py&lt;br /&gt;
&lt;br /&gt;
*Add a setup.py and README.md&lt;br /&gt;
*Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=583</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=583"/>
		<updated>2025-11-06T18:03:40Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 📘 7. Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=582</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=582"/>
		<updated>2025-11-06T18:03:30Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 📘 7. Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication&lt;br /&gt;
|Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=581</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=581"/>
		<updated>2025-11-06T18:02:58Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 📘 7. Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Feature&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|🧩 JSON-LD Support&lt;br /&gt;
|Parse/write JSON-LD data natively&lt;br /&gt;
|-&lt;br /&gt;
|🔄 SPARQL Queries&lt;br /&gt;
|Support querying via SPARQL endpoints&lt;br /&gt;
|-&lt;br /&gt;
|🔒 DID/VC Authentication|&lt;br /&gt;
Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
|-&lt;br /&gt;
|🌐 Web Interface&lt;br /&gt;
|Build a lightweight Streamlit or Flask UI&lt;br /&gt;
|-&lt;br /&gt;
|📊 Integration	&lt;br /&gt;
|Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
|-&lt;br /&gt;
|🗂️&lt;br /&gt;
|Summary Timeline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=580</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=580"/>
		<updated>2025-11-06T17:59:24Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 📘 7. Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feature	Description&#039;&#039;&#039;&lt;br /&gt;
*🧩 JSON-LD Support	Parse/write JSON-LD data natively&lt;br /&gt;
*🔄 SPARQL Queries	Support querying via SPARQL endpoints&lt;br /&gt;
*🔒 DID/VC Authentication	Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
*🌐 Web Interface	Build a lightweight Streamlit or Flask UI&lt;br /&gt;
*📊 Integration	Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
*🗂️ Summary Timeline&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=579</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=579"/>
		<updated>2025-11-06T17:58:46Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: /* 📘 7. Future Enhancements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feature	Description&#039;&#039;&#039;&lt;br /&gt;
*🧩 JSON-LD Support	Parse/write JSON-LD data natively&lt;br /&gt;
*🔄 SPARQL Queries	Support querying via SPARQL endpoints&lt;br /&gt;
*🔒 DID/VC Authentication	Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
*🌐 Web Interface	Build a lightweight Streamlit or Flask UI&lt;br /&gt;
*📊 Integration	Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
*🗂️ Summary Timeline&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;Week&#039;&#039;&#039;|&#039;&#039;&#039;Task&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=578</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=578"/>
		<updated>2025-11-06T17:57:48Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
==🧠 2. Authentication Module==&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
==🧱 3. Core CRUD Functions==&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
==⚙️ 4. Testing and Verification==&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
==🔐 5. Access Control (Optional Extension)==&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
==🚀 6. Packaging and Distribution==&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
==📘 7. Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Feature	Description&#039;&#039;&#039;&lt;br /&gt;
*🧩 JSON-LD Support	Parse/write JSON-LD data natively&lt;br /&gt;
*🔄 SPARQL Queries	Support querying via SPARQL endpoints&lt;br /&gt;
*🔒 DID/VC Authentication	Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
*🌐 Web Interface	Build a lightweight Streamlit or Flask UI&lt;br /&gt;
*📊 Integration	Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
*🗂️ Summary Timeline&lt;br /&gt;
&lt;br /&gt;
{|Week|Task&lt;br /&gt;
|-&lt;br /&gt;
|1|Study Solid protocol and register app&lt;br /&gt;
|-&lt;br /&gt;
|2|Implement authentication and token retrieval&lt;br /&gt;
|-&lt;br /&gt;
|3|Build SolidPodClient CRUD module&lt;br /&gt;
|-&lt;br /&gt;
|4|Test against solidcommunity.net Pods&lt;br /&gt;
|-&lt;br /&gt;
|5|Add ACL and RDF utilities&lt;br /&gt;
|-&lt;br /&gt;
|6|Package and document&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=577</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=577"/>
		<updated>2025-11-06T17:53:48Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2. Development Environment&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
🧠 2. Authentication Module&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
🧱 3. Core CRUD Functions&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
⚙️ 4. Testing and Verification&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
🔐 5. Access Control (Optional Extension)&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
🚀 6. Packaging and Distribution&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
📘 7. Future Enhancements&lt;br /&gt;
Feature	Description&lt;br /&gt;
🧩 JSON-LD Support	Parse/write JSON-LD data natively&lt;br /&gt;
🔄 SPARQL Queries	Support querying via SPARQL endpoints&lt;br /&gt;
🔒 DID/VC Authentication	Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
🌐 Web Interface	Build a lightweight Streamlit or Flask UI&lt;br /&gt;
📊 Integration	Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
🗂️ Summary Timeline&lt;br /&gt;
Week	Task&lt;br /&gt;
1	Study Solid protocol and register app&lt;br /&gt;
2	Implement authentication and token retrieval&lt;br /&gt;
3	Build SolidPodClient CRUD module&lt;br /&gt;
4	Test against solidcommunity.net Pods&lt;br /&gt;
5	Add ACL and RDF utilities&lt;br /&gt;
6	Package and document&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=576</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=576"/>
		<updated>2025-11-06T17:53:13Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at https://solidcommunity.net (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review [https://solidproject.org/TR/protocol Solid Protocol] and [https://solidproject.org/for_developers Solid API].&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
*WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
*Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
*Access control: Uses WAC or ACP&lt;br /&gt;
*Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
1.2. Development Environment&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
 python3 -m venv venv&lt;br /&gt;
 source venv/bin/activate&lt;br /&gt;
 pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
🧠 2. Authentication Module&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
🧱 3. Core CRUD Functions&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
⚙️ 4. Testing and Verification&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
🔐 5. Access Control (Optional Extension)&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
🚀 6. Packaging and Distribution&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
📘 7. Future Enhancements&lt;br /&gt;
Feature	Description&lt;br /&gt;
🧩 JSON-LD Support	Parse/write JSON-LD data natively&lt;br /&gt;
🔄 SPARQL Queries	Support querying via SPARQL endpoints&lt;br /&gt;
🔒 DID/VC Authentication	Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
🌐 Web Interface	Build a lightweight Streamlit or Flask UI&lt;br /&gt;
📊 Integration	Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
🗂️ Summary Timeline&lt;br /&gt;
Week	Task&lt;br /&gt;
1	Study Solid protocol and register app&lt;br /&gt;
2	Implement authentication and token retrieval&lt;br /&gt;
3	Build SolidPodClient CRUD module&lt;br /&gt;
4	Test against solidcommunity.net Pods&lt;br /&gt;
5	Add ACL and RDF utilities&lt;br /&gt;
6	Package and document&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=575</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=575"/>
		<updated>2025-11-06T17:47:39Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at [solidcommunity.net] (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The interface will:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1. Understand the Solid Protocol&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review Solid Protocol&lt;br /&gt;
 and Solid API&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
&lt;br /&gt;
Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
&lt;br /&gt;
Access control: Uses WAC or ACP&lt;br /&gt;
&lt;br /&gt;
Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
1.2. Development Environment&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
&lt;br /&gt;
python3 -m venv venv&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
🧠 2. Authentication Module&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
🧱 3. Core CRUD Functions&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
⚙️ 4. Testing and Verification&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
🔐 5. Access Control (Optional Extension)&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
🚀 6. Packaging and Distribution&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
📘 7. Future Enhancements&lt;br /&gt;
Feature	Description&lt;br /&gt;
🧩 JSON-LD Support	Parse/write JSON-LD data natively&lt;br /&gt;
🔄 SPARQL Queries	Support querying via SPARQL endpoints&lt;br /&gt;
🔒 DID/VC Authentication	Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
🌐 Web Interface	Build a lightweight Streamlit or Flask UI&lt;br /&gt;
📊 Integration	Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
🗂️ Summary Timeline&lt;br /&gt;
Week	Task&lt;br /&gt;
1	Study Solid protocol and register app&lt;br /&gt;
2	Implement authentication and token retrieval&lt;br /&gt;
3	Build SolidPodClient CRUD module&lt;br /&gt;
4	Test against solidcommunity.net Pods&lt;br /&gt;
5	Add ACL and RDF utilities&lt;br /&gt;
6	Package and document&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=574</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=574"/>
		<updated>2025-11-06T17:45:31Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Build a Python CRUD interface for the Solid server at [solidcommunity.net] (managed by the Open Data Institute) allowing structured programmatic interaction with Solid Pods and demonstrating decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan tailored for your goals — focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
==🧭 Objective==&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
The interface should:&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
==🧩 1. Background &amp;amp; Setup==&lt;br /&gt;
&lt;br /&gt;
1.1. Understand the Solid Protocol&lt;br /&gt;
&lt;br /&gt;
Review Solid Protocol&lt;br /&gt;
 and Solid API&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
&lt;br /&gt;
Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
&lt;br /&gt;
Access control: Uses WAC or ACP&lt;br /&gt;
&lt;br /&gt;
Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
1.2. Development Environment&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
&lt;br /&gt;
python3 -m venv venv&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
🧠 2. Authentication Module&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
🧱 3. Core CRUD Functions&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
⚙️ 4. Testing and Verification&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
🔐 5. Access Control (Optional Extension)&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
🚀 6. Packaging and Distribution&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
📘 7. Future Enhancements&lt;br /&gt;
Feature	Description&lt;br /&gt;
🧩 JSON-LD Support	Parse/write JSON-LD data natively&lt;br /&gt;
🔄 SPARQL Queries	Support querying via SPARQL endpoints&lt;br /&gt;
🔒 DID/VC Authentication	Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
🌐 Web Interface	Build a lightweight Streamlit or Flask UI&lt;br /&gt;
📊 Integration	Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
🗂️ Summary Timeline&lt;br /&gt;
Week	Task&lt;br /&gt;
1	Study Solid protocol and register app&lt;br /&gt;
2	Implement authentication and token retrieval&lt;br /&gt;
3	Build SolidPodClient CRUD module&lt;br /&gt;
4	Test against solidcommunity.net Pods&lt;br /&gt;
5	Add ACL and RDF utilities&lt;br /&gt;
6	Package and document&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=573</id>
		<title>User:Pinfold</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Pinfold&amp;diff=573"/>
		<updated>2025-11-06T17:44:24Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: Created page with &amp;quot;building a Python CRUD interface for the Solid server at solidcommunity.net (managed by the Open Data Institute) will allow structured programmatic interaction with Solid Pods and demonstrate decentralized data principles in action.  Below is a structured work plan tailored for your goals — focusing on clarity, security, and reusability.  🧭 Objective  Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;building a Python CRUD interface for the Solid server at solidcommunity.net (managed by the Open Data Institute) will allow structured programmatic interaction with Solid Pods and demonstrate decentralized data principles in action.&lt;br /&gt;
&lt;br /&gt;
Below is a structured work plan tailored for your goals — focusing on clarity, security, and reusability.&lt;br /&gt;
&lt;br /&gt;
🧭 Objective&lt;br /&gt;
&lt;br /&gt;
Develop a Python-based CRUD (Create, Read, Update, Delete) interface for interacting with user data stored on Solid Pods hosted at https://solidcommunity.net.&lt;br /&gt;
The interface should:&lt;br /&gt;
&lt;br /&gt;
Authenticate via Solid OIDC (OpenID Connect)&lt;br /&gt;
&lt;br /&gt;
Perform RDF-based data operations (read/write triples)&lt;br /&gt;
&lt;br /&gt;
Be modular and reusable in scripts or web apps&lt;br /&gt;
&lt;br /&gt;
🧩 1. Background &amp;amp; Setup&lt;br /&gt;
1.1. Understand the Solid Protocol&lt;br /&gt;
&lt;br /&gt;
Review Solid Protocol&lt;br /&gt;
 and Solid API&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Understand:&lt;br /&gt;
&lt;br /&gt;
WebID: User identity (https://username.solidcommunity.net/profile/card#me)&lt;br /&gt;
&lt;br /&gt;
Pod: Personal data store (https://username.solidcommunity.net/public/)&lt;br /&gt;
&lt;br /&gt;
Access control: Uses WAC or ACP&lt;br /&gt;
&lt;br /&gt;
Authentication: OIDC using solidcommunity.net as the issuer&lt;br /&gt;
&lt;br /&gt;
1.2. Development Environment&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
&lt;br /&gt;
python3 -m venv venv&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
pip install requests rdflib solid-auth-client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(We’ll use requests for HTTP, rdflib for RDF parsing, and a Python OIDC client for authentication.)&lt;br /&gt;
&lt;br /&gt;
🧠 2. Authentication Module&lt;br /&gt;
2.1. Register an App with solidcommunity.net&lt;br /&gt;
&lt;br /&gt;
Visit: https://solidcommunity.net/registerApp&lt;br /&gt;
&lt;br /&gt;
Obtain:&lt;br /&gt;
&lt;br /&gt;
client_id&lt;br /&gt;
&lt;br /&gt;
client_secret&lt;br /&gt;
&lt;br /&gt;
redirect_uri&lt;br /&gt;
&lt;br /&gt;
2.2. Implement OIDC Flow&lt;br /&gt;
&lt;br /&gt;
Use solid_oidc or a generic OIDC library like requests-oauthlib:&lt;br /&gt;
&lt;br /&gt;
from requests_oauthlib import OAuth2Session&lt;br /&gt;
&lt;br /&gt;
authorization_base_url = &amp;quot;https://solidcommunity.net/.well-known/openid-configuration&amp;quot;&lt;br /&gt;
token_url = &amp;quot;https://solidcommunity.net/token&amp;quot;&lt;br /&gt;
&lt;br /&gt;
solid = OAuth2Session(client_id, redirect_uri=redirect_uri)&lt;br /&gt;
authorization_url, state = solid.authorization_url(authorization_base_url)&lt;br /&gt;
print(&amp;quot;Visit:&amp;quot;, authorization_url)&lt;br /&gt;
&lt;br /&gt;
# After user grants access, use callback URL&lt;br /&gt;
token = solid.fetch_token(token_url, client_secret=client_secret, authorization_response=callback_url)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: Authenticated access token for use in CRUD operations.&lt;br /&gt;
&lt;br /&gt;
🧱 3. Core CRUD Functions&lt;br /&gt;
&lt;br /&gt;
Define a class SolidPodClient:&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
from rdflib import Graph&lt;br /&gt;
&lt;br /&gt;
class SolidPodClient:&lt;br /&gt;
    def __init__(self, base_url, access_token):&lt;br /&gt;
        self.base_url = base_url.rstrip(&#039;/&#039;)&lt;br /&gt;
        self.headers = {&amp;quot;Authorization&amp;quot;: f&amp;quot;Bearer {access_token}&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
    def read(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.get(url, headers=self.headers)&lt;br /&gt;
        g = Graph()&lt;br /&gt;
        g.parse(data=r.text, format=&#039;turtle&#039;)&lt;br /&gt;
        return g&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        r = requests.put(url, headers={**self.headers, &amp;quot;Content-Type&amp;quot;: content_type}, data=data)&lt;br /&gt;
        return r.status_code&lt;br /&gt;
&lt;br /&gt;
    def update(self, path, data, content_type=&amp;quot;text/turtle&amp;quot;):&lt;br /&gt;
        return self.create(path, data, content_type)&lt;br /&gt;
&lt;br /&gt;
    def delete(self, path):&lt;br /&gt;
        url = f&amp;quot;{self.base_url}/{path.lstrip(&#039;/&#039;)}&amp;quot;&lt;br /&gt;
        return requests.delete(url, headers=self.headers).status_code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
✅ Deliverable: A reusable Python module that can:&lt;br /&gt;
&lt;br /&gt;
Read RDF data from the Pod&lt;br /&gt;
&lt;br /&gt;
Write (create/update) new resources&lt;br /&gt;
&lt;br /&gt;
Delete resources&lt;br /&gt;
&lt;br /&gt;
⚙️ 4. Testing and Verification&lt;br /&gt;
4.1. Test Environment&lt;br /&gt;
&lt;br /&gt;
Use a test Pod at https://yourusername.solidcommunity.net/public/test/.&lt;br /&gt;
&lt;br /&gt;
4.2. Example Operations&lt;br /&gt;
# Example: Create a resource&lt;br /&gt;
data = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
@prefix schema: &amp;lt;http://schema.org/&amp;gt; .&lt;br /&gt;
&amp;lt;&amp;gt; a schema:Event ;&lt;br /&gt;
   schema:name &amp;quot;Cully Community Meeting&amp;quot; ;&lt;br /&gt;
   schema:startDate &amp;quot;2025-11-10&amp;quot; .&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
client.create(&amp;quot;public/test/event.ttl&amp;quot;, data)&lt;br /&gt;
&lt;br /&gt;
# Example: Read resource&lt;br /&gt;
graph = client.read(&amp;quot;public/test/event.ttl&amp;quot;)&lt;br /&gt;
for s, p, o in graph:&lt;br /&gt;
    print(s, p, o)&lt;br /&gt;
&lt;br /&gt;
🔐 5. Access Control (Optional Extension)&lt;br /&gt;
5.1. Web Access Control (WAC)&lt;br /&gt;
&lt;br /&gt;
Solid allows .acl files to specify access:&lt;br /&gt;
&lt;br /&gt;
@prefix acl: &amp;lt;http://www.w3.org/ns/auth/acl#&amp;gt; .&lt;br /&gt;
&amp;lt;#owner&amp;gt;&lt;br /&gt;
    a acl:Authorization ;&lt;br /&gt;
    acl:agent &amp;lt;https://yourusername.solidcommunity.net/profile/card#me&amp;gt; ;&lt;br /&gt;
    acl:accessTo &amp;lt;./event.ttl&amp;gt; ;&lt;br /&gt;
    acl:mode acl:Read, acl:Write, acl:Control .&lt;br /&gt;
&lt;br /&gt;
5.2. Automate ACL Management&lt;br /&gt;
&lt;br /&gt;
Add an optional set_permissions() function to your client.&lt;br /&gt;
&lt;br /&gt;
🚀 6. Packaging and Distribution&lt;br /&gt;
&lt;br /&gt;
Organize your code as a Python package:&lt;br /&gt;
&lt;br /&gt;
solid_client/&lt;br /&gt;
├── __init__.py&lt;br /&gt;
├── auth.py&lt;br /&gt;
├── client.py&lt;br /&gt;
├── utils.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a setup.py and README.md&lt;br /&gt;
&lt;br /&gt;
Optional: Publish to PyPI as solid-crud-client&lt;br /&gt;
&lt;br /&gt;
📘 7. Future Enhancements&lt;br /&gt;
Feature	Description&lt;br /&gt;
🧩 JSON-LD Support	Parse/write JSON-LD data natively&lt;br /&gt;
🔄 SPARQL Queries	Support querying via SPARQL endpoints&lt;br /&gt;
🔒 DID/VC Authentication	Integrate W3C DIDs and Verifiable Credentials&lt;br /&gt;
🌐 Web Interface	Build a lightweight Streamlit or Flask UI&lt;br /&gt;
📊 Integration	Connect with Semantic MediaWiki or Linked Data dashboards&lt;br /&gt;
🗂️ Summary Timeline&lt;br /&gt;
Week	Task&lt;br /&gt;
1	Study Solid protocol and register app&lt;br /&gt;
2	Implement authentication and token retrieval&lt;br /&gt;
3	Build SolidPodClient CRUD module&lt;br /&gt;
4	Test against solidcommunity.net Pods&lt;br /&gt;
5	Add ACL and RDF utilities&lt;br /&gt;
6	Package and document&lt;br /&gt;
&lt;br /&gt;
Would you like me to generate a starter Python repository (with full file structure and working code for authentication + CRUD) so you can clone and start from it?&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=New_to_Portland_Northeast_Ride_2025&amp;diff=572</id>
		<title>New to Portland Northeast Ride 2025</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=New_to_Portland_Northeast_Ride_2025&amp;diff=572"/>
		<updated>2025-07-23T18:51:39Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Event&lt;br /&gt;
|Image=New-to-Portland-Bikeride-2025.png&lt;br /&gt;
|Title=New to Portland Northeast Ride 2025&lt;br /&gt;
|Description=This free community bike ride (for new Portlanders) explores low-stress cycling routes through Roseway, Cully and Concordia. The moderate-paced (~7.3 mi) ride starts and ends at Wellington Park (just off NE Mason) and includes neighborhood greenway routes and a social stop.&lt;br /&gt;
|Start Date=2025-07-23&lt;br /&gt;
|End Date=2025-07-23&lt;br /&gt;
|Location=6635 NE Mason St&lt;br /&gt;
|Website=https://www.portland.gov/transportation/walking-biking-transit-safety/events/2025/7/23/new-portland-northeast-ride&lt;br /&gt;
|Virtual Access=No&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=571</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=571"/>
		<updated>2025-07-23T18:27:51Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Asset&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#display_map: 45° 33&#039; 25.20&amp;quot; N, 122° 35&#039; 28.32&amp;quot; W~Cully Learning Center~Learning and digital skills hub hosted by Hacienda CDC. Includes computer distribution, STEM programs, job &amp;amp; career support~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Cully Neighborhood Farm~One‑acre urban farm providing CSA produce, educational workshops, seasonal farm‑stand; partnerships include Trinity Lutheran and Free Geek~Community.svg;45° 33&#039; 54.62&amp;quot; N, 122° 35&#039; 13.65&amp;quot; W~Cully Park~25-acre multi-use park including community gardens, play areas, soccer field~Park.svg;45° 33&#039; 9.00&amp;quot; N, 122° 37&#039; 4.80&amp;quot; W~Khunamokwst Park~2.43‑acre public park with playground, skatepark, water feature. First park in Portland with an Indigenous Chinook Jargon name~Park.svg;45° 34&#039; 17.40&amp;quot; N, 122° 40&#039; 55.20&amp;quot; W~North Portland Library~Multnomah County branch offering ADA‑accessible computers, community rooms, Spanish collections, Black Resources Collection, and frequent public events/workshops~Library.svg;45° 34&#039; 15.60&amp;quot; N, 122° 36&#039; 21.60&amp;quot; W~Sacajawea Park~4.86‑acre neighborhood park with off‑leash dog area~Park.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Side Yard Farm &amp;amp; Kitchen~Urban farm and catering venue hosting workshops, farm dinners, grief groups, BIPOC and queer‑focused farm events~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Vicolo Farm~Highly intensive 0.2‑acre farm on Cully Neighborhood Farm land. Offers CSA boxes, farm events. Emphasizes ecological, small‑scale growing~Community.svg;45° 34&#039; 4.80&amp;quot; N, 122° 34&#039; 55.20&amp;quot; W~Whitaker Ponds Nature Park~Natural area and wetland with walking trails and wildlife habitat~Park.svg;&lt;br /&gt;
|center= 45.562769, -122.600834&lt;br /&gt;
|zoom=12&lt;br /&gt;
|service=leaflet&lt;br /&gt;
|width=100%&lt;br /&gt;
|height=300px&lt;br /&gt;
|type=roadmap &lt;br /&gt;
|geojson=Cully&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[New_to_Portland_Northeast_Ride_2025|Example form]]&lt;br /&gt;
*[[Living_Cully|Living Cully]]&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Property:Has_position&amp;diff=570</id>
		<title>Property:Has position</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Property:Has_position&amp;diff=570"/>
		<updated>2025-07-23T18:23:23Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: Created page with &amp;quot;This is a property of type has type::keyword.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a property of type [[has type::keyword]].&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=File:Luis_Velasco.jpg&amp;diff=569</id>
		<title>File:Luis Velasco.jpg</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=File:Luis_Velasco.jpg&amp;diff=569"/>
		<updated>2025-07-23T18:20:41Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Lvelasco&amp;diff=568</id>
		<title>User:Lvelasco</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Lvelasco&amp;diff=568"/>
		<updated>2025-07-23T18:19:49Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Person |portrait=Luis Velasco.jpg |firstname=Luis |middlename= |lastname=Velasco |company=Living Cully |position=Program Manager |location=Portland Oregon |country=United States |sector=Community Engagement, Community Development |linkedin=https://www.verdenw.org/luis }}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Lvelasco&amp;diff=567</id>
		<title>User:Lvelasco</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Lvelasco&amp;diff=567"/>
		<updated>2025-07-23T18:18:46Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: Created page with &amp;quot;{{Person |portrait=Luis Velasco.jpg |firstname=Luis |middlename= |lastname=Velasco |company=Living Cully |position=Program Manager |location=Portland Oregon |country=United States |sector=Data, Wellbeing |linkedin=https://www.verdenw.org/luis }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Person |portrait=Luis Velasco.jpg |firstname=Luis |middlename= |lastname=Velasco |company=Living Cully |position=Program Manager |location=Portland Oregon |country=United States |sector=Data, Wellbeing |linkedin=https://www.verdenw.org/luis }}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Ckelley&amp;diff=566</id>
		<title>User:Ckelley</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Ckelley&amp;diff=566"/>
		<updated>2025-07-23T18:15:39Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Person&lt;br /&gt;
|portrait=CharlesKelley.jpg&lt;br /&gt;
|firstname=Charles&lt;br /&gt;
|lastname= Kelley&lt;br /&gt;
|company=Green Urban Design&lt;br /&gt;
|logo=GreenUrbanDesign-Logo.png&lt;br /&gt;
|companyurl=https://www.greenurbandesign.com/&lt;br /&gt;
|position=Principal&lt;br /&gt;
|location=Portland OR&lt;br /&gt;
|country=United States&lt;br /&gt;
|linkedin=https://www.linkedin.com/in/charles-kelley-aia-b89ba411/&lt;br /&gt;
|role=Leadership&lt;br /&gt;
|sector=Community Engagement&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=User:Ckelley&amp;diff=565</id>
		<title>User:Ckelley</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=User:Ckelley&amp;diff=565"/>
		<updated>2025-07-23T18:14:11Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Person&lt;br /&gt;
|portrait=CharlesKelley.jpg&lt;br /&gt;
|firstname=Charles&lt;br /&gt;
|lastname= Kelley&lt;br /&gt;
|company=Green Urban Design&lt;br /&gt;
|logo=GreenUrbanDesign-Logo.png&lt;br /&gt;
|companyurl=https://www.greenurbandesign.com/&lt;br /&gt;
|position=Principal&lt;br /&gt;
|location=Portland OR&lt;br /&gt;
|country=United States&lt;br /&gt;
|linkedin=https://www.linkedin.com/in/charles-kelley-aia-b89ba411/&lt;br /&gt;
|role=Leadership&lt;br /&gt;
|sector=Buildings&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Charles_Kelley&amp;diff=564</id>
		<title>Charles Kelley</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Charles_Kelley&amp;diff=564"/>
		<updated>2025-07-23T18:12:53Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: Created page with &amp;quot;{{Person |portrait=CharlesKelley.jpg |firstname=Charles |middlename= |lastname=Kelley |company=Green Urban Design |position=Principal |location=Portland OR |country=United States |sector=Buildings |linkedin=https://www.linkedin.com/in/charles-kelley-aia-b89ba411/ }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Person |portrait=CharlesKelley.jpg |firstname=Charles |middlename= |lastname=Kelley |company=Green Urban Design |position=Principal |location=Portland OR |country=United States |sector=Buildings |linkedin=https://www.linkedin.com/in/charles-kelley-aia-b89ba411/ }}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=563</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=563"/>
		<updated>2025-07-23T18:03:47Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Asset&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#display_map: 45° 33&#039; 25.20&amp;quot; N, 122° 35&#039; 28.32&amp;quot; W~Cully Learning Center~Learning and digital skills hub hosted by Hacienda CDC. Includes computer distribution, STEM programs, job &amp;amp; career support~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Cully Neighborhood Farm~One‑acre urban farm providing CSA produce, educational workshops, seasonal farm‑stand; partnerships include Trinity Lutheran and Free Geek~Community.svg;45° 33&#039; 54.62&amp;quot; N, 122° 35&#039; 13.65&amp;quot; W~Cully Park~25-acre multi-use park including community gardens, play areas, soccer field~Park.svg;45° 33&#039; 9.00&amp;quot; N, 122° 37&#039; 4.80&amp;quot; W~Khunamokwst Park~2.43‑acre public park with playground, skatepark, water feature. First park in Portland with an Indigenous Chinook Jargon name~Park.svg;45° 34&#039; 17.40&amp;quot; N, 122° 40&#039; 55.20&amp;quot; W~North Portland Library~Multnomah County branch offering ADA‑accessible computers, community rooms, Spanish collections, Black Resources Collection, and frequent public events/workshops~Library.svg;45° 34&#039; 15.60&amp;quot; N, 122° 36&#039; 21.60&amp;quot; W~Sacajawea Park~4.86‑acre neighborhood park with off‑leash dog area~Park.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Side Yard Farm &amp;amp; Kitchen~Urban farm and catering venue hosting workshops, farm dinners, grief groups, BIPOC and queer‑focused farm events~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Vicolo Farm~Highly intensive 0.2‑acre farm on Cully Neighborhood Farm land. Offers CSA boxes, farm events. Emphasizes ecological, small‑scale growing~Community.svg;45° 34&#039; 4.80&amp;quot; N, 122° 34&#039; 55.20&amp;quot; W~Whitaker Ponds Nature Park~Natural area and wetland with walking trails and wildlife habitat~Park.svg;&lt;br /&gt;
|center= 45.562769, -122.600834&lt;br /&gt;
|zoom=12&lt;br /&gt;
|service=leaflet&lt;br /&gt;
|width=100%&lt;br /&gt;
|height=300px&lt;br /&gt;
|type=roadmap &lt;br /&gt;
|geojson=Cully&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[New_to_Portland_Northeast_Ride_2025|Example form]]&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=562</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=562"/>
		<updated>2025-07-23T18:00:37Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Asset&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#display_map: 45° 33&#039; 25.20&amp;quot; N, 122° 35&#039; 28.32&amp;quot; W~Cully Learning Center~Learning and digital skills hub hosted by Hacienda CDC. Includes computer distribution, STEM programs, job &amp;amp; career support~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Cully Neighborhood Farm~One‑acre urban farm providing CSA produce, educational workshops, seasonal farm‑stand; partnerships include Trinity Lutheran and Free Geek~Community.svg;45° 33&#039; 54.62&amp;quot; N, 122° 35&#039; 13.65&amp;quot; W~Cully Park~25-acre multi-use park including community gardens, play areas, soccer field~Park.svg;45° 33&#039; 9.00&amp;quot; N, 122° 37&#039; 4.80&amp;quot; W~Khunamokwst Park~2.43‑acre public park with playground, skatepark, water feature. First park in Portland with an Indigenous Chinook Jargon name~Park.svg;45° 34&#039; 17.40&amp;quot; N, 122° 40&#039; 55.20&amp;quot; W~North Portland Library~Multnomah County branch offering ADA‑accessible computers, community rooms, Spanish collections, Black Resources Collection, and frequent public events/workshops~Library.svg;45° 34&#039; 15.60&amp;quot; N, 122° 36&#039; 21.60&amp;quot; W~Sacajawea Park~4.86‑acre neighborhood park with off‑leash dog area~Park.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Side Yard Farm &amp;amp; Kitchen~Urban farm and catering venue hosting workshops, farm dinners, grief groups, BIPOC and queer‑focused farm events~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Vicolo Farm~Highly intensive 0.2‑acre farm on Cully Neighborhood Farm land. Offers CSA boxes, farm events. Emphasizes ecological, small‑scale growing~Community.svg;45° 34&#039; 4.80&amp;quot; N, 122° 34&#039; 55.20&amp;quot; W~Whitaker Ponds Nature Park~Natural area and wetland with walking trails and wildlife habitat~Park.svg;&lt;br /&gt;
|center= 45.562769, -122.600834&lt;br /&gt;
|zoom=12&lt;br /&gt;
|service=leaflet&lt;br /&gt;
|width=100%&lt;br /&gt;
|height=300px&lt;br /&gt;
|type=roadmap &lt;br /&gt;
|geojson=Cully&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=561</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=561"/>
		<updated>2025-07-23T18:00:03Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Asset&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#display_map: 45° 33&#039; 25.20&amp;quot; N, 122° 35&#039; 28.32&amp;quot; W~Cully Learning Center~Learning and digital skills hub hosted by Hacienda CDC. Includes computer distribution, STEM programs, job &amp;amp; career support~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Cully Neighborhood Farm~One‑acre urban farm providing CSA produce, educational workshops, seasonal farm‑stand; partnerships include Trinity Lutheran and Free Geek~Community.svg;45° 33&#039; 54.62&amp;quot; N, 122° 35&#039; 13.65&amp;quot; W~Cully Park~25-acre multi-use park including community gardens, play areas, soccer field~Park.svg;45° 33&#039; 9.00&amp;quot; N, 122° 37&#039; 4.80&amp;quot; W~Khunamokwst Park~2.43‑acre public park with playground, skatepark, water feature. First park in Portland with an Indigenous Chinook Jargon name~Park.svg;45° 34&#039; 17.40&amp;quot; N, 122° 40&#039; 55.20&amp;quot; W~North Portland Library~Multnomah County branch offering ADA‑accessible computers, community rooms, Spanish collections, Black Resources Collection, and frequent public events/workshops~Library.svg;45° 34&#039; 15.60&amp;quot; N, 122° 36&#039; 21.60&amp;quot; W~Sacajawea Park~4.86‑acre neighborhood park with off‑leash dog area~Park.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Side Yard Farm &amp;amp; Kitchen~Urban farm and catering venue hosting workshops, farm dinners, grief groups, BIPOC and queer‑focused farm events~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Vicolo Farm~Highly intensive 0.2‑acre farm on Cully Neighborhood Farm land. Offers CSA boxes, farm events. Emphasizes ecological, small‑scale growing~Community.svg;45° 34&#039; 4.80&amp;quot; N, 122° 34&#039; 55.20&amp;quot; W~Whitaker Ponds Nature Park~Natural area and wetland with walking trails and wildlife habitat~Park.svg;&lt;br /&gt;
|center= 45.562769, -122.600834&lt;br /&gt;
|zoom=16&lt;br /&gt;
|service=leaflet&lt;br /&gt;
|width=100%&lt;br /&gt;
|height=200px&lt;br /&gt;
|type=roadmap &lt;br /&gt;
|geojson=Cully&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=560</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=560"/>
		<updated>2025-07-23T17:59:34Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Asset&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#display_map: 45° 33&#039; 25.20&amp;quot; N, 122° 35&#039; 28.32&amp;quot; W~Cully Learning Center~Learning and digital skills hub hosted by Hacienda CDC. Includes computer distribution, STEM programs, job &amp;amp; career support~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Cully Neighborhood Farm~One‑acre urban farm providing CSA produce, educational workshops, seasonal farm‑stand; partnerships include Trinity Lutheran and Free Geek~Community.svg;45° 33&#039; 54.62&amp;quot; N, 122° 35&#039; 13.65&amp;quot; W~Cully Park~25-acre multi-use park including community gardens, play areas, soccer field~Park.svg;45° 33&#039; 9.00&amp;quot; N, 122° 37&#039; 4.80&amp;quot; W~Khunamokwst Park~2.43‑acre public park with playground, skatepark, water feature. First park in Portland with an Indigenous Chinook Jargon name~Park.svg;45° 34&#039; 17.40&amp;quot; N, 122° 40&#039; 55.20&amp;quot; W~North Portland Library~Multnomah County branch offering ADA‑accessible computers, community rooms, Spanish collections, Black Resources Collection, and frequent public events/workshops~Library.svg;45° 34&#039; 15.60&amp;quot; N, 122° 36&#039; 21.60&amp;quot; W~Sacajawea Park~4.86‑acre neighborhood park with off‑leash dog area~Park.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Side Yard Farm &amp;amp; Kitchen~Urban farm and catering venue hosting workshops, farm dinners, grief groups, BIPOC and queer‑focused farm events~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Vicolo Farm~Highly intensive 0.2‑acre farm on Cully Neighborhood Farm land. Offers CSA boxes, farm events. Emphasizes ecological, small‑scale growing~Community.svg;45° 34&#039; 4.80&amp;quot; N, 122° 34&#039; 55.20&amp;quot; W~Whitaker Ponds Nature Park~Natural area and wetland with walking trails and wildlife habitat~Park.svg;&lt;br /&gt;
|center= 45.562769, -122.600834&lt;br /&gt;
|zoom=15&lt;br /&gt;
|service=leaflet&lt;br /&gt;
|width=100%&lt;br /&gt;
|height=200px&lt;br /&gt;
|type=roadmap &lt;br /&gt;
|geojson=Cully&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=559</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=559"/>
		<updated>2025-07-23T17:58:22Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=558</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=558"/>
		<updated>2025-07-23T17:57:40Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=557</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=557"/>
		<updated>2025-07-23T17:57:01Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=556</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=556"/>
		<updated>2025-07-23T17:51:15Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Community Assets]] [[GeoCoordinates::+]]&lt;br /&gt;
 |limit=200&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?GeoCoordinates#=&lt;br /&gt;
 |?Description#=&lt;br /&gt;
 |?Asset type#=&lt;br /&gt;
 |height=200px&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |template=Map Asset&lt;br /&gt;
 |searchlabel=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#display_map: 45° 33&#039; 25.20&amp;quot; N, 122° 35&#039; 28.32&amp;quot; W~Cully Learning Center~Learning and digital skills hub hosted by Hacienda CDC. Includes computer distribution, STEM programs, job &amp;amp; career support~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Cully Neighborhood Farm~One‑acre urban farm providing CSA produce, educational workshops, seasonal farm‑stand; partnerships include Trinity Lutheran and Free Geek~Community.svg;45° 33&#039; 54.62&amp;quot; N, 122° 35&#039; 13.65&amp;quot; W~Cully Park~25-acre multi-use park including community gardens, play areas, soccer field~Park.svg;45° 33&#039; 9.00&amp;quot; N, 122° 37&#039; 4.80&amp;quot; W~Khunamokwst Park~2.43‑acre public park with playground, skatepark, water feature. First park in Portland with an Indigenous Chinook Jargon name~Park.svg;45° 34&#039; 17.40&amp;quot; N, 122° 40&#039; 55.20&amp;quot; W~North Portland Library~Multnomah County branch offering ADA‑accessible computers, community rooms, Spanish collections, Black Resources Collection, and frequent public events/workshops~Library.svg;45° 34&#039; 15.60&amp;quot; N, 122° 36&#039; 21.60&amp;quot; W~Sacajawea Park~4.86‑acre neighborhood park with off‑leash dog area~Park.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Side Yard Farm &amp;amp; Kitchen~Urban farm and catering venue hosting workshops, farm dinners, grief groups, BIPOC and queer‑focused farm events~Community.svg;45° 33&#039; 23.76&amp;quot; N, 122° 35&#039; 54.60&amp;quot; W~Vicolo Farm~Highly intensive 0.2‑acre farm on Cully Neighborhood Farm land. Offers CSA boxes, farm events. Emphasizes ecological, small‑scale growing~Community.svg;45° 34&#039; 4.80&amp;quot; N, 122° 34&#039; 55.20&amp;quot; W~Whitaker Ponds Nature Park~Natural area and wetland with walking trails and wildlife habitat~Park.svg;&lt;br /&gt;
|center= 45.562769, -122.600834&lt;br /&gt;
|zoom=15&lt;br /&gt;
|service=leaflet&lt;br /&gt;
|width=100%&lt;br /&gt;
|height=900px&lt;br /&gt;
|type=roadmap &lt;br /&gt;
|geojson=Cully&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=555</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=555"/>
		<updated>2025-07-23T17:50:07Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Community Assets]] [[GeoCoordinates::+]]&lt;br /&gt;
 |limit=200&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?GeoCoordinates#=&lt;br /&gt;
 |?Description#=&lt;br /&gt;
 |?Asset type#=&lt;br /&gt;
 |height=200px&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |template=Map Asset&lt;br /&gt;
 |searchlabel=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=554</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Main_Page&amp;diff=554"/>
		<updated>2025-07-23T17:47:44Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 960px; margin: 0 auto; padding: 1em; font-family: sans-serif; line-height: 1.6;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;border-bottom: 2px solid #ccc; padding-bottom: 0.3em;&amp;quot;&amp;gt;Cully Community-Led Development District&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Welcome to the Cully Community-Led Development Hub. This platform provides transparent access to community priorities, development proposals, meeting notes, and participatory budgeting tools related to the Cully Tax Increment Financing (TIF) district in Portland, Oregon.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Vision&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood envisions a vibrant, inclusive, and sustainable community where all residents—regardless of income, background, or identity—have the opportunity to thrive. We see a future where families have access to safe, stable, and affordable housing, where small businesses and community enterprises flourish, and where public spaces, parks, and streets are welcoming, green, and accessible to all.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;etc. etc.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Our neighborhood is built on strong relationships, mutual support, and shared stewardship of the land. We are committed to protecting cultural diversity, uplifting historically marginalized voices, and fostering community-led development that resists displacement and builds lasting prosperity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We imagine a Cully where children can walk to schools that reflect their languages and cultures, where elders can age in place with dignity, and where creativity, education, and economic opportunity are rooted in the community itself. With deep respect for the land and the Indigenous peoples who have cared for it, we strive to be a model of climate resilience, equity, and local self-determination.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Together, we are creating a neighborhood that is connected, resilient, just, and joyful—for current residents and generations to come.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Programs and Activities&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The Cully neighborhood is working together to build a community where residents can thrive without fear of displacement. This section tracks the ongoing programs and active projects that support livability, affordability, and cultural continuity. Each initiative reflects a shared commitment to advancing community-driven development that uplifts long-term residents and small businesses while resisting the harmful effects of gentrification.&amp;lt;/p&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example Programs: Supporting Community Vitality and Resilience&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These programs strengthen the social and economic fabric of the neighborhood by expanding access to local resources, supporting community-based organizations, and investing in resident and small business empowerment. Activities include mapping critical services, creating public tools for access and navigation, and delivering culturally responsive outreach and training.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Projects: Designing More Livable Spaces&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;These projects represent visible, physical investments in neighborhood well-being, shaped through inclusive planning and deep community input. They include public infrastructure upgrades, community centers, housing initiatives, and environmental improvements—each designed to meet the needs of existing residents and preserve Cully’s diverse cultural identity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:Projects]]&lt;br /&gt;
 |?Brief&lt;br /&gt;
 |?Has estimated cost&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Example: Community Meetings&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{#ask:&lt;br /&gt;
 [[Category:CommunityMeeting]]&lt;br /&gt;
 |?Has start date&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Community Events&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: &lt;br /&gt;
 [[Category:Event]]&lt;br /&gt;
 [[Has end date::&amp;gt;{{CURRENTYEAR}}/{{CURRENTMONTH}}/{{CURRENTDAY}}]]&lt;br /&gt;
 |sort=Has start date&lt;br /&gt;
 |order=ascending&lt;br /&gt;
 |?=#&lt;br /&gt;
 |?Has image#=2&lt;br /&gt;
 |?Has description#=3&lt;br /&gt;
 |?Has website#=4&lt;br /&gt;
 |?Has start date#-F[d M Y, H:i:s]=5&lt;br /&gt;
 |format=plainlist&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |introtemplate=Show image Header&lt;br /&gt;
 |template=Show image date&lt;br /&gt;
 |outrotemplate=Show link Footer&lt;br /&gt;
}}&lt;br /&gt;
              &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*CLC Updates&lt;br /&gt;
*Advocate and Allies&lt;br /&gt;
*Cully Neighborhood Association&lt;br /&gt;
*District 2 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;What You Can Do&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul style=&amp;quot;padding-left: 1.2em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Learn about &amp;lt;strong&amp;gt;community groups&amp;lt;/strong&amp;gt; and their priorities&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Explore &amp;lt;strong&amp;gt;proposals&amp;lt;/strong&amp;gt; for housing, land use, and economic development&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Review notes and decisions from &amp;lt;strong&amp;gt;public meetings&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Participate in &amp;lt;strong&amp;gt;budgeting and endorsement&amp;lt;/strong&amp;gt; processes&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Navigation&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%; border-spacing: 0.8em 0.5em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Groups|Community Groups]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Resident-led organizations shaping priorities&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Meetings|Community Meetings]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;View notes and outcomes&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Proposals|Development Proposals]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;See all community-submitted proposals&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Budgets|Budget Dashboard]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Track funding allocations&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Form:Proposal|Submit a Proposal]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Create and share new ideas for TIF investment&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;[[Community Assets|Community Assets]]&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;Show community assets in the Cully Neighbourhood&amp;lt;/small&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Featured: Budget Overview&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The summary below shows the estimated total for all &amp;lt;i&amp;gt;funded&amp;lt;/i&amp;gt; proposals, grouped by priority area.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#ask: [[Category:Proposal]] [[Status::Funded]]&lt;br /&gt;
 | ?Supports priority area=Priority Area&lt;br /&gt;
 | ?Has estimated cost=Cost (USD)&lt;br /&gt;
 | format=broadtable&lt;br /&gt;
 | sort=Supports priority area&lt;br /&gt;
 | default=No funded proposals entered yet.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;margin-top: 1.5em; border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;Resources&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are a set of online resources for the Cully district.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;[https://prosperportland.us/faq_category/cully-tif-district-exploration/ Prosper Portland Cully TIF District Exploration]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr style=&amp;quot;margin-top: 2em;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 90%; color: #666;&amp;quot;&amp;gt;Managed by the Cully Cross-Sector Leadership Team · Supported by Prosper Portland · Built on Semantic MediaWiki&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=The Cully Neighbourhood Community Website&lt;br /&gt;
|description=A community-led platform advancing equity-driven development, participatory governance, and digital empowerment in the Cully neighborhood of Portland, Oregon.&lt;br /&gt;
|keywords=neighbourhood, Cully, participatory budgeting, digital equity, Portland, open source, civic technology&lt;br /&gt;
|image=http://cullyclc.opencommons.org/Cully Assoc Neigh.png&lt;br /&gt;
|image_alt=http://cullyclc.opencommons.org/File:Cully.png&lt;br /&gt;
|type=website&lt;br /&gt;
|site_name=Cully CLC&lt;br /&gt;
|og:type=website&lt;br /&gt;
|og:locale=en_US&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Community_Engagement_Report_2022&amp;diff=553</id>
		<title>Community Engagement Report 2022</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Community_Engagement_Report_2022&amp;diff=553"/>
		<updated>2025-07-23T17:46:11Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CommunityMeeting&lt;br /&gt;
|Meeting date=02/01/2022 9:00pm&lt;br /&gt;
|Location=Verde Facility&lt;br /&gt;
|Related group=CLC&lt;br /&gt;
|Focus topics=Eligible Investments&lt;br /&gt;
|Meeting notes URL=https://www.portland.gov/phb/tif-district-committees/cully-tif-clc&lt;br /&gt;
|Notes=Cully Community-Led Development District&lt;br /&gt;
}}&lt;br /&gt;
===Topic: Eligible Investments===__NOTOC__&lt;br /&gt;
&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
pie&lt;br /&gt;
 title Participants by Group&lt;br /&gt;
&amp;quot;American Indian/Alaska Native&amp;quot; : 4&lt;br /&gt;
&amp;quot;Black&amp;quot; : 12&lt;br /&gt;
&amp;quot;Houseless&amp;quot; : 2&lt;br /&gt;
&amp;quot;Latinx&amp;quot; : 8&lt;br /&gt;
&amp;quot;Low-income homeowners&amp;quot; : 11&lt;br /&gt;
&amp;quot;Mobile home park residents&amp;quot; : 12&lt;br /&gt;
&amp;quot;Small business&amp;quot; : 10&lt;br /&gt;
&amp;quot;Somali&amp;quot; : 6&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
pie&lt;br /&gt;
 title Participant Demographics&lt;br /&gt;
&amp;quot;Black/African American&amp;quot; : 14&lt;br /&gt;
&amp;quot;Black/Somali&amp;quot; : 6&lt;br /&gt;
&amp;quot;Black/African&amp;quot; : 2&lt;br /&gt;
&amp;quot;Hispanic/Latinx&amp;quot; : 18&lt;br /&gt;
&amp;quot;White/Caucasian&amp;quot; : 12&lt;br /&gt;
&amp;quot;American Indian/Alaska Native&amp;quot; : 2&lt;br /&gt;
&amp;quot;Multiracial&amp;quot; : 1&lt;br /&gt;
&amp;quot;Filipino/White&amp;quot; : 2&lt;br /&gt;
&amp;quot;Asian&amp;quot; : 1&lt;br /&gt;
&amp;quot;Middle Eastern&amp;quot; : 3&lt;br /&gt;
&amp;quot;Unknown&amp;quot; : 4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Community Priorities Summary ===&lt;br /&gt;
{| style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|   &#039;&#039;&#039;Property acquisition&#039;&#039;&#039;:&lt;br /&gt;
|Keystone of affordability and anti-displacement&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Commercial buildings&#039;&#039;&#039;: &lt;br /&gt;
|Investment in local businesses and mixed-use spaces&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Housing&#039;&#039;&#039;: &lt;br /&gt;
|Most groups&#039; top priority, covering rent, ownership, and homelessness&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Recreation facilities&#039;&#039;&#039;: &lt;br /&gt;
|Strong youth focus and adult education&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Arts &amp;amp; culture&#039;&#039;&#039;: &lt;br /&gt;
|Community arts access tied to place and housing&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Infrastructure&#039;&#039;&#039;: &lt;br /&gt;
|Equity in implementation and job opportunities&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Themes and Priorities from Each Group ==&lt;br /&gt;
&lt;br /&gt;
=== American Indian/Alaska Native Community ===&lt;br /&gt;
* Top priority is responding to the housing crisis through affordable rental homes, affordable homeownership, and housing for people currently experiencing homelessness.  &lt;br /&gt;
* After housing, the group also supported investments in businesses, job creation, arts and culture, recreation facilities, mixed-use development and mental health services.&lt;br /&gt;
&lt;br /&gt;
=== Black Community ===&lt;br /&gt;
* Property acquisition should include purchasing single-family homes (including foreclosed and abandoned homes) in order to keep them affordable for future homebuyers. Also, projects to stabilize low-income and elderly homeowners (e.g. home repairs, relief from rising property taxes).&lt;br /&gt;
* Cooperative/collective ownership models for housing, businesses and commercial property. This builds wealth and responds to the group&#039;s concern that TIF-funded projects will attract/benefit outside investors and newcomers, rather than existing residents, Black people, and low-income people.&lt;br /&gt;
* Proactive, intentional programs needed to make sure Black-owned businesses/contractors and Black workers can benefit from the construction and small business opportunities created by the TIF district.&lt;br /&gt;
&lt;br /&gt;
=== Houseless Community ===&lt;br /&gt;
* Facilities that provide basic services (e.g. laundry, garbage disposal, warming center).  &lt;br /&gt;
* Low-barrier housing that provides some autonomy, such as tiny house villages.  &lt;br /&gt;
* Property acquisition.&lt;br /&gt;
&lt;br /&gt;
=== Latinx Community ===&lt;br /&gt;
* Affordable housing was the top priority, including homeownership that is accessible for people who don&#039;t have a Social Security Number or need to build credit; rental housing for larger families; ADUs and other configurations with outdoor space for gardens and kids.  &lt;br /&gt;
* Food carts and other lower-barrier business opportunities.  &lt;br /&gt;
* Recreation and community education facilities, with activities and play space for kids and classes for adults, including classes on computer skills.  &lt;br /&gt;
* Property acquisition to keep housing permanently affordable (e.g., what was successful at Oak Leaf, and could have been done at Normandy Apartments if funds were available).  &lt;br /&gt;
&lt;br /&gt;
=== Low-Income Homeowners ===&lt;br /&gt;
* Priority on affordable housing, including rental and homeownership; homeowners wanted others in the community to have access to housing as well.  &lt;br /&gt;
* ADA accessible affordable housing.  &lt;br /&gt;
* Recreational facilities for children and investments in commercial properties to support local small businesses.  &lt;br /&gt;
* Land banking as a way to assure space to build future affordable housing and small business.&lt;br /&gt;
&lt;br /&gt;
=== Mobile Home Park Residents ===&lt;br /&gt;
* Affordable homes are top priority, including rentals, homeownership (needs to be accessible to ITIN borrowers), and buying privately-owned mobile home parks.  &lt;br /&gt;
* Housing and facilities for people experiencing houselessness.  &lt;br /&gt;
* Resident-owned cooperatives for mobile home parks and apartments.  &lt;br /&gt;
* Home repairs, including for manufactured homes.  &lt;br /&gt;
* Property acquisition to make all of the other projects possible.  &lt;br /&gt;
* Facilities that provide access to services (resources for people, rental assistance, energy assistance).  &lt;br /&gt;
* Recreation facilities and commercial properties are supported, but a lower priority than homes.&lt;br /&gt;
&lt;br /&gt;
=== Small Business Community ===&lt;br /&gt;
* Strong alignment between stable housing and successful businesses and commercial corridors:  &lt;br /&gt;
: &amp;quot;More people living in the area means more businesses, and more businesses means more people.&amp;quot;  &lt;br /&gt;
* Support for mixed-use development that incorporates commercial, affordable homes, recreational facilities, and gardens/green space.  &lt;br /&gt;
* Importance of continuing the existing NPI programs for small businesses.&lt;br /&gt;
&lt;br /&gt;
=== Somali Community ===&lt;br /&gt;
* Affordable homeownership.  &lt;br /&gt;
* Tiny homes for people experiencing homelessness.  &lt;br /&gt;
* Recreation options for youth.  &lt;br /&gt;
* Spaces for adult education opportunities.  &lt;br /&gt;
* Support for small businesses and mixed-use development.&lt;br /&gt;
&lt;br /&gt;
== Community Priorities for the Eligible Investments List ==&lt;br /&gt;
&#039;&#039;Drawing on input from all 8 constituencies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 1) Property Acquisition ===&lt;br /&gt;
&#039;&#039;&#039;Common themes and priorities:&#039;&#039;&#039;  &lt;br /&gt;
Purchasing land before prices rise further was a popular idea. It was considered to be a keystone of maintaining affordability and stalling displacement.  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;I like the idea of land banking, like buying the Oak Leaf, or like what happened at Normandy. I think we should be able to buy those so we don&#039;t lose that affordability, it isn&#039;t fair what happens to people when they raise the rent and people get displaced.”&#039;&#039; – Latinx Community focus group  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional ideas:&#039;&#039;&#039;  &lt;br /&gt;
* Purchasing abandoned properties and making them habitable for houseless community members.  &lt;br /&gt;
* Purchasing single-family homes to create affordable homeownership opportunities.&lt;br /&gt;
&lt;br /&gt;
=== 2) Commercial Buildings ===&lt;br /&gt;
&#039;&#039;&#039;Common themes and priorities:&#039;&#039;&#039;  &lt;br /&gt;
Participants across all groups support investments to benefit local businesses. Popular support for mixed-use development that could combine commercial, affordable homes, recreation facilities.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;I&#039;d love to be able to buy a home/land for my business. I rent right now. My rent is very expensive and with inflation and hazard pay for my staff, I&#039;ve taken a pretty substantial pay cut. As a small business owner (on a preschool teacher salary), building equity is very important to be able to continue to do this work for a long time.&amp;quot;&#039;&#039; – Small Business Community focus group  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;Food carts are a great opportunity to have your own business. For example, with our friend who owns her food cart, during the pandemic they did well even though many restaurants had to close, since they didn&#039;t have a lot of employees. My husband and I both lost our restaurant jobs, whereas the food cart stayed open.”&#039;&#039; – Latinx Community focus group  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional ideas:&#039;&#039;&#039;  &lt;br /&gt;
* Affordable groceries  &lt;br /&gt;
* Food carts  &lt;br /&gt;
* Establishing a community bank  &lt;br /&gt;
* Ensuring that commercial property investments have a long-lasting community benefit  &lt;br /&gt;
* A revolving loan fund so that money gets cycled through multiple projects  &lt;br /&gt;
&lt;br /&gt;
=== 3) Housing ===&lt;br /&gt;
&#039;&#039;&#039;Common themes and priorities:&#039;&#039;&#039;  &lt;br /&gt;
Affordable housing was the top priority of most groups. Affordable rentals and homeownership were supported. Participants also prioritized investments that support people experiencing homelessness.  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;Housing first; businesses and communities won&#039;t mean anything without the people here... What good is a community center if the community is pushed out of the neighborhood?&amp;quot;&#039;&#039; – Mobile Home Park Residents focus group  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;“[Houseless community members] have the right to have a place to call home and both a place to work.&amp;quot;&#039;&#039; – Somali Community focus group  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional ideas:&#039;&#039;&#039;  &lt;br /&gt;
* Home repairs (including for manufactured homes)  &lt;br /&gt;
* Ability to purchase a home using an ITIN  &lt;br /&gt;
* ADA accessible housing  &lt;br /&gt;
* Resident-owned cooperatives  &lt;br /&gt;
* Affordable housing for college students&lt;br /&gt;
&lt;br /&gt;
=== 4) Recreational Facilities ===&lt;br /&gt;
&#039;&#039;&#039;Common themes and priorities:&#039;&#039;&#039;  &lt;br /&gt;
Strong support for community spaces for recreation, education and connection, for youth and adults.  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;[We need] something for the youth - they are the next generation and if we don&#039;t protect them, who will?”&#039;&#039; – Low-Income Homeowners focus group  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;“…for the youth in our community, if we could also build them a place to help guide them to stay out of trouble - somewhere to keep our youth safe&amp;quot;&#039;&#039; – Somali Community focus group  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional ideas:&#039;&#039;&#039;  &lt;br /&gt;
* Job and technical training at recreational facilities&lt;br /&gt;
&lt;br /&gt;
=== 5) Arts &amp;amp; Culture ===&lt;br /&gt;
&#039;&#039;&#039;Common themes and priorities:&#039;&#039;&#039;  &lt;br /&gt;
Community members supported public art paired with housing and/or businesses, but considered the housing and commercial investments to be a higher priority.  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;It&#039;s great to have those art resources come to us so that art is more accessible to folks here that may not go to downtown to access art or community resources like this.&amp;quot;&#039;&#039; – American Indian/Alaska Native Community focus group  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional ideas:&#039;&#039;&#039;  &lt;br /&gt;
* Setting up community spaces where art could be sold&lt;br /&gt;
&lt;br /&gt;
=== 6) Infrastructure ===&lt;br /&gt;
&#039;&#039;&#039;Common themes and priorities:&#039;&#039;&#039;  &lt;br /&gt;
While many supported infrastructure improvements, it proved to be less pressing than preventing displacement. The implementation of investments in infrastructure (and all the other TIF-funded projects) should create equitable economic opportunities.  &lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&amp;quot;Will these [contracting] opportunities be specifically for BIPOC businesses to pursue? How will we ensure that people outside the community and larger contractors aren&#039;t just getting all of the contracts?&amp;quot;&#039;&#039; – Black Community focus group  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional ideas:&#039;&#039;&#039;  &lt;br /&gt;
* Repaying TIF loans back into a pool that could be used for other projects&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
	<entry>
		<id>http://cullyclc.opencommons.org/index.php?title=Template:CommunityMeeting&amp;diff=552</id>
		<title>Template:CommunityMeeting</title>
		<link rel="alternate" type="text/html" href="http://cullyclc.opencommons.org/index.php?title=Template:CommunityMeeting&amp;diff=552"/>
		<updated>2025-07-23T17:44:02Z</updated>

		<summary type="html">&lt;p&gt;Pinfold: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#set:&lt;br /&gt;
 |Meeting date={{{Meeting date|}}}&lt;br /&gt;
 |Meeting time={{{Meeting time|}}}&lt;br /&gt;
 |Location={{{Location|}}}&lt;br /&gt;
 |Related group={{{Related group|}}}&lt;br /&gt;
 |Focus topics={{{Focus topics|}}}&lt;br /&gt;
 |Meeting notes URL={{{Meeting notes URL|}}}&lt;br /&gt;
 |Notes={{{Notes|}}}&lt;br /&gt;
}}&lt;br /&gt;
:&#039;&#039;&#039;Date:&#039;&#039;&#039; [[Has start date::{{{Meeting date}}}]]&lt;br /&gt;
:&#039;&#039;&#039;Location:&#039;&#039;&#039; {{{Location}}}  &lt;br /&gt;
:&#039;&#039;&#039;Related Group:&#039;&#039;&#039; [[{{{Related group}}}]]  &lt;br /&gt;
:&#039;&#039;&#039;Focus Topics:&#039;&#039;&#039; {{{Focus topics}}}  &lt;br /&gt;
:&#039;&#039;&#039;Meeting Notes:&#039;&#039;&#039; [{{{Meeting notes URL}}} View Notes]  &lt;br /&gt;
:&#039;&#039;&#039;Additional Notes:&#039;&#039;&#039; {{{Notes}}}&lt;br /&gt;
[[Category:CommunityMeeting]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the template used to display Community Meeting pages.  &lt;br /&gt;
It is populated automatically using the CommunityMeeting form.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pinfold</name></author>
	</entry>
</feed>