diff --git a/catalog-data.ttl b/catalog-data.ttl index 0c496d4..1e0540f 100644 --- a/catalog-data.ttl +++ b/catalog-data.ttl @@ -1,8 +1,5 @@ @prefix con: . @prefix ex: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . @prefix xsd: . a ex:Person ; @@ -48,8 +45,6 @@ ex:landingPage ; ex:logo ; ex:name "elf Pavlik" ; - ex:siloId "github:876431", "w3c:46577" ; - ex:siloUsername "github:elf-pavlik" ; ex:webid . a ex:Person ; @@ -101,8 +96,6 @@ ex:landingPage ; ex:matrixHandle "@jeff-zucker" ; ex:name "Jeff Zucker" ; - ex:siloId "github:44732708" ; - ex:siloUsername "github:jeff-zucker" ; ex:webid . a ex:Person ; @@ -281,15 +274,6 @@ ex:name "Kyra Assaad" ; ex:webid . - a ex:CreativeWork ; - ex:about , ; - ex:author , , , , , , , ; - ex:description "The Solid (Social Linked Data) technology family was de-\nveloped to provide the foundation for Data Sovereignty in the context\nof web applications. The advantage of this innovative approach is the\nopportunity to dynamically bind an identity to a Solid application and a\nuser-specific Solid data store (Solid Pod). These three basic components\ncan be combined dynamically, allowing users to share their data with an\napplication while retaining full control of the data in self-managed Solid\nPods. This paper presents a prototype of a web-based user interface to\ngrant access to data in a Solid Pod. To enable a dynamic binding into\nSolid-driven environments, we made the implementation available as a\nSolid application – AuthApp – with a specific focus on allowing users\nto configure the data access granting efficiently. To comply with data\nprotection regulations, in particular Europe’s GDPR, we extended the\nstandard to include the validation of the purpose of data sharing. Unlike\nprevious work, we also make full use of robust technologies to avoid the\nneed to copy or store data outside the personal context, meaning all data\nremains under the user’s control and so does the AuthApp." ; - ex:landingPage ; - ex:name "AuthApp – Portable, Reusable Solid App for GDPR-Compliant Access Granting" ; - ex:subType con:ResearchPaper ; - ex:technicalKeyword "Authorization, Access Control, Data Sharing, Access Granting, Zero Trust, Data Sovereignty" . - a ex:Person ; ex:contactEmail ; ex:forumHandle "@renyuneyun" ; @@ -307,27 +291,20 @@ ex:webid . a ex:Software ; - ex:conformsTo ; - ex:developer ; ex:landingPage ; ex:maintainer ; ex:name "SAI Application" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary . + ex:subType con:OtherLibrary . a ex:Software ; - ex:conformsTo ; - ex:developer ; ex:landingPage ; ex:maintainer ; ex:name "SAI Authorization Agent" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary . + ex:subType con:OtherLibrary . a ex:Software ; - ex:conformsTo , , , ; - ex:developer ; - ex:hasDependencyOn , , ; ex:landingPage ; ex:maintainer ; ex:name "SAI Authorization Agent" ; @@ -335,9 +312,6 @@ ex:subType con:PodServer . a ex:Software ; - ex:conformsTo ; - ex:developer ; - ex:hasDependencyOn , , ; ex:landingPage ; ex:maintainer ; ex:name "Vuejectron" ; @@ -386,72 +360,6 @@ ex:name "Nicolas Seydoux" ; ex:webid . - a ex:CreativeWork ; - ex:about , ; - ex:author , , , , , ; - ex:description "The User-Managed Access (UMA) extension to OAuth 2.0 is a promising candidate for increasing Digital Trust in personal data ecosystems like Solid. With minor modifications, it can achieve many requirements regarding usage control and transaction contextualization, even though additional specification is needed to address delegation of control and retraction of usage policies." ; - ex:landingPage ; - ex:name "From Resource Control to Digital Trust with User-Managed Access" ; - ex:subType con:ResearchPaper ; - ex:technicalKeyword "Authorization, UMA" . - - a ex:Specification ; - ex:author , , , ; - ex:definesConformanceFor , , , , , ; - ex:editor ; - ex:landingPage ; - ex:name "Solid Notifications Protocol" ; - ex:repository . - - a ex:ClassOfProduct ; - ex:name "Solid Notifications Discovery Client" . - - a ex:ClassOfProduct ; - ex:name "Solid Notifications Notification Receiver" . - - a ex:ClassOfProduct ; - ex:name "Solid Notifications Notification Sender" . - - a ex:ClassOfProduct ; - ex:name "Solid Notifications Resource Server" . - - a ex:ClassOfProduct ; - ex:name "Solid Notifications Subscription Client" . - - a ex:ClassOfProduct ; - ex:name "Solid Notifications Subscription Server" . - - a ex:ClassOfProduct ; - ex:name "Solid-OIDC Client" . - - a ex:ClassOfProduct ; - ex:name "Solid-OIDC Provider" . - - a ex:Specification ; - ex:definesConformanceFor , ; - ex:landingPage ; - ex:name "Solid Protocol" ; - ex:repository . - - a ex:ClassOfProduct ; - ex:name "Solid Client" . - - a ex:ClassOfProduct ; - ex:name "Solid Server" . - - a ex:Specification ; - ex:author , , ; - ex:editor ; - ex:landingPage ; - ex:name "Web Access Control" ; - ex:repository . - - a ex:ClassOfProduct ; - ex:name "WAC Client" . - - a ex:ClassOfProduct ; - ex:name "WAC Server" . - a ex:Person ; ex:contactEmail ; ex:description "baby coder" ; @@ -616,12 +524,6 @@ a ex:Person ; ex:name "Sheff Engi" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Dublin Core Terms" ; - ex:namespaceURI ; - ex:prefix "terms:" . - a ex:Service ; ex:description "An open source digital wallet for providing home-insecure individuals a safe place to store documents within their control. PASS additionally aims to assist caseworkers with processing and providing documents needed to complete the housing-assistance application process." ; ex:landingPage ; @@ -643,9 +545,7 @@ ex:subType con:PodApp . a ex:Organization ; - ex:member , , ; ex:name "W3C Solid Community Group" ; - ex:siloId "w3c:110151" ; ex:subType con:OpenSourceProject . a ex:Software ; @@ -664,7 +564,6 @@ ex:name "Liquid Surf" ; ex:provider ; ex:serviceEndpoint ; - ex:serviceStackIncludes ; ex:softwareStackIncludes ; ex:status con:Production ; ex:subType con:GeneralPurposePodService . @@ -681,32 +580,23 @@ ex:description "Webcomponents based on Shighl" ; ex:name "Shighl elements" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:Framework ; ex:technicalKeyword "web components" . - a ex:CreativeWork ; - ex:description "We present SocialGenPod, a decentralised and privacy-friendly way of deploying generative AI Web applications. Unlike centralised Web and data architectures that keep user data tied to application and service providers, we show how one can use Solid -- a decentralised Web specification -- to decouple user data from generative AI applications. We demonstrate SocialGenPod using a prototype that allows users to converse with different Large Language Models, optionally leveraging Retrieval Augmented Generation to generate answers grounded in private documents stored in any Solid Pod that the user is allowed to access, directly or indirectly. SocialGenPod makes use of Solid access control mechanisms to give users full control of determining who has access to data stored in their Pods. SocialGenPod keeps all user data (chat history, app configuration, personal documents, etc) securely in the user's personal Pod; separate from specific model or application providers. Besides better privacy controls, this approach also enables portability across different services and applications. Finally, we discuss challenges, posed by the large compute requirements of state-of-the-art models, that future research in this area should address. Our prototype is open-source and available at: this https URL. \n\nCode available at https://github.com/Vidminas/socialgenpod" ; - ex:landingPage ; - ex:modified "2025-06-09T15:29:59.383Z"^^xsd:dateTime ; - ex:name "SocialGenPod: Privacy-Friendly Generative AI Social Web Applications with Decentralised Personal Data Stores" ; - ex:subType con:ResearchPaper ; - ex:technicalKeyword "Solid, LLM, AI, RAG, privacy" . - a ex:Software ; ex:description "Swift-based authentication for a Solid Pod." ; ex:name "Solid auth swift" ; - ex:platform "node" ; ex:programmingLanguage "Swift" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . a ex:Software ; ex:description "A library designed to make it easy to consume and produce RDF in PHP." ; ex:name "EasyRDF" ; ex:status con:Exploration ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . a ex:Person ; @@ -737,20 +627,10 @@ a ex:Person ; ex:name "Kevin Dunglas" . - a ex:CreativeWork ; - ex:name "Solid Web Components Discussion" ; - ex:subType con:OtherTechResource . - a ex:Person ; ex:landingPage ; ex:name "Presbrey" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Dublin Core Elements" ; - ex:namespaceURI ; - ex:prefix "elements:" . - a ex:Person ; ex:name "Jasmine Leonard" . @@ -780,12 +660,6 @@ a ex:Person ; ex:name "Jun Zhao" . - a ex:Ontology ; - ex:landingPage ; - ex:name "GeoNames" ; - ex:namespaceURI ; - ex:prefix "geo:" . - a ex:Person ; ex:name "Terence Eden" . @@ -814,19 +688,6 @@ a ex:Person ; ex:name "Leonard Rosenthol" . - a ex:Ontology ; - ex:landingPage xsd: ; - ex:name "XML Schema" ; - ex:namespaceURI xsd: ; - ex:prefix "xsd:" . - - a ex:Specification ; - ex:author , ; - ex:editor ; - ex:landingPage ; - ex:name "Solid-PREP" ; - ex:repository . - a ex:Organization ; ex:name "Oxford University" ; ex:subType con:UniversityProject . @@ -842,7 +703,7 @@ ex:name "KeyChain" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "authentication", "encryption" . a ex:Person ; @@ -860,7 +721,7 @@ ex:name "ActivityPods" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary . + ex:subType con:Framework . a ex:Person ; ex:name "Thomas Shouten" . @@ -893,12 +754,11 @@ ex:name "Jon Pederson" . a ex:Software ; - ex:developer ; ex:maintainer ; ex:name "LDO - Linked Data Objects" ; ex:programmingLanguage "typescript" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . a ex:Person ; @@ -921,12 +781,6 @@ a ex:Person ; ex:name "Knut-Olav Hoven" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Basic Geo" ; - ex:namespaceURI ; - ex:prefix "wgs84_pos:" . - a ex:Person ; ex:name "Philippe Duchesne" . @@ -952,12 +806,6 @@ ex:subType con:PodApp ; ex:technicalKeyword "pod frontend", "pod management" . - a ex:Specification ; - ex:editor , ; - ex:landingPage ; - ex:name "Solid DID Method" ; - ex:repository . - a ex:Person ; ex:landingPage ; ex:name "Jack Lawson" . @@ -992,24 +840,12 @@ ex:name "GraphQL ld comunica solid" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . - a ex:Ontology ; - ex:landingPage ; - ex:name "User Interface" ; - ex:namespaceURI ; - ex:prefix "ui:" . - a ex:Person ; ex:name "Nada Akl" . - a ex:Ontology ; - ex:landingPage ; - ex:name "HTTP" ; - ex:namespaceURI ; - ex:prefix "http:" . - a ex:Service ; ex:description "Announcements for W3C Linked Web Storage Working Group." ; ex:name "W3C Linked Web Storage Working Group Public Mailing List" ; @@ -1019,21 +855,12 @@ ex:status con:Production ; ex:subType con:CommunicationService . - a ex:Ontology ; - ex:landingPage owl: ; - ex:name "Web Ontology Language (OWL)" ; - ex:namespaceURI owl: ; - ex:prefix "ex:" . - a ex:Person ; ex:name "Michael Farber" . a ex:Person ; ex:name "Matthew Fowle" . - a ex:ClassOfProduct ; - ex:name "ACP Server" . - a ex:Event ; ex:name "Solid Symposium" . @@ -1045,20 +872,13 @@ ex:status con:Production ; ex:subType con:CommunicationService . - a ex:Ontology ; - ex:landingPage ; - ex:name "Creative Commons" ; - ex:namespaceURI ; - ex:prefix "cc:" . - a ex:Software ; - ex:conformsTo , ; ex:landingPage ; ex:maintainer , , ; ex:name "Solid Notifications Client" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary . + ex:subType con:OtherLibrary . a ex:Software ; ex:description "A non-linear personal web notebook" ; @@ -1129,23 +949,12 @@ ex:subType con:ProductivityApp ; ex:technicalKeyword "editor" . - a ex:ClassOfProduct ; - ex:name "Solid Streaming HTTP Notification Receiver" . - a ex:Software ; ex:name "Collectie registratie systeem" ; ex:status con:Development ; ex:subType con:ProductivityApp ; ex:technicalKeyword "general purpose app" . - a ex:Specification ; - ex:author ; - ex:definesConformanceFor , ; - ex:editor , , ; - ex:landingPage ; - ex:name "Solid Application Interoperability" ; - ex:repository . - a ex:Person ; ex:landingPage ; ex:name "Thomas Fritz" . @@ -1175,16 +984,7 @@ a ex:Person ; ex:landingPage ; - ex:name "Jesse Wright" ; - ex:siloId "github:63333554", "w3c:132252" ; - ex:siloUsername "github:jeswr" . - - a ex:Specification ; - ex:author ; - ex:editor ; - ex:landingPage ; - ex:name "Solid Chat" ; - ex:repository . + ex:name "Jesse Wright" . a ex:Person ; ex:landingPage ; @@ -1210,7 +1010,7 @@ ex:name "Ember Solid" ; ex:provider ; ex:status con:Production ; - ex:subType con:SoftwareLibrary . + ex:subType con:OtherLibrary . a ex:Software ; ex:landingPage ; @@ -1229,12 +1029,6 @@ ex:status con:Production ; ex:subType con:GeneralPurposePodService . - a ex:Ontology ; - ex:landingPage ; - ex:name "Workspace" ; - ex:namespaceURI ; - ex:prefix "space:" . - a ex:Person ; ex:forumHandle "@SimonShapiro" ; ex:name "Simon Shapiro" . @@ -1301,14 +1095,14 @@ ex:name "Query solid" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . a ex:Software ; ex:description "A library for easy manipulation of RDF." ; ex:name "Tripledoc" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . a ex:Person ; @@ -1322,7 +1116,6 @@ a ex:Software ; ex:clientID ; ex:description "Solid-compatible data mashup library and Data Browser. Includes a profile editor, chat, task manager, address book, rdf viewers, and more." ; - ex:hasDependencyOn , , ; ex:landingPage ; ex:maintainer ; ex:name "SolidOS" ; @@ -1336,12 +1129,6 @@ a ex:Person ; ex:name "Christian Buggedei" . - a ex:CreativeWork ; - ex:landingPage , ; - ex:name "Authorization Use Cases and Requirements" ; - ex:subType con:OtherTechResource ; - ex:technicalKeyword "authorization", "requirement", "specifications", "use case" . - a ex:Software ; ex:description "'Couchsurfing' for bicycle travellers" ; ex:name "Sleepy Bike Platform" ; @@ -1349,14 +1136,12 @@ ex:status con:Production ; ex:subType con:PodServer . - a ex:CreativeWork ; - ex:about ; - ex:author ; - ex:editor ; - ex:landingPage , ; - ex:name "Solid Application Interoperability: Application Primer" ; - ex:subType con:Primer ; - ex:technicalKeyword "applications", "interoperability", "specifications" . + a ex:CreativeWork ; + ex:description "Videos of presentations about Solid Apps." ; + ex:landingPage ; + ex:name "Solid Practitioner Presentations" ; + ex:provider ; + ex:subType con:OtherLearningResource . a ex:Organization ; ex:description "Moving the internet forward." ; @@ -1367,26 +1152,15 @@ a ex:Person ; ex:name "Roy Leon" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Solid Terms" ; - ex:namespaceURI ; - ex:prefix "solid:" . - a ex:Software ; ex:description "PHP library for accessing data and managing permissions on data stored in a Solid Pod." ; ex:maintainer , ; ex:name "Solid client php" ; ex:programmingLanguage "PHP" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . - a ex:CreativeWork ; - ex:name "Solid Shapes Wiki" ; - ex:repository ; - ex:subType con:OtherTechResource . - a ex:Organization ; ex:name "Inrupt, Inc." ; ex:subType con:Company . @@ -1444,12 +1218,6 @@ a ex:Person ; ex:name "damooo" . - a ex:CreativeWork ; - ex:name "Creating Vocabularies" ; - ex:provider ; - ex:repository ; - ex:subType con:OtherTechResource . - a ex:Software ; ex:maintainer ; ex:name "WebID Profile editor" ; @@ -1458,12 +1226,6 @@ ex:subType con:PodApp ; ex:technicalKeyword "pod management", "profile" . - a ex:Ontology ; - ex:landingPage ; - ex:name "HTTPH" ; - ex:namespaceURI ; - ex:prefix "httph:" . - a ex:Person ; ex:name "Andrei Sambra" . @@ -1488,18 +1250,12 @@ ex:name "Mozilla Open Source Support" ; ex:subType con:FundingOrganization . - a ex:Specification ; - ex:editor ; - ex:landingPage ; - ex:name "EventSourceChannel2023" ; - ex:repository . - a ex:Software ; ex:description "OpenID Connect Provider for Node.js." ; ex:name "OIDC provider" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "authentication" . a ex:Software ; @@ -1543,12 +1299,6 @@ ex:subType con:ProductivityApp ; ex:technicalKeyword "weather" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Time" ; - ex:namespaceURI ; - ex:prefix "time:" . - a ex:CreativeWork ; ex:author ; ex:landingPage ; @@ -1576,6 +1326,12 @@ ex:landingPage ; ex:name "Jose Emilio Labra Gayo" . + a ex:CreativeWork ; + ex:description "Listing & links to Solid specifications, drafts, and reports." ; + ex:landingPage ; + ex:name "Solid Technical Reports" ; + ex:subType con:OtherLearningResource . + a ex:Person ; ex:name "Gertjan de Mulder" . @@ -1599,12 +1355,6 @@ a ex:Person ; ex:name "Altynbek Orumbayev" . - a ex:CreativeWork ; - ex:landingPage , ; - ex:name "Authorization Use Cases Survey" ; - ex:subType con:OtherTechResource ; - ex:technicalKeyword "authorization", "requirement", "specifications", "use case" . - a ex:Person ; ex:forumHandle "@workingwriter" ; ex:name "Michael McCallister" . @@ -1631,13 +1381,6 @@ a ex:Person ; ex:name "Jake Stein" . - a ex:Specification ; - ex:author ; - ex:editor , ; - ex:landingPage ; - ex:name "HTTPSig Authentication for Solid" ; - ex:repository . - a ex:Software ; ex:maintainer ; ex:name "Solid File Manager" ; @@ -1647,12 +1390,6 @@ ex:subType con:PodApp ; ex:technicalKeyword "pod management" . - a ex:Specification ; - ex:editor ; - ex:landingPage ; - ex:name "Shape Trees" ; - ex:repository . - a ex:Person ; ex:name "Pol Alvarez" . @@ -1676,7 +1413,7 @@ ex:name "OIDC resource server auth" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "authentication" . a ex:Person ; @@ -1691,7 +1428,6 @@ ex:technicalKeyword "general purpose app", "uncategorized" . a ex:Software ; - ex:developer ; ex:landingPage ; ex:maintainer , ; ex:name "PHP Solid Server" ; @@ -1724,7 +1460,7 @@ ex:name "Solid file client" ; ex:repository ; ex:status con:Development ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "pod management" . a ex:Person ; @@ -1733,12 +1469,6 @@ a ex:Person ; ex:name "Jacob Dreesen" . - a ex:Specification ; - ex:editor ; - ex:landingPage ; - ex:name "LDNChannel2023" ; - ex:repository . - a ex:Person ; ex:name "Marrelle Bailey" . @@ -1782,12 +1512,6 @@ ex:name "INRIA" ; ex:subType con:UniversityProject . - a ex:Ontology ; - ex:landingPage ; - ex:name "iCal" ; - ex:namespaceURI ; - ex:prefix "ical:" . - a ex:Software ; ex:description "Linked Data visualizations sharing and collaboration via Solid." ; ex:maintainer , ; @@ -1813,34 +1537,18 @@ ex:provider ; ex:subType con:AboutSolidApps . - a ex:CreativeWork ; - ex:author , ; - ex:description "Extension to the Solid protocol that enables E2EE through Attribute-Based Encryption. The extension enables systems that are unwilling to entrust POD providers with their users' data, such as electronic health record (EHR) systems, to be built on top of Solid and benefit from the features it offers, such as application interoperability. The repository includes a proof-of-concept application." ; - ex:landingPage ; - ex:modified "2025-06-12T10:36:31.853Z"^^xsd:dateTime ; - ex:name "Solid E2EE" ; - ex:subType con:ResearchPaper ; - ex:technicalKeyword "e2ee,cp-abe" . - a ex:Person ; ex:name "Wim Tobback" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Meeting" ; - ex:namespaceURI ; - ex:prefix "mee:" . - a ex:Person ; ex:name "Leon Porter" . a ex:Software ; - ex:hasDependencyOn ; ex:maintainer ; ex:name "Solid Web Components" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:Framework ; ex:technicalKeyword "web components" . a ex:Software ; @@ -1848,7 +1556,7 @@ ex:name "OIDC auth manager" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "authentication" . a ex:Person ; @@ -1872,7 +1580,7 @@ ex:provider ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . a ex:Person ; @@ -1914,12 +1622,6 @@ a ex:Person ; ex:name "Pano Maria" . - a ex:Ontology ; - ex:landingPage rdfs: ; - ex:name "RDF Schema" ; - ex:namespaceURI rdfs: ; - ex:prefix "rdfs:" . - a ex:Person ; ex:landingPage ; ex:name "Thomas Tanon" . @@ -1979,25 +1681,16 @@ ex:name "Imec" ; ex:subType con:UniversityProject . - a ex:Ontology ; - ex:landingPage ; - ex:name "rLog" ; - ex:namespaceURI ; - ex:prefix "rlog:" . - a ex:Software ; ex:name "Useconcept" ; ex:status con:Development ; ex:subType con:OtherApp ; ex:technicalKeyword "general purpose app", "uncategorized" . - a ex:ClassOfProduct ; - ex:name "SAI Application" . - a ex:Software ; ex:name "Idflex query" ; ex:status con:Exploration ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . a ex:Person ; @@ -2007,14 +1700,13 @@ ex:name "Data Modules Video Call" . a ex:Software ; - ex:conformsTo ; ex:description "A client library for authenticating with Solid." ; ex:name "Solid client authn node" ; ex:programmingLanguage "Typescript" ; ex:provider ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . a ex:Event ; @@ -2029,7 +1721,7 @@ ex:name "Rdf ext" ; ex:repository ; ex:status con:Exploration ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . a ex:Software ; @@ -2046,13 +1738,12 @@ ex:name "Soukai" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:Framework ; ex:technicalKeyword "library" . a ex:Service ; ex:contactEmail ; ex:description "solidweb.org is a public Solid server based in Germany which is in an experimental state." ; - ex:domainKeyword "Pod-Provider" ; ex:logo ; ex:modified "2025-04-22T03:40:39.786Z"^^xsd:dateTime ; ex:name "solidweb.org" ; @@ -2075,22 +1766,11 @@ ex:name "Data Swift" ; ex:subType con:Company . - a ex:ClassOfProduct ; - ex:name "ACP Resource Server" . - a ex:Software ; ex:name "PASS Platform" ; ex:status con:Production ; ex:subType con:PodServer . - a ex:Specification ; - ex:author , ; - ex:definesConformanceFor , , ; - ex:editor , ; - ex:landingPage ; - ex:name "WebhookChannel2023" ; - ex:repository . - a ex:Event ; ex:description "A hub for those putting the Solid vision into practice." ; ex:name "Solid Practitioners Video Call" ; @@ -2102,20 +1782,13 @@ a ex:Person ; ex:name "Mark Hughes" . - a ex:CreativeWork ; - ex:description "Conventions around how apps and services store data on your personal data store." ; - ex:name "PDS Interop Conventions" ; - ex:provider ; - ex:repository ; - ex:subType con:OtherTechResource . - a ex:Software ; ex:description "React components and hooks for building Solid apps with GraphQL-LD." ; ex:maintainer ; ex:name "Solid react graphql ld" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "rdf parsing" . a ex:Person ; @@ -2132,6 +1805,8 @@ ex:subType con:ProductivityApp . a ex:Organization ; + ex:description "A group to support projects meant for end users. Networking for developers, Showcase of new apps. Discussions on social impact." ; + ex:landingPage ; ex:name "Solid Practitioners" ; ex:subType con:OpenSourceProject . @@ -2172,12 +1847,6 @@ ex:forumHandle "@oolivo" ; ex:name "Oz" . - a ex:Ontology ; - ex:landingPage ; - ex:name "vCard" ; - ex:namespaceURI ; - ex:prefix "vcard:" . - a ex:Organization ; ex:landingPage ; ex:name "GitHub Sponsors" ; @@ -2194,14 +1863,6 @@ ex:name "Digita" ; ex:subType con:Company . - a ex:Specification ; - ex:author , ; - ex:definesConformanceFor , ; - ex:editor , ; - ex:landingPage ; - ex:name "WebPushChannel2023" ; - ex:repository . - a ex:CreativeWork ; ex:name "Getting Started withSolid" ; ex:repository ; @@ -2223,12 +1884,6 @@ ex:landingPage ; ex:name "Jason Paulos" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Linked Data Platform" ; - ex:namespaceURI ; - ex:prefix "ldp:" . - a ex:Organization ; ex:name "The Solid Project" ; ex:subType con:OpenSourceProject . @@ -2259,25 +1914,18 @@ a ex:Software ; ex:description "Login and session management." ; ex:name "Solid auth fetcher" ; - ex:platform "browser", "node" ; ex:programmingLanguage "Javascript" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . a ex:Person ; ex:name "Søren Grauslund" . - a ex:ClassOfProduct ; - ex:name "Solid WebSocket Subscription Server" . - a ex:Person ; ex:name "Michael Pigott" . - a ex:ClassOfProduct ; - ex:name "Solid Webhook Notification Sender" . - a ex:Person ; ex:forumHandle "@RyanAelen" ; ex:name "Ryan Aelen" . @@ -2296,14 +1944,13 @@ ex:name "Mordax" . a ex:Software ; - ex:conformsTo ; ex:description "A client library for authenticating with Solid." ; ex:name "Solid client authn browser" ; ex:programmingLanguage "Typescript" ; ex:provider ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . a ex:Person ; @@ -2318,8 +1965,7 @@ ex:provider ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; - ex:technicalKeyword "uncategorized" . + ex:subType con:RdfParsing . a ex:Software ; ex:landingPage ; @@ -2338,7 +1984,7 @@ ex:name "Molid" ; ex:programmingLanguage "javascript" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "test server" . a ex:Person ; @@ -2354,9 +2000,6 @@ ex:name "Using LDO to build a Solid Application for React" ; ex:subType con:AboutSolidApps . - a ex:ClassOfProduct ; - ex:name "Solid Webhook Notification Receiver" . - a ex:CreativeWork ; ex:author ; ex:landingPage ; @@ -2398,7 +2041,7 @@ ex:programmingLanguage "Typescript" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . a ex:Organization ; @@ -2407,20 +2050,13 @@ a ex:Software ; ex:description "software used in SolidOS app." ; - ex:hasDependencyOn , ; ex:name "mashlib" ; ex:provider ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:Framework ; ex:technicalKeyword "uncategorized" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Media Types" ; - ex:namespaceURI ; - ex:prefix "iana:" . - a ex:Person ; ex:name "Reuben Binns" . @@ -2435,22 +2071,13 @@ ex:status con:Production ; ex:subType con:GeneralPurposePodService . - a ex:CreativeWork ; - ex:about ; - ex:author ; - ex:editor ; - ex:landingPage , ; - ex:name "Solid Application Interoperability: Authorization Agent Primer" ; - ex:subType con:Primer ; - ex:technicalKeyword "authorization agent", "interoperability", "specifications" . - a ex:Service ; ex:name "SolidOS Webapp" ; ex:provider ; ex:serviceEndpoint ; ex:softwareStackIncludes ; ex:status con:Production ; - ex:subType con:OtherService ; + ex:subType con:OtherApp ; ex:technicalKeyword "pod frontend" . a ex:Software ; @@ -2479,19 +2106,9 @@ ex:name "Web::Solid::Auth" ; ex:programmingLanguage "Perl" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . - a ex:CreativeWork ; - ex:author ; - ex:description "In today's digital landscape, the Web has become increasingly centralized, raising concerns about user privacy violations. Decentralized Web architectures, such as Solid, offer a promising solution by empowering users with better control over their data in their personal `Pods'. However, a significant challenge remains: users must navigate numerous applications to decide which application can be trusted with access to their data Pods. This often involves reading lengthy and complex Terms of Use agreements, a process that users often find daunting or simply ignore. This compromises user autonomy and impedes detection of data misuse. We propose a novel formal description of Data Terms of Use (DToU), along with a DToU reasoner. Users and applications specify their own parts of the DToU policy with local knowledge, covering permissions, requirements, prohibitions and obligations. Automated reasoning verifies compliance, and also derives policies for output data. This constitutes a ``perennial'' DToU language, where the policy authoring only occurs once, and we can conduct ongoing automated checks across users, applications and activity cycles. Our solution is built on Turtle, Notation 3 and RDF Surfaces, for the language and the reasoning engine. It ensures seamless integration with other semantic tools for enhanced interoperability. We have successfully integrated this language into the \nSolid framework, and conducted performance benchmark. We believe this work demonstrates a practicality of a perennial DToU language and the potential of a paradigm shift to how users interact with data and applications in a decentralized Web, offering both improved privacy and usability. \n\nPreprint available at https://arxiv.org/abs/2403.07587" ; - ex:landingPage ; - ex:modified "2025-06-09T15:29:26.208Z"^^xsd:dateTime ; - ex:name "Perennial Semantic Data Terms of Use for Decentralized Web" ; - ex:provider ; - ex:subType con:ResearchPaper ; - ex:technicalKeyword "Solid, authentication, data usage control" . - a ex:Software ; ex:description "Stores Vcard Contacts on the POD" ; ex:name "Contacts" ; @@ -2504,18 +2121,11 @@ ex:name "sleepy.bike" ; ex:provider ; ex:serviceEndpoint ; - ex:serviceStackIncludes ; ex:socialKeyword "housing", "resource sharing", "transportation" ; - ex:softwareStackIncludes ; + ex:softwareStackIncludes , ; ex:status con:Production ; ex:subType con:SpecializedPodService . - a ex:Ontology ; - ex:landingPage ; - ex:name "Socially Inter-linked Online Communities " ; - ex:namespaceURI ; - ex:prefix "sioc:" . - a ex:Person ; ex:name "Souen Mazouin" . @@ -2530,14 +2140,6 @@ ex:subType con:PodApp ; ex:technicalKeyword "pod frontend" . - a ex:Specification ; - ex:author ; - ex:definesConformanceFor , ; - ex:editor ; - ex:landingPage ; - ex:name "WebSocketChannel2023" ; - ex:repository . - a ex:Person ; ex:name "Mark Baker" . @@ -2570,7 +2172,7 @@ ex:name "Shighl" ; ex:programmingLanguage "javascript" ; ex:status con:Development ; - ex:subType con:SoftwareLibrary ; + ex:subType con:Framework ; ex:technicalKeyword "sdk" . a ex:Service ; @@ -2585,7 +2187,6 @@ ex:description "A command-line and interactive shell for Solid." ; ex:maintainer ; ex:name "Solid Shell" ; - ex:platform "node" ; ex:programmingLanguage "javascript" ; ex:repository ; ex:status con:Development ; @@ -2609,7 +2210,6 @@ ex:name "Pete Edwards" . a ex:Software ; - ex:conformsTo , , , , , , , , , , , , ; ex:landingPage ; ex:maintainer ; ex:name "Community Solid Server (CSS)" ; @@ -2638,12 +2238,9 @@ ex:landingPage ; ex:name "AerogelJS" ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:Framework ; ex:technicalKeyword "application creator" . - a ex:ClassOfProduct ; - ex:name "Solid Webhook Subscription Server" . - a ex:Software ; ex:description "Harness used to run Solid conformance tests and generate reports" ; ex:maintainer ; @@ -2680,14 +2277,6 @@ ex:status con:Production ; ex:subType con:GeneralPurposePodService . - a ex:Specification ; - ex:author ; - ex:definesConformanceFor , ; - ex:editor ; - ex:landingPage ; - ex:name "StreamingHTTPChannel2023" ; - ex:repository . - a ex:Person ; ex:forumHandle "@ludwigschubi" ; ex:name "Ludwig Schubi" . @@ -2754,13 +2343,11 @@ ex:name "Solid rest" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "alternate storage" . a ex:Person ; - ex:name "Erich Bremer" ; - ex:siloId "github:4094961", "w3c:45759" ; - ex:siloUsername "github:ebremer" . + ex:name "Erich Bremer" . a ex:Software ; ex:description "Simple check of Web Access Control (WAC) access." ; @@ -2768,7 +2355,7 @@ ex:name "ACL check" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "access control", "wac" . a ex:Person ; @@ -2791,20 +2378,13 @@ a ex:Person ; ex:name "Marco Neumann" . - a ex:Specification ; - ex:definesConformanceFor , ; - ex:editor ; - ex:landingPage ; - ex:name "Access Control Policy" ; - ex:repository . - a ex:Software ; ex:description " Solid authentication with client credentials." ; ex:name "Solid client credentials py" ; ex:programmingLanguage "Python" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . a ex:Organization ; @@ -2816,14 +2396,6 @@ ex:name "University of Southampton" ; ex:subType con:UniversityProject . - a ex:CreativeWork ; - ex:description "Personal Data Stores (PDS) like SoLiD is an emerging data and knowledge management solution in recent years. They promise to give back ownership and control of data to the user, and provide protocols for developers to build applications using the data. However, existing Solid-based applications often focus on using a single-user's data. In this article, we use a simple but realistic calendar-and-meeting-scheduling scenario to demonstrate the feasibility and design considerations for enabling cooperative data-use across multiple users' SoLiD Pods. This scenario identifies the bottleneck for certain cooperative use cases, namely those involving offline-changing and synchronization of knowledge information. We demonstrate a viable approach to mediate this issue, introducing a long-living thin service, the orchestrator. We describe our implementation and discuss its applicability to other ecosystems. We conclude by discussing the implication of such services, in particular their risks and challenges for building decentralised applications. \n\nPreprint at https://arxiv.org/abs/2306.14890" ; - ex:landingPage ; - ex:modified "2025-06-09T15:30:38.474Z"^^xsd:dateTime ; - ex:name "Long-living Service for Cooperative Knowledge Use in Decentralized Data Stores" ; - ex:subType con:ResearchPaper ; - ex:technicalKeyword "Calendar, Meeting Scheduling" . - a ex:Software ; ex:name "ODS Briefcase" ; ex:status con:Development ; @@ -2836,7 +2408,7 @@ ex:name "Solid file widget" ; ex:repository ; ex:status con:Archived ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "authentication", "pod management" . a ex:Person ; @@ -2888,12 +2460,6 @@ a ex:Person ; ex:name "Nigel Shadbolt" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Schema" ; - ex:namespaceURI ; - ex:prefix "schema:" . - a ex:Software ; ex:description "Creates WebID accounts with Solid compatible providers." ; ex:maintainer ; @@ -2937,7 +2503,6 @@ a ex:Software ; ex:description "The solid databrowser technology as a stand-alone electron app." ; - ex:hasDependencyOn ; ex:maintainer ; ex:name "Data Kitchen" ; ex:provider ; @@ -2979,13 +2544,6 @@ a ex:Person ; ex:name "Kevin Poulsen" . - a ex:Specification ; - ex:author , , , , ; - ex:editor , , ; - ex:landingPage ; - ex:name "Solid WebID Profile" ; - ex:repository . - a ex:Person ; ex:name "Otto AA" . @@ -3010,14 +2568,6 @@ ex:subType con:PodApp ; ex:technicalKeyword "pod management" . - a ex:Specification ; - ex:description "Draft Protocol for the W3CLinked Web Storage Group." ; - ex:editor , , , ; - ex:landingPage ; - ex:name "Linked Web Storage Protocol" ; - ex:provider ; - ex:repository . - a ex:Event ; ex:name "Solid World" . @@ -3034,9 +2584,6 @@ ex:forumHandle "@sofimrtn" ; ex:name "Sofía Martín" . - a ex:ClassOfProduct ; - ex:name "Solid WebPush Notification Sender" . - a ex:Software ; ex:description "Platform to perform confidential data processing on personal data, where end users can allow service providers to process their data to produce derived data, while having the guarantee that the original data will not be read by the service provider itself." ; ex:name "DataVillage platform" ; @@ -3063,7 +2610,7 @@ ex:programmingLanguage "Python" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:AuthenticatedFetch ; ex:technicalKeyword "solid client" . a ex:Service ; @@ -3074,6 +2621,12 @@ ex:status con:Production ; ex:subType con:CommunicationService . + a ex:CreativeWork ; + ex:description "Searchable database of vocabularies and terms." ; + ex:landingPage ; + ex:name "Linked Online Vocabularies (LOV)" ; + ex:subType con:OtherLearningResource . + a ex:Person ; ex:name "Kofi Kyei" . @@ -3093,12 +2646,15 @@ ex:subType con:ProductivityApp ; ex:technicalKeyword "blogs", "editor" . - a ex:ClassOfProduct ; - ex:name "SAI Authorization Agent" . - a ex:Person ; ex:name "Jonas Smedegaard" . + a ex:CreativeWork ; + ex:description "searchable namespace database" ; + ex:landingPage ; + ex:name "prefix.cc" ; + ex:subType con:OtherLearningResource . + a ex:Person ; ex:name "Henri Cattoire" . @@ -3132,28 +2688,9 @@ ex:name "OIDC relying party" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:OtherLibrary ; ex:technicalKeyword "authentication" . - a ex:Ontology ; - ex:description "The Conflict-Free Replicated Datatypes (CRDT) ontology can be used to describe changes made to resources over time." ; - ex:modified "2025-06-10T18:06:28.878Z"^^xsd:dateTime ; - ex:name "CRDT" ; - ex:namespaceURI ; - ex:prefix "crdt:" . - - a ex:Ontology ; - ex:landingPage ; - ex:name "Timezone" ; - ex:namespaceURI ; - ex:prefix "tzont:" . - - a ex:Ontology ; - ex:landingPage ; - ex:name "Issue Tracking" ; - ex:namespaceURI ; - ex:prefix "wf:" . - a ex:Person ; ex:name "Michaël Dierick" . @@ -3166,11 +2703,11 @@ a ex:Software ; ex:landingPage ; - ex:mainKeyword "application creator", "web components" ; ex:name "Startin'Blox" ; ex:provider ; ex:status con:Production ; - ex:subType con:SoftwareLibrary . + ex:subType con:Framework ; + ex:technicalKeyword "application creator", "web components" . a ex:Person ; ex:name "Wouter Kok" . @@ -3181,7 +2718,6 @@ a ex:Service ; ex:contactEmail ; ex:description "Pivot" ; - ex:domainKeyword "Pod-Provider" ; ex:logo ; ex:modified "2025-04-22T03:43:06.788Z"^^xsd:dateTime ; ex:name "teamid.live" ; @@ -3212,12 +2748,6 @@ a ex:Person ; ex:name "Angelo Veltens" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Activity Streams" ; - ex:namespaceURI ; - ex:prefix "as:" . - a ex:Person ; ex:name "Matthieu Jacquot" . @@ -3260,12 +2790,6 @@ a ex:Person ; ex:name "Kai Gilb" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Friends of a Friend" ; - ex:namespaceURI ; - ex:prefix "foaf:" . - a ex:Person ; ex:name "Ben Peachey" . @@ -3300,8 +2824,7 @@ ex:provider ; ex:repository ; ex:status con:Development ; - ex:subType con:SoftwareLibrary ; - ex:technicalKeyword "search" . + ex:subType con:Search . a ex:Software ; ex:description "A proof-of-concept mobile app for decentralized health record management." ; @@ -3322,9 +2845,6 @@ ex:subType con:ProductivityApp ; ex:technicalKeyword "editor" . - a ex:ClassOfProduct ; - ex:name "Solid WebPush Subscription Server" . - a ex:Person ; ex:name "Thorsten Kastner" . @@ -3336,12 +2856,6 @@ ex:name "redpencil.io" ; ex:subType con:Company . - a ex:Ontology ; - ex:landingPage ; - ex:name "Stat" ; - ex:namespaceURI ; - ex:prefix "posix:" . - a ex:Software ; ex:maintainer ; ex:name "Solid IDE" ; @@ -3374,19 +2888,9 @@ a ex:Person ; ex:name "KU Leuven" . - a ex:CreativeWork ; - ex:author , , , , ; - ex:description "The Solid Project – at the time of writing – uses containers with resources in them as defined in the\nLDP specification as a way to give developers the flexibility to write to a storage in the way they see\nfit. With cross-app interoperability and read performance in mind, choosing an application profile and\ncontainer-resource structure becomes guesswork for the app writing the data, as all possible apps reading\nfrom the storage are not yet defined. Event sourcing is a technique used in data architecture to decouple\nwriting from reading. Multiple views will always stay in-sync with an event source, or allow one to\nview a historic state or study the changes that happened over time. In this paper, we study whether we\ncan use the current version of the Solid protocol to store an event source using the Linked Data Event\nStreams (LDES) specification. We successfully implemented a client library, which we tested on the use\ncase of storing your live location with history, for both reading and writing in two modes: version aware\nand version agnostic. However, the current Solid protocol based on LDP also shows some limitations\ntowards event sourcing: (i) re-balancing the hypermedia structure publishing the LDES is not possible\ndue to slash semantics, (ii) as the event source is fully managed by clients, a faulty client may corrupt\nthe event source, and (iii) the client is also in charge of enforcing the retention policy, having to delete\nolder resources one by one, while they have no information about the internal limits of the Solid storage.\nWe conclude that the Solid spec as-is can be used to store an event source, and that client libraries\ncan create an abstraction of the history without any server-specific functionality. However, we also\nhad to work our way around some limitations, putting more strain on the client, and want to open the\ndiscussion on whether the Solid server protocol needs to be extended for more native support of the\nevent sourcing pattern." ; - ex:landingPage ; - ex:modified "2025-06-05T22:08:20.952Z"^^xsd:dateTime ; - ex:name "Linked Data Event Streams in Solid LDP containers" ; - ex:subType con:ResearchPaper ; - ex:technicalKeyword "LDP, LDES, Event Sourcing, TREE, hypermedia" . - a ex:Organization ; ex:contactEmail ; ex:description "a small org providing a NSS a CSS and a Pivot" ; - ex:domainKeyword "Pod-Provider" ; ex:landingPage ; ex:logo ; ex:modified "2025-04-22T03:39:06.075Z"^^xsd:dateTime ; @@ -3424,12 +2928,6 @@ a ex:Person ; ex:name "Max Wardeh" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Basic Access Control" ; - ex:namespaceURI ; - ex:prefix "acl:" . - a ex:Person ; ex:name "Zongyan Li" . @@ -3445,23 +2943,9 @@ ex:landingPage ; ex:name "Rahul Gupta" . - a ex:CreativeWork ; - ex:landingPage , ; - ex:name "Solid QA" ; - ex:subType con:OtherTechResource ; - ex:technicalKeyword "quality assurance", "solid", "specifications" . - a ex:Person ; ex:name "Sylvain Le Bon" . - a ex:CreativeWork ; - ex:editor ; - ex:landingPage ; - ex:name "Linked Web Storage Use Cases" ; - ex:provider ; - ex:repository ; - ex:subType con:OtherTechResource . - a ex:Software ; ex:landingPage ; ex:name "Enterprise Solid Server (ESS)" ; @@ -3487,9 +2971,6 @@ ex:subType con:PodApp ; ex:technicalKeyword "pod frontedn", "uncategorized" . - a ex:ClassOfProduct ; - ex:name "Solid Streaming HTTP Notification Sender" . - a ex:Person ; ex:name "Andreas Both" . @@ -3503,14 +2984,6 @@ ex:name "PDS Interop" ; ex:subType con:UniversityProject . - a ex:Specification ; - ex:description "This document provides the specification and examples of the perennial DToU language, a language for describing the Terms of Use of Data, both for data providers (e.g. users) and data consumers (e.g. applications).\n\nIt accompanies the paper \"Perennial Semantic Data Terms of Use for Decentralized Web\" by Rui Zhao and Jun Zhao, at ACM Web Conference 2024 (previously known as International World Wide Web Conference; WWW2024), doi 10.1145/3589334.3645631." ; - ex:editor , ; - ex:landingPage ; - ex:modified "2025-06-05T21:39:22.437Z"^^xsd:dateTime ; - ex:name "DToU Language Spec" ; - ex:repository . - a ex:Person ; ex:forumHandle "@linonetwo" ; ex:name "Lin Onetwo" . @@ -3524,25 +2997,10 @@ a ex:Person ; ex:name "Özcan Seker" . - a ex:CreativeWork ; - ex:description "Data and data processing have become an indispensable aspect for our society. Insights drawn from collective data make invaluable contribution to scientific and societal research and business. But there are increasing worries about privacy issues and data misuse. This has prompted the emergence of decentralised personal data stores (PDS) like Solid that provide individuals more control over their personal data. However, existing PDS frameworks face challenges in ensuring data privacy when performing collective computations with data from multiple users. While Secure Multi-Party Computation (MPC) offers input secrecy protection during the computation without relying on any single party, issues emerge when directly applying MPC in the context of PDS, particularly due to key factors like autonomy and decentralisation. In this work, we discuss the essence of this issue, identify a potential solution, and introduce a modular architecture, Libertas, to integrate MPC with PDS like Solid, without requiring protocol-level changes. We introduce a paradigm shift from an `omniscient' view to individual-based, user-centric view of trust and security, and discuss the threat model of Libertas. Two realistic use cases for collaborative data processing are used for evaluation, both for technical feasibility and empirical benchmark, highlighting its effectiveness in empowering gig workers and generating differentially private synthetic data. The results of our experiments underscore Libertas' linear scalability and provide valuable insights into compute optimisations, thereby advancing the state-of-the-art in privacy-preserving data processing practices. By offering practical solutions for maintaining both individual autonomy and privacy in collaborative data processing environments, Libertas contributes significantly to the ongoing discourse on privacy protection in data-driven decision-making contexts. \nPrepring available at https://arxiv.org/abs/2309.16365" ; - ex:landingPage ; - ex:modified "2025-06-09T15:29:02.588Z"^^xsd:dateTime ; - ex:name "Libertas: Privacy-Preserving Collective Computation for Decentralised Personal Data Stores" ; - ex:provider ; - ex:subType con:ResearchPaper ; - ex:technicalKeyword "architecture, Solid, MPC, privacy, user autonomy" . - a ex:Person ; ex:forumHandle "@TheodoraPetkova" ; ex:name "Theodora Petkova" . - a ex:Ontology ; - ex:landingPage rdf: ; - ex:name "RDF Syntax" ; - ex:namespaceURI rdf: ; - ex:prefix "rdf:" . - a ex:Person ; ex:forumHandle "@janschill" ; ex:landingPage ; @@ -3585,7 +3043,7 @@ ex:name "W3C Solid Community Group Video Call" ; ex:provider ; ex:repository ; - ex:Schedule "Every Wednesday at 15:00 UTC" ; + ex:schedule "Every Wednesday at 15:00 UTC" ; ex:videoCallPage . a ex:Person ; @@ -3608,14 +3066,6 @@ a ex:Person ; ex:name "Aad Versteden" . - a ex:Specification ; - ex:description "Writing to a time-based fragmented Linked Data Event Stream that is stored on a Linked Data Platform." ; - ex:editor , ; - ex:landingPage ; - ex:modified "2025-06-05T21:36:50.756Z"^^xsd:dateTime ; - ex:name "Writing Linked Data Event Streams in LDP Basic Containers" ; - ex:repository . - a ex:Person ; ex:name "Tao Chen" . @@ -3627,9 +3077,6 @@ ex:subType con:ProductivityApp ; ex:technicalKeyword "OrganizationalApp" . - a ex:ClassOfProduct ; - ex:name "Solid WebSocket Notification Sender" . - a ex:Organization ; ex:landingPage ; ex:name "Manomayam" ; @@ -3664,7 +3111,7 @@ ex:name "Solid namespace" ; ex:repository ; ex:status con:Production ; - ex:subType con:SoftwareLibrary ; + ex:subType con:RdfParsing ; ex:technicalKeyword "ontologies", "rdf parsing" . a ex:Software ; @@ -3678,20 +3125,6 @@ a ex:Person ; ex:name "Maria Dimou" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Cert" ; - ex:namespaceURI ; - ex:prefix "cert:" . - - a ex:Specification ; - ex:author , , ; - ex:definesConformanceFor , ; - ex:editor , ; - ex:landingPage ; - ex:name "Solid-OIDC" ; - ex:repository . - a ex:Service ; ex:name "redpencil.io" ; ex:provider ; @@ -3708,9 +3141,6 @@ ex:name "SIDN Fonds" ; ex:subType con:FundingOrganization . - a ex:ClassOfProduct ; - ex:name "Solid Webhook Subscription Client" . - a ex:Organization ; ex:name "iGrant.IO" ; ex:subType con:OpenSourceProject . @@ -3726,17 +3156,6 @@ a ex:Person ; ex:name "Philipp Gfeller" . - a ex:Ontology ; - ex:landingPage ; - ex:name "Simple Knowledge Organization System" ; - ex:namespaceURI ; - ex:prefix "skos:" . - - a ex:Ontology ; - ex:name "Music" ; - ex:namespaceURI ; - ex:prefix "mo:" . - a ex:Software ; ex:description "Extracts Metadata in a variety of notations from HTML docs and enables storage to any Solid Pod." ; ex:name "OpenLink Structured Data Sniffer" ; @@ -3746,21 +3165,6 @@ a ex:Person ; ex:name "Sebastian Schmid" . - a ex:CreativeWork ; - ex:about ; - ex:author , , , ; - ex:editor , ; - ex:landingPage , ; - ex:name "Solid OIDC Primer" ; - ex:subType con:Primer ; - ex:technicalKeyword "authentication", "solid-OIDC", "specifications" . - - a ex:CreativeWork ; - ex:landingPage , ; - ex:name "Solid Security Considerations" ; - ex:subType con:OtherTechResource ; - ex:technicalKeyword "security", "solid", "specifications" . - a ex:Person ; ex:name "Anna Kallenborn-Bolden" . @@ -3784,9 +3188,7 @@ a ex:Organization ; ex:landingPage ; - ex:member , ; ex:name "W3C Linked Web Storage Working Group" ; - ex:siloId "w3c:159634" ; ex:subType con:OpenSourceProject . a ex:CreativeWork ; diff --git a/catalog-shacl.shce b/catalog-shacl.shce index 75ce03e..5fc8dd7 100644 --- a/catalog-shacl.shce +++ b/catalog-shacl.shce @@ -7,7 +7,7 @@ PREFIX : shape :SolidResourceShape { targetSubjectsOf=rdf:type . - rdf:type in=[ex:CreativeWork ex:Event ex:Software ex:Service ex:Person ex:Organization ex:Specification ex:Ontology ex:ClassOfProduct] . + rdf:type in=[ex:CreativeWork ex:Event ex:Software ex:Service ex:Person ex:Organization] . } shape :CreativeWorkShape -> ex:CreativeWork ; sh:name "Creative Work"@en; @@ -16,7 +16,7 @@ shape :CreativeWorkShape -> ex:CreativeWork ; ex:name xsd:string [1..1] % sh:name "name"@en % . - ex:subType [1..*] in=[con:AboutSolid con:AboutSolidApps con:ResearchPaper con:OtherLearningResource con:OtherTechResource con:Primer] % + ex:subType [1..*] in=[con:AboutSolid con:AboutSolidApps con:OtherLearningResource] % sh:name "subtype"@en % . ex:about IRI % @@ -76,7 +76,7 @@ shape :ServiceShape -> ex:Service ; ex:name xsd:string [1..1] % sh:name "name"@en % . - ex:subType [1..*] in=[con:GeneralPurposePodService con:SpecializedPodService con:CommunicationService con:OtherService] % + ex:subType [1..*] in=[con:GeneralPurposePodService con:SpecializedPodService con:CommunicationService con:OtherApp] % sh:name "subtype"@en % . ex:status [1..1] in=[con:Exploration con:Development con:Production con:Archived] % @@ -124,7 +124,7 @@ shape :SoftwareShape -> ex:Software ; ex:name xsd:string [1..1] % sh:name "name"@en % . - ex:subType [1..*] in=[con:ProductivityApp con:LeisureApp con:PodApp con:OtherApp con:PodServer con:ServerPlugin con:SoftwareLibrary] % + ex:subType [1..*] in=[con:ProductivityApp con:LeisureApp con:PodApp con:PodServer con:SpecializedPodService con:OtherApp con:AuthenticatedFetch con:RdfParsing con:Framework con:Search con:OtherLibrary ] % sh:name "subtype" % . ex:status [1..1] in=[con:Exploration con:Development con:Production con:Archived] % @@ -137,6 +137,9 @@ shape :SoftwareShape -> ex:Software ; ex:description xsd:string [0..1] maxLength=2000 % sh:name "description"@en % . + ex:programmingLanguage xsd:string [0..1] % + sh:name "description"@en + % . ex:clientID IRI [0..1] % sh:name "ClientID" ; sh:description "an OIDC ClientID, if available" @@ -164,10 +167,6 @@ shape :SoftwareShape -> ex:Software ; sh:name "maintainer"@en ; sh:description "person responsible for maintaining the software" % . - ex:developer IRI @:PersonShape % - sh:name "developer"@en ; - sh:description "person contributiong to the software" - % . ex:socialKeyword xsd:string % sh:name "social keyword"@en ; sh:description "social domain addressed by the software e.g. housing, transportation, name of an industry" @@ -176,79 +175,8 @@ shape :SoftwareShape -> ex:Software ; sh:name "technical keyword"@en ; sh:description "comma-separated list for product type e.g. game, calendar, contacts manager" % . - ex:conformsTo IRI @:ClassOfProductShape % - sh:name "conforms to"@en ; - sh:description "a class of product, from a specification, that this implementation conforms to" - % . - ex:hasDependencyOn IRI @:SoftwareShape % - sh:name "has dependency on"@en ; - sh:description "a library/module that this software depends on" - % . -} -shape :SpecificationShape -> ex:Specification ; - sh:name "Specification"@en; - sh:nodeKind sh:IRI; - sh:class ex:Specification { - ex:name xsd:string [1..1] % - sh:name "name"@en - % . - ex:description xsd:string [0..1] maxLength=2000 % - sh:name "description"@en - % . - ex:repository IRI [0..1] % - sh:name "repository"@en ; - sh:description "URL where the specification is being worked on" - % . - ex:landingPage IRI % - sh:name "landing page"@en ; - sh:description "URL where the specification is described" - % . - ex:editor IRI @:PersonShape % - sh:name "editor"@en - % . - ex:author IRI @:PersonShape % - sh:name "author"@en - % . - ex:definesConformanceFor IRI @:ClassOfProductShape % - sh:name "defines conformance for"@en ; - sh:description "a class of product which this specification defines" - % . -} -shape :ClassOfProductShape -> ex:ClassOfProduct ; - sh:name "Class of Product"@en; - sh:nodeKind sh:IRI; - sh:class ex:ClassOfProduct { - ex:name xsd:string [1..1] % - sh:name "name"@en - % . -} -shape :OntologyShape -> ex:Ontology ; - sh:name "Ontology"@en; - sh:nodeKind sh:IRI; - sh:class ex:Ontology { - ex:name xsd:string [1..1] % - sh:name "name"@en - % . - ex:description xsd:string [0..1] maxLength=2000 % - sh:name "description"@en - % . - ex:namespaceURI IRI [0..1] % - sh:name "namespace URL" ; - sh:description "e.g. http://www.w3.org/ns/shacl#" - % . - ex:prefix xsd:string [0..1] % - sh:name "prefix" ; - sh:description "e.g. sh: for the SHACL ontology" - % . - ex:repository IRI [0..1] % - sh:name "repository"@en ; - sh:description "URL where the ontology is available in RDF" - % . - ex:landingPage IRI % - sh:name "landing page"@en ; - sh:description "URL where the ontology is described" - % . } + shape :OrganizationShape -> ex:Organization ; sh:name "Organization"@en; sh:nodeKind sh:IRI; diff --git a/catalog-skos.ttl b/catalog-skos.ttl index 6991bb4..48fd7fc 100644 --- a/catalog-skos.ttl +++ b/catalog-skos.ttl @@ -11,106 +11,135 @@ con:SolidCatalogTaxonomy skos:hasTopConcept con:LearningResource, con:ParticipationOpportunity, - con:Service, - con:Product, - con:Organization, - ex:Person, - con:TechnicalResource. + con:SoftwareApp, + con:SoftwareLibrary, + con:Organization. + +################################################################################################################################ +# CHANGES TO SHACL POINTERS +################################################################################################################################ +# CreativeWork : removed con:ResearchPaper con:OtherTechResource con:Primer +# Service : changed con:OtherService to con:OtherApp +# Software : removed con:ServerPlugin, con:SoftwareLibrary; added con:SpecializedPodService; added all from con:SoftwareLibrary +################################################################################################################################ -ex:Person - a skos:Concept, rdfs:Class; - skos:inScheme con:SolidCatalogTaxonomy ; - skos:altLabel "People"@en ; - skos:prefLabel "Person". - -con:TechnicalResource +### +# LEARNING RESOURCE +### +con:LearningResource a skos:Concept; skos:inScheme con:SolidCatalogTaxonomy ; - skos:altLabel "Technical Resources"@en ; - skos:prefLabel "Technical Resource". - -ex:Specification - a skos:Concept, rdfs:Class; - skos:broader con:TechnicalResource ; - skos:altLabel "Specifications"@en ; - skos:prefLabel "Specification" . - -ex:Ontology - a skos:Concept, rdfs:Class; - skos:broader con:TechnicalResource ; - skos:altLabel "Ontologies"; - skos:prefLabel "Ontology" . - -con:OtherLearningResource + skos:altLabel "Learning Resources"; + skos:prefLabel "Learning Resource". +con:AboutSolid a skos:Concept ; skos:broader con:LearningResource ; - skos:prefLabel "General audience creative work" . - -con:ResearchPaper + skos:prefLabel "About Solid" . +con:AboutSolidApps a skos:Concept ; - skos:broader con:TechnicalResource ; - skos:prefLabel "Research Paper" . - -con:Primer + skos:broader con:LearningResource ; + skos:prefLabel "Building Solid Apps" . +con:OtherLearningResource a skos:Concept ; - skos:broader con:TechnicalResource ; - skos:prefLabel "Primer". + skos:broader con:LearningResource ; + skos:altLabel "Related Tools/Resources" ; + skos:prefLabel "Related Tool/Resource" . -ex:ClassOfProduct +### +# PARTICIPATION OPPORTUNITY +### +con:ParticipationOpportunity + a skos:Concept; + skos:inScheme con:SolidCatalogTaxonomy ; + skos:altLabel "Participation Opportunities" ; + skos:prefLabel "Participation Opportunity" . +con:GeneralPurposePodService a skos:Concept ; - skos:broader con:TechnicalResource ; - skos:prefLabel "Class of Product". - -con:OtherTechResource + skos:broader con:ParticipationOpportunity ; + skos:altLabel "Get a Pod" ; + skos:prefLabel "General Public Pod Provider" . +con:CommunicationService a skos:Concept ; - skos:broader con:TechnicalResource ; - skos:prefLabel "Other Tech Resource (primer, use case, etc)". - + skos:broader con:ParticipationOpportunity ; + skos:altLabel "Join a Discussion" ; + skos:prefLabel "Communication Channel" . +ex:Event + a skos:Concept, rdfs:Class ; + skos:broader con:ParticipationOpportunity ; + skos:altLabel "Join an Event"@en ; + skos:prefLabel "Event"@en . ### -# Product +# SoftareApplication ### - -con:Product +con:SoftwareApp a skos:Concept; skos:inScheme con:SolidCatalogTaxonomy ; - skos:prefLabel "Software". - + skos:prefLabel "Apps & Services". +con:SpecializedPodService + a skos:Concept ; + skos:broader con:SoftwareApp ; + skos:altLabel "Community/Organization Apps" ; + skos:prefLabel "Community/Organization App" . con:ProductivityApp a skos:Concept ; - skos:broader con:Product ; + skos:broader con:SoftwareApp ; + skos:altLabel "Personal Productivity Apps" ; skos:prefLabel "Personal Productivity App" . - -con:PodApp - a skos:Concept ; - skos:broader con:Product ; - skos:prefLabel "Pod Management App" . - con:LeisureApp a skos:Concept ; - skos:broader con:Product ; + skos:broader con:SoftwareApp ; + skos:altLabel "Leisure Activity Apps" ; skos:prefLabel "Leisure Activity App" . - -con:OtherApp +con:PodApp a skos:Concept ; - skos:broader con:Product ; - skos:prefLabel "Other Application" . - + skos:broader con:SoftwareApp ; + skos:altLabel "Pod Management Apps" ; + skos:prefLabel "Pod Management App" . con:PodServer a skos:Concept ; - skos:broader con:Product ; + skos:broader con:SoftwareApp ; skos:description "supports either or both of identity & storage" ; + skos:altLabel "Pod Servers" ; skos:prefLabel "Pod Server" . - -con:ServerPlugin +con:OtherApp a skos:Concept ; - skos:broader con:Product ; - skos:prefLabel "Server Extension" . + skos:broader con:SoftwareApp ; + skos:prefLabel "Other Apps & Services" . +### +# LIBRARY +### con:SoftwareLibrary a skos:Concept ; - skos:broader con:Product ; + skos:inScheme con:SolidCatalogTaxonomy ; + skos:altLabel "Software Libraries" ; skos:prefLabel "Software Library (module,webcomponent,SDK,...)" . +con:AuthenticatedFetch + a skos:Concept ; + skos:broader con:SoftwareLibrary ; + skos:altLabel "Authenticated Fetch" ; + skos:prefLabel "Authenticated Fetch Library" . +con:RdfParsing + a skos:Concept ; + skos:broader con:SoftwareLibrary ; + skos:altLabel "RDF Parsing" ; + skos:prefLabel "RDF Parsing Library" . +con:Framework + a skos:Concept ; + skos:broader con:SoftwareLibrary ; + skos:altLabel "Frameworks/Components" ; + skos:prefLabel "Framework/Component Library" . +con:Search + a skos:Concept ; + skos:broader con:SoftwareLibrary ; + skos:altLabel "Searching/Querying" ; + skos:prefLabel "Searching/Querying Library" . +con:OtherLibrary + a skos:Concept ; + skos:broader con:SoftwareLibrary ; + skos:altLabel "Other Software Libraries" ; + skos:prefLabel "Other Software Library" . ### # STATUS @@ -133,7 +162,7 @@ con:Development skos:prefLabel "Development"@en ; skos:definition "Project is being worked on but not fully ready."@en . -con:Production +con:Production a skos:Concept ; skos:broader con:Status ; skos:prefLabel "Production"@en ; @@ -145,31 +174,6 @@ con:Archived skos:prefLabel "Archived"@en ; skos:definition "Project has been archived for historical purposes." . -### -# Service -### - -con:Service - a skos:Concept; - skos:inScheme con:SolidCatalogTaxonomy ; - skos:altLabel "Pod Providers" ; - skos:prefLabel "Service". - -con:GeneralPurposePodService - a skos:Concept ; - skos:broader con:Service ; - skos:prefLabel "General Public Pod Provider (identity &/or storage)" . - -con:SpecializedPodService - a skos:Concept ; - skos:broader con:Service ; - skos:prefLabel "Targeted Audience Pod Provider (identity &/or storage)" . - -con:OtherService - a skos:Concept ; - skos:broader con:Service ; - skos:prefLabel "Other Service or WebApp" . - ### # Organization ### @@ -177,85 +181,47 @@ con:OtherService con:Organization a skos:Concept; skos:inScheme con:SolidCatalogTaxonomy ; - skos:altLabel "Organizations"@en ; + skos:altLabel "Organizations & People"@en ; skos:prefLabel "Organization". con:Company a skos:Concept ; skos:broader con:Organization ; + skos:altLabel "Companies/Enterprises" ; skos:prefLabel "Company or Enterprise" . con:GovernmentalOrganization a skos:Concept ; skos:broader con:Organization ; + skos:altLabel "Governmental Organizations" ; skos:prefLabel "Governmental Organiazation" . con:UniversityProject a skos:Concept ; skos:broader con:Organization ; - skos:prefLabel "University department or unit" . + skos:altLabel "University Projects" ; + skos:prefLabel "University Project" . con:OpenSourceProject a skos:Concept ; skos:broader con:Organization ; + skos:altLabel "Open Source Projects" ; skos:prefLabel "Open Source Project" . con:FundingOrganization a skos:Concept ; skos:broader con:Organization ; + skos:altLabel "Funding Organizations" ; skos:prefLabel "Funding Organization" . con:OtherNGO a skos:Concept ; skos:broader con:Organization ; + skos:altLabel "Non-governmental Organizations" ; skos:prefLabel "NGO" . -### -# Learning Resource -### - -con:LearningResource - a skos:Concept; - skos:inScheme con:SolidCatalogTaxonomy ; - skos:altLabel "Learning Resources"; - skos:prefLabel "Learning Resource". - -con:AboutSolid - a skos:Concept ; - skos:broader con:LearningResource ; - skos:prefLabel "About Solid" . - -con:AboutSolidApps - a skos:Concept ; - skos:broader con:LearningResource ; - skos:prefLabel "Building Solid Apps" . - -con:SolidGlossary - a skos:Concept ; - skos:broader con:LearningResource ; - skos:prefLabel "Glossary of Solid Terms" . - -con:CommunicationService - a skos:Concept ; - skos:broader con:ParticipationOpportunity ; - skos:altLabel "Communication Channels" ; - skos:prefLabel "Communication Channel" . - -con:ParticipationOpportunity - a skos:Concept; - skos:inScheme con:SolidCatalogTaxonomy ; - skos:altLabel "Participation Opportunities" ; - skos:prefLabel "Participation Opportunity" . - -ex:Event - a skos:Concept, rdfs:Class ; - skos:broader con:ParticipationOpportunity ; - skos:altLabel "Events"@en ; - skos:prefLabel "Event"@en . - -# con:OtherLearningResource -# a skos:Concept ; -# skos:broader con:LearningResource ; -# skos:prefLabel "Other Learning Resources" . - - +ex:Person + a skos:Concept, rdfs:Class; + skos:broader con:Organization ; + skos:altLabel "People"@en ; + skos:prefLabel "Person"@en. diff --git a/package-lock.json b/package-lock.json index 85e0bf1..43c5e4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,8 @@ "@comunica/query-sparql-rdfjs": "^4.3.0", "commander": "^14.0.0", "mashlib": "^1.10.4", - "node-w3capi": "^2.2.0" + "node-w3capi": "^2.2.0", + "streamify-string": "^1.0.1" }, "bin": { "catalog": "cli/index.ts" @@ -22683,6 +22684,12 @@ "integrity": "sha512-ZnswaBcC6B1bhPLSQOlC6CdaDUSzU0wr2lvvHpbHNms8V7+DLd8uEAzDAWpsjxbFkijBHhuObFO/qqu52DZUMA==", "license": "MIT" }, + "node_modules/streamify-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/streamify-string/-/streamify-string-1.0.1.tgz", + "integrity": "sha512-RXvBglotrvSIuQQ7oC55pdV40wZ/17gTb68ipMC4LA0SqMN4Sqfsf31Dpei7qXpYqZQ8ueVnPglUvtep3tlhqw==", + "license": "MIT" + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", diff --git a/package.json b/package.json index 17cfc84..70f98d5 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "test:syntax": "rdf-dereference ./catalog-shacl.ttl > /dev/null && echo '✓ SHACL' && rdf-dereference ./catalog-skos.ttl > /dev/null && echo '✓ SKOS' && rdf-dereference ./catalog-data.ttl > /dev/null && echo '✓ CATALOG-DATA.TTL'", "test:shacl": "rdf-ext-cli --shacl-url ./catalog-shacl.ttl ./catalog-data.ttl --pretty --output-prefix sh=http://www.w3.org/ns/shacl# --output-prefix skos=http://www.w3.org/2004/02/skos/core# --output-prefix ex=http://example.org/# --output-prefix xsd=http://www.w3.org/2001/XMLSchema# --shacl-details --shacl-error", "test:webid": "npx catalog validate webid && echo '✓ WebID'", - "test": "npm run test:syntax && npm run test:shacl && npm run test:webid", + "test:types": "echo 'validate types & predicates' && node viewer/validateTypes", + "test": "npm run test:syntax && npm run test:shacl && npm run test:webid && npm run test:types", "all": "npm run build && npx catalog format && npm run test" }, "keywords": [], @@ -23,7 +24,8 @@ "@comunica/query-sparql-rdfjs": "^4.3.0", "commander": "^14.0.0", "mashlib": "^1.10.4", - "node-w3capi": "^2.2.0" + "node-w3capi": "^2.2.0", + "streamify-string": "^1.0.1" }, "devDependencies": { "@commitlint/cli": "^19.8.1", diff --git a/viewer/makeTOC.js b/viewer/makeTOC.js index 7963d25..7b3ed30 100644 --- a/viewer/makeTOC.js +++ b/viewer/makeTOC.js @@ -13,8 +13,10 @@ function findTypes(){ const propertyNode = UI.rdf.sym(shaclPrefix+'property'); const collectionProperty = store.any( resourceShapeNode, propertyNode ); const collectionNode = store.any( collectionProperty,UI.rdf.sym(shaclPrefix+'in') ); - for(let e of collectionNode.elements){ - types[e.value]=true + if(collectionNode) { + for(let e of collectionNode.elements){ + types[e.value]=true + } } return types; } @@ -72,7 +74,9 @@ async function skos2toc(displayElement){ toc.appendChild(div); } for(let subtype of subtypes){ - let tlabel = (store.any(subtype,labelNode)||{}).value; + let tlabel = (store.any(subtype,altLabelNode)||{}).value + || (store.any(subtype,labelNode)||{}).value ; + tlabel = tlabel.replace(/\(.*$/,''); let div2 = document.createElement('div'); let anc = document.createElement('a'); @@ -111,6 +115,6 @@ async function addTocListeners(){ else if(anchor.getAttribute('class')=="subtype") anchor.remove(); } // if(isLocalhost) document.getElementById('toc').innerHTML += `

${count}/${subcount} total records

`; -// else - document.getElementById('toc').innerHTML += `

${count} total records

`; +// else + document.getElementById('toc').innerHTML += `

${count} total records

`; } diff --git a/viewer/utils.js b/viewer/utils.js index c77a832..20093ca 100644 --- a/viewer/utils.js +++ b/viewer/utils.js @@ -5,7 +5,7 @@ import {pageContent} from './page-content.js'; //import {pageContent} from '../pages/page-content.js'; export const store = UI.store; -export const fetcher = $rdf.fetcher(store); +export const fetcher = store.fetcher; export const rdf = $rdf; @@ -147,7 +147,6 @@ function isLink(val){ note : supports ignoring predicates not in the shape */ function inShape(subject,predicate){ -console.log(predicate.value); const targetNode = $rdf.sym('http://www.w3.org/ns/shacl#targetClass'); const propertyNode = $rdf.sym('http://www.w3.org/ns/shacl#property'); const pathNode = $rdf.sym('http://www.w3.org/ns/shacl#path'); diff --git a/viewer/validateTypes.js b/viewer/validateTypes.js new file mode 100644 index 0000000..522af67 --- /dev/null +++ b/viewer/validateTypes.js @@ -0,0 +1,94 @@ +import * as $rdf from 'rdflib'; +import { SolidNodeClient } from "solid-node-client"; +const client = new SolidNodeClient; +const store = $rdf.graph(); +const fetcher = $rdf.fetcher(store,{fetch:client.fetch}); + +const folder = `file://`+process.cwd()+ '/'; +const dataFile = folder + "catalog-data.ttl"; +const shaclFile = folder + "catalog-shacl.ttl"; + +const typePredicate = $rdf.sym('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'); +const categoryNode= $rdf.sym('http://example.org#subType'); +const shapeNode= $rdf.sym('https://solidproject.solidcommunity.net/catalog/shapes#SolidResourceShape'); +const propertyNode = $rdf.sym('http://www.w3.org/ns/shacl#property'); +const pathNode = $rdf.sym('http://www.w3.org/ns/shacl#path'); +const inNode = $rdf.sym('http://www.w3.org/ns/shacl#in'); + +const vocabIRI = 'http://example.org#'; +const taxonomyIRI = 'https://solidproject.solidcommunity.net/catalog/taxonomy#'; +const categoryPredicate = $rdf.sym(vocabIRI+'subType'); + +function findKnownTypes(){ + let knownType = {}; + let propsNode = store.any(shapeNode,propertyNode); + let props = store.any(propsNode,inNode); + for(let type of props.elements){ + knownType[type.value]=true; + } + return knownType; +} + +function findKnownPredicates(){ + let knownPredicate = {}; + let paths = store.match(null,pathNode); + for(let path of paths){ + knownPredicate[path.object.value]=true; + } + return knownPredicate; +} + +async function validateTypes(){ + try{ + await fetcher.load(dataFile); + await fetcher.load(shaclFile); + } + catch(e){console.log(e)} + let knownType = findKnownTypes(); + let knownPredicate = findKnownPredicates(); + let triples = store.match(null,null,null,$rdf.sym(dataFile)); + let handled = {} + let errors = []; + for(let triple of triples){ + if(handled[triple.subject]) continue; + handled[triple.subject]=true; + + /* TYPES + */ + let types = store.match(triple.subject,typePredicate); + if(types.length<1) { + errors.push('Missing rdf:type - '+triple.subject.value); + continue; + } + for(let type of types){ + let ntype = type.object.value; + if(!knownType[ntype]){ + errors.push('Unknown rdf:type - '+triple.subject.value+" - "+ntype); + } + } + + /* PREDICATES + */ + let predicates = store.match(triple.subject); + for(let predicate of predicates){ + let pred = predicate.predicate.value; + if(pred.match(/(type|modified)$/)) continue; + if(!knownPredicate[pred]){ + errors.push('Unknown predicate - '+triple.subject.value+" - "+pred); + } + } + + } + if(errors.length){ + console.log('ERROR(s)\n',errors); + process.exit(1); + } + else { + console.log(` + ✓ all records have an rdf:type + ✓ all rdf:types match known shapes + ✓ all predicates match known shapes + `) + } +} +validateTypes(); diff --git a/viewer/viewer.css b/viewer/viewer.css index 6962ebc..bbafca0 100644 --- a/viewer/viewer.css +++ b/viewer/viewer.css @@ -18,8 +18,7 @@ background:#111111; background:#090600; color:#baafa3; -// color:#cacaca; - } + } #main { padding:1em; } @@ -165,7 +164,7 @@ body.showHelp #help { // font-weight:600; } #toc *[class="type"] { - margin-top:0.45em; + margin-top:0.75em; display:inline-block; text-decoration:underline !important; text-decoration-color:white !important; @@ -176,9 +175,12 @@ body.showHelp #help { } #toc div { margin-top:0.15em; + margin-top:0.30em; } #toc .number { - font-weight:italic !important; - font-size:0.9em !important; + font-weight:200 !important; + font-size:0.8em !important; +} +#main { + padding-top:0; } -