About the Project
WebDev Semantic Directory is a web development technology directory powered by the Semantic Web. The project uses an OWL/RDF ontology to represent knowledge about hundreds of technologies and the relationships between them.
Data is stored in the Turtle format (.ttl) and can be queried with SPARQL through Apache Jena Fuseki, or directly from the local ontology file using the N3.js parser.
Ontology Architecture
The ontology uses the namespace http://webdev.id/ontology#. All technology classes are subclasses of ex:Technology.
Class Hierarchy
ex:Technology ├── ex:Framework │ ├── ex:MobileFramework │ └── ex:DesktopFramework ├── ex:Library │ ├── ex:UIComponentLib │ ├── ex:CSSFramework │ ├── ex:StateManagement │ ├── ex:Animation │ └── ex:ValidationLib ├── ex:Database ├── ex:ORM ├── ex:Language ├── ex:Runtime ├── ex:BuildTool ├── ex:TestingTool ├── ex:CloudProvider ├── ex:DeploymentTool ├── ex:CITool └── ... (30+ categories)
Prefixes Used
PREFIX ex: <http://webdev.id/ontology#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
Example Technology Declaration (Turtle)
ex:NextJS a ex:Framework ;
rdfs:label "Next.js" ;
ex:description "React framework for production" ;
ex:website "https://nextjs.org" ;
ex:version "14.0" ;
ex:githubStars "120000" ;
ex:usesLanguage ex:JavaScript, ex:TypeScript ;
ex:isBuiltOn ex:NodeJS ;
ex:isFrameworkOf ex:React ;
ex:deployedOn ex:Vercel .Technology Categories
Framework
ex:Framework
Mobile Framework
ex:MobileFramework
Desktop Framework
ex:DesktopFramework
Library
ex:Library
UI Component Library
ex:UIComponentLib
CSS Framework
ex:CSSFramework
State Management
ex:StateManagement
Animation Library
ex:Animation
Validation Library
ex:ValidationLib
Search Engine
ex:SearchTool
ORM
ex:ORM
Database
ex:Database
Language
ex:Language
Runtime
ex:Runtime
Package Manager
ex:PackageManager
Build Tool
ex:BuildTool
Monorepo Tool
ex:Monorepo
Testing Tool
ex:TestingTool
API Tool
ex:APITool
Linter / Formatter
ex:Linter
Auth Tool
ex:AuthTool
Cloud Provider
ex:CloudProvider
Deployment Tool
ex:DeploymentTool
CI/CD Tool
ex:CITool
Version Control
ex:VersionControl
Container Tool
ex:ContainerTool
Monitoring Tool
ex:MonitoringTool
Message Broker
ex:MessageBroker
Storage Service
ex:StorageService
Design Tool
ex:DesignTool
Semantic Web Specification
ex:SemanticWebSpec
Triplestore
ex:Triplestore
Predicates & Relations
The ontology defines 20 object property predicates that connect technologies to one another.
isFrameworkOfLinks a framework to the library/technology it is built upon.
isORMForLinks an ORM to the databases it supports.
isBuiltOnA technology built on top of a specific runtime or platform.
implementsSpecImplementation of a semantic web standard or specification.
usesLanguageThe programming language used by a technology.
compatibleWithDirect compatibility between two technologies.
alternativeToTechnologies that can be used as alternatives to one another.
connectsToTechnologies that connect directly within the ecosystem.
integratesWithOfficial or common integration between two technologies.
testedWithRecommended or commonly used testing tools.
deployedOnCloud platform or infrastructure where the technology is deployed.
managedByA technology managed by a particular package manager.
hostedByThe hosting service that provides the technology.
monitoredByMonitoring tools used to track performance.
ciWithCI/CD pipeline used in the deployment process.
usesBrokerMessage broker used for inter-service communication.
searchedWithSearch engine used for full-text search.
storedWithObject or file storage service used.
designedWithDesign tools used in the UI development workflow.
versionControlledByVersion control system used to manage the code.
SPARQL Endpoint
SPARQL queries are executed by the built-in engine (Comunica) on the server, directly over the local ontology file — no separate server required. Apache Jena Fuseki can still be used as an option.
Built-in Engine (Default)
Comunica runs SPARQL 1.1 directly over the local ontology, server-side.
Comunica · ontology/webdev.ttlEnabled automatically — no extra configuration.
Fuseki (Optional)
Apache Jena Fuseki triplestore for a full SPARQL server.
env: FUSEKI_ENDPOINTUsed when FUSEKI_ENDPOINT is set; otherwise the built-in engine is used.
For production, simply deploy to Vercel — the built-in engine runs without any extra server. To use Fuseki (locally: setup-fuseki.bat), set theFUSEKI_ENDPOINT env to its endpoint URL.
Example SPARQL Queries
All Technologies with Their Type
open_in_newTry in LabPREFIX ex: <http://webdev.id/ontology#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?label ?typeLabel
WHERE {
?tech a ?type .
?type rdfs:subClassOf* ex:Technology .
OPTIONAL { ?tech rdfs:label ?label }
OPTIONAL { ?type rdfs:label ?typeLabel }
FILTER(?type != ex:Technology)
}
ORDER BY ?typeLabel ?labelORMs and Their Supported Databases
open_in_newTry in LabPREFIX ex: <http://webdev.id/ontology#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?ormLabel ?dbLabel
WHERE {
?orm a ex:ORM ;
ex:isORMFor ?db .
OPTIONAL { ?orm rdfs:label ?ormLabel }
OPTIONAL { ?db rdfs:label ?dbLabel }
}
ORDER BY ?ormLabelFrameworks by Programming Language
open_in_newTry in LabPREFIX ex: <http://webdev.id/ontology#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?fwLabel ?langLabel
WHERE {
?fw a ex:Framework ;
ex:usesLanguage ?lang .
OPTIONAL { ?fw rdfs:label ?fwLabel }
OPTIONAL { ?lang rdfs:label ?langLabel }
}
ORDER BY ?langLabel ?fwLabel