@prefix : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#> .
@prefix brick: <https://brickschema.org/schema/Brick#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema1: <http://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

:ContractsLayer a rdfs:Class ;
    rdfs:label "Contracts Layer"@en ;
    rdfs:comment "The layer holding lease, service, and warranty contract data."@en ;
    rdfs:isDefinedBy : ;
    rdfs:subClassOf :GraphLayer .

:GraphLayer a rdfs:Class ;
    rdfs:label "Graph Layer"@en ;
    rdfs:comment "A logically distinct layer within the Fixed Entity Architecture that separates one context/business-logic concern of the real-estate knowledgebase from the others."@en ;
    rdfs:isDefinedBy : .

:InvoiceLayer a rdfs:Class ;
    rdfs:label "Invoice Layer"@en ;
    rdfs:comment "The layer holding contractor invoices and operating-cost data."@en ;
    rdfs:isDefinedBy : ;
    rdfs:subClassOf :GraphLayer .

:LegalLayer a rdfs:Class ;
    rdfs:label "Legal Layer"@en ;
    rdfs:comment "The layer holding parsed legal and regulatory documents, chunked and entity-linked against the OntologyLayer."@en ;
    rdfs:isDefinedBy : ;
    rdfs:subClassOf :GraphLayer .

:OntologyLayer a rdfs:Class ;
    rdfs:label "Ontology Layer"@en ;
    rdfs:comment "The layer consolidating open-source and custom domain ontologies into a shared semantic backbone (called Fixed Entity Layer by the source author)."@en ;
    rdfs:isDefinedBy : ;
    rdfs:subClassOf :GraphLayer .

:RulesLayer a rdfs:Class ;
    rdfs:label "Rules Layer"@en ;
    rdfs:comment "The layer encoding automated checks (e.g. invoice-validity rules) that operate across the Legal, Contracts, and Invoice layers."@en ;
    rdfs:isDefinedBy : ;
    rdfs:subClassOf :GraphLayer .

:UseCase a rdfs:Class ;
    rdfs:label "Use Case"@en ;
    rdfs:comment "A concrete applied scenario the layered graph architecture is used to solve."@en ;
    rdfs:isDefinedBy : .

:checkedAgainst a rdf:Property ;
    rdfs:label "checked against"@en ;
    rdfs:comment "Links an invoice to the contract(s) and/or legislation it is automatically validated against."@en ;
    rdfs:domain schema1:Invoice ;
    rdfs:isDefinedBy : .

:consolidatesOntology a rdf:Property ;
    rdfs:label "consolidates ontology"@en ;
    rdfs:comment "Links an OntologyLayer instance to an external ontology it ingests as LPG nodes (property-graph mimicry of RDF import)."@en ;
    rdfs:domain :OntologyLayer ;
    rdfs:isDefinedBy : ;
    rdfs:range owl:Ontology .

:coveredByContract a rdf:Property ;
    rdfs:label "covered by contract"@en ;
    rdfs:comment "Links an equipment instance to the service/warranty contract covering it."@en ;
    rdfs:isDefinedBy : ;
    rdfs:range schema1:CreativeWork .

:implementedOn a rdf:Property ;
    rdfs:label "implemented on"@en ;
    rdfs:comment "Links a graph-layer instance to the software platform it is realized on."@en ;
    rdfs:domain :GraphLayer ;
    rdfs:isDefinedBy : ;
    rdfs:range schema1:SoftwareApplication .

:implementsPillar a rdf:Property ;
    rdfs:label "implements pillar"@en ;
    rdfs:comment "Links a concrete platform-specific layer instance back to the abstract framework pillar it implements."@en ;
    rdfs:domain :GraphLayer ;
    rdfs:isDefinedBy : ;
    rdfs:range :GraphLayer .

:installedAt a rdf:Property ;
    rdfs:label "installed at"@en ;
    rdfs:comment "Links an equipment instance to the building it is installed in."@en ;
    rdfs:isDefinedBy : ;
    rdfs:range schema1:Place .

:involvesLayer a rdf:Property ;
    rdfs:label "involves layer"@en ;
    rdfs:comment "Links a use case to a graph layer it draws on."@en ;
    rdfs:domain :UseCase ;
    rdfs:isDefinedBy : ;
    rdfs:range :GraphLayer .

:layerFunction a rdf:Property ;
    rdfs:label "layer function"@en ;
    rdfs:comment "Free-text statement of the business/context concern a graph layer addresses."@en ;
    rdfs:domain :GraphLayer ;
    rdfs:isDefinedBy : ;
    rdfs:range xsd:string .

<http://dbpedia.org/resource/Microsoft> a schema1:Organization .

<http://dbpedia.org/resource/Nvidia> a schema1:Organization .

<http://www.wikidata.org/entity/Q116758847> a schema1:Organization ;
    schema1:name "Anthropic" .

brick:HVAC_Equipment a owl:Class ;
    rdfs:label "HVAC Equipment" ;
    schema1:isPartOf :ontologyLayerRdfInstance ;
    rdfs:isDefinedBy brick: ;
    skos:definition "See Heating_Ventilation_Air_Conditioning_System."@en .

brick:Heating_Coil a owl:Class ;
    rdfs:label "Heating Coil" ;
    schema1:isPartOf :ontologyLayerRdfInstance ;
    rdfs:isDefinedBy brick: ;
    skos:definition "A heating element typically made of pipe, tube or wire that emits heat. Typically filled with hot water, or, in the case of wire, uses electricity."@en .

<https://build.nvidia.com/nvidia/llama-3_3-nemotron-super-49b-v1_5/modelcard#this> a schema1:SoftwareApplication ;
    schema1:description "NVIDIA NIM-hosted LLM used for the whole POC's document understanding and extraction."@en ;
    schema1:name "nvidia/llama-3.3-nemotron-super-49b-v1.5" .

<https://cursor.com/#this> a schema1:SoftwareApplication ;
    schema1:description "AI-assisted code editor used, with its built-in Copilot support, to help write the ETL pipelines."@en ;
    schema1:name "Cursor IDE" .

<https://de.linkedin.com/in/adamchic#this> a schema1:Person ;
    schema1:identifier "https://de.linkedin.com/in/adamchic" ;
    schema1:name "Irina Adamchic, PhD"@en ;
    schema1:url <https://de.linkedin.com/in/adamchic> ;
    owl:sameAs <https://www.linkedin.com/in/adamchic#this> .

<https://in.linkedin.com/in/avinash-yadav-4b6b208#this> a schema1:Person ;
    schema1:name "Avinash Yadav" ;
    schema1:url <https://in.linkedin.com/in/avinash-yadav-4b6b208> .

<https://neo4j.com/labs/genai-ecosystem/llm-graph-builder/#this> a schema1:SoftwareApplication ;
    schema1:description "Application used to parse PDF documents into the graph, guided by the OntologyLayer schema."@en ;
    schema1:name "Neo4j Graph Builder" .

<https://ollama.com/#this> a schema1:SoftwareApplication ;
    schema1:description "Locally hosted service providing the embedding model used to build vector indexes across all layers."@en ;
    schema1:name "Ollama" .

<https://ollama.com/library/nomic-embed-text#this> a schema1:SoftwareApplication ;
    schema1:description "Embedding model run locally via Ollama to generate vector embeddings for the OntologyLayer nodes and edges."@en ;
    schema1:name "nomic-embed-text" .

<https://w3id.org/rec#Architecture> a owl:Class ;
    rdfs:label "Architecture" ;
    schema1:isPartOf :ontologyLayerRdfInstance ;
    rdfs:isDefinedBy <https://w3id.org/rec#> ;
    skos:definition "A designed/landscaped (or potentially designed/landscaped) part of the physical world that has a 3D spatial extent. E.g., a building site, a building, levels within the building, rooms, etc."@en .

<https://www.linkedin.com/company/brickgraph#this> a schema1:Organization ;
    schema1:name "Brickgraph" ;
    schema1:url <https://www.linkedin.com/company/brickgraph> ;
    owl:sameAs <https://www.brickgraph.io/#this> .

<https://www.linkedin.com/in/david-bender-a0032365#this> a schema1:Person ;
    schema1:name "David Bender" ;
    schema1:url <https://www.linkedin.com/in/david-bender-a0032365> .

:a1 a schema1:Answer ;
    schema1:text "A graph architecture, proposed by Irina Adamchic, that mimics RDF-world ontology semantics inside a Linked Property Graph (Neo4j) via a 'Fixed Entity Layer', avoiding the word 'ontology' for the LPG layer itself while still importing real open-source RDF ontologies."@en .

:a10 a schema1:Answer ;
    schema1:text "Automated heat-pump invoice validation against installation data, warranty, service contract, and local legal/regulatory requirements."@en .

:a11 a schema1:Answer ;
    schema1:text "An agent-authored counterpart implementing the identical five-layer architecture on Virtuoso -- an RDF-based DBMS and direct competitor to Neo4j -- using real owl:imports of the same seven ontologies (which are already native OWL vocabularies) instead of LPG mimicry, and SHACL instead of bespoke Cypher rules."@en .

:a12 a schema1:Answer ;
    schema1:text "The source pipeline needs a separate Cypher vector-index call plus an external Ollama embedding service. Virtuoso's kg-hybrid mode fuses full-text and vector search directly into a single SPARQL query against the OntologyLayer named graph, removing the need for that separate pipeline."@en .

:a13 a schema1:Answer ;
    schema1:text "A standards-native mechanism for declaring which ontologies a graph depends on, with reasoning support (e.g. owl:equivalentClass/owl:sameAs across BRICK and RealEstateCore's shared 'Building' concept) -- versus the source's manual convention of sharing nodes by name."@en .

:a14 a schema1:Answer ;
    schema1:text "The author states Part 2 will show more insights into how the interconnected Legal, Invoice, and Ontology layers let agents check invoice validity end-to-end."@en .

:a15 a schema1:Answer ;
    schema1:text "Partially. It targets the correct DAV named graph and searches over six real classes fetched from the live Brick and RealEstateCore ontology files at generation time (verified, not fabricated), so it should return real rows for a full-text match. It omits the bif:score() vector-ranking clause, since that requires validation against a live Virtuoso instance to get right. P2P-O's invoice classes are referenced via owl:imports only -- its canonical module endpoint (purl.org/p2p-o/invoice) was unreachable (404) at generation time, so no invoice class labels are inlined."@en .

:a2 a schema1:Answer ;
    schema1:text "Because a property-graph node/edge structure that mimics ontology semantics is not a true RDF/OWL ontology with formal reasoning; the author calls it a Fixed Entity Layer instead, reserving 'ontology' for the genuine RDF-based vocabularies it ingests."@en .

:a3 a schema1:Answer ;
    schema1:text "OntologyLayer, LegalLayer, ContractsLayer, InvoiceLayer, and RulesLayer, each separating one context/business-logic concern of the real-estate knowledgebase."@en .

:a4 a schema1:Answer ;
    schema1:text "Real estate is a very large market, generates significant revenue, and -- unlike finance or pharma -- is not yet a domain where AI is well established, making it a good illustration of a graph solving multi-dimensional problems at once."@en .

:a5 a schema1:Answer ;
    schema1:text "The author repurposes GraphRAG away from classical chatbot-style retrieval and uses it instead as a pre-filtering mechanism that selects the most relevant OntologyLayer entities before a document is parsed into the graph."@en .

:a6 a schema1:Answer ;
    schema1:text "Embeddings from ontology URI plus description are indexed with a Neo4j vector index; a top-k vector query returns the most relevant OntologyLayer nodes for a given text chunk, and only those allowed nodes/edges are passed to Neo4j Graph Builder."@en .

:a7 a schema1:Answer ;
    schema1:text "RealEstateCore, Brick Schema, FIBO (EDM Council), LKIF-Core, Akoma Ntoso (OASIS), and P2P-O (DFKI), plus one custom, project-specific ontology -- seven ontologies in total, per Table 1 of the source article."@en .

:a8 a schema1:Answer ;
    schema1:text "After ingesting and consolidating all seven ontologies, the OntologyLayer contains 2,737 entities and even more edges."@en .

:a9 a schema1:Answer ;
    schema1:text "Neo4j Community Edition with the APOC plugin, hosted in WSL-based Ubuntu under Docker; Neo4j MCP for graph querying; Neo4j Graph Builder for PDF parsing; Cursor IDE for ETL pipeline authoring; a locally hosted Ollama service with the nomic-embed-text embedding model; and NVIDIA NIM models (nemotron-parse for OCR, llama-3.3-nemotron-super-49b-v1.5 as the LLM)."@en .

:apocPlugin a schema1:SoftwareApplication ;
    schema1:description "Neo4j procedure/function library used for graph utility operations in the POC."@en ;
    schema1:name "APOC" .

:comment1 a schema1:Comment ;
    schema1:author <https://www.linkedin.com/in/david-bender-a0032365#this> ;
    schema1:isPartOf :discussionSection ;
    schema1:mentions <https://www.linkedin.com/company/brickgraph#this> ;
    schema1:name "Comment by David Bender"@en ;
    schema1:parentItem :analysis ;
    schema1:text "This is great. If you'd like to learn about what we're doing at Brickgraph to bring knowledge graphs to real estate asset managers, I'd be happy to show you anytime!"@en .

:comment2 a schema1:Comment ;
    schema1:author <https://sa.linkedin.com/in/umer-javaid-9a5470129#this> ;
    schema1:isPartOf :discussionSection ;
    schema1:mentions <https://github.com/umerjavaidkh/agentic_graph_rag> ;
    schema1:name "Comment by Umer Javaid"@en ;
    schema1:parentItem :analysis ;
    schema1:text "I'm also building an Agentic Graph RAG using Neo4j ... building a KG from LLMs over large volumes of data can become very expensive, so we may need to approach that differently."@en .

:comment3 a schema1:Comment ;
    schema1:author <https://in.linkedin.com/in/avinash-yadav-4b6b208#this> ;
    schema1:isPartOf :discussionSection ;
    schema1:name "Comment by Avinash Yadav"@en ;
    schema1:parentItem :analysis ;
    schema1:text "I really enjoyed reading this article because it looks at GraphRAG from a different perspective ... keeping the ontology consistent, handling schema changes, avoiding duplicate entities, and maintaining the graph as business rules evolve seem like equally difficult problems."@en .

:cypherPrefilterQuery a schema1:SoftwareSourceCode ;
    schema1:isPartOf :ontologyLayerNeo4jInstance ;
    schema1:name "OntologyLayer Vector Pre-Filter Query (Cypher)"@en ;
    schema1:programmingLanguage "Cypher" ;
    schema1:target <http://dbpedia.org/resource/Neo4j> ;
    schema1:text """CALL db.index.vector.queryNodes($index_name, $k, $embedding)
    YIELD node AS vectorNode, score AS vectorScore
    WITH vectorNode, vectorScore
    WHERE vectorNode:OntologyLayer AND vectorNode.name IS NOT NULL
    RETURN vectorNode.name AS name,
           coalesce(vectorNode.uri, '') AS uri,
           coalesce(vectorNode.kind, 'class') AS kind,
           coalesce(vectorNode.ontologies, []) AS ontologies,
           vectorScore AS score
    ORDER BY vectorScore DESC"""@en ;
    rdfs:comment "Reproduced verbatim from the source article's 'GraphRAG as ontology schema pre-filtering' section: top-k vector search over OntologyLayer nodes, used to select which ontology entities to pass to Neo4j Graph Builder before parsing a document chunk."@en .

:heatPumpInvoiceValidationUseCase a :UseCase ;
    schema1:description "The POC's starting use case: automated validation of heat pump invoices against installation data, warranty, service contract, and local legal/regulatory requirements."@en ;
    schema1:isPartOf :pocSection ;
    schema1:mentions :sampleBuilding,
        :sampleHeatPump,
        :sampleInvoice,
        :sampleLegislation,
        :sampleServiceContract ;
    schema1:name "Automated Heat Pump Invoice Validation"@en ;
    :involvesLayer :contractsLayerNeo4jInstance,
        :invoiceLayerNeo4jInstance,
        :legalLayerNeo4jInstance,
        :rulesLayerNeo4jInstance .

:nemotronParseModel a schema1:SoftwareApplication ;
    schema1:description "NVIDIA NIM model used for OCR processing of source documents before graph parsing."@en ;
    schema1:name "nvidia/nemotron-parse" .

:neo4jMcp a schema1:SoftwareApplication ;
    schema1:description "Model Context Protocol server used for querying the graph from agent tooling."@en ;
    schema1:name "Neo4j MCP" .

:q1 a schema1:Question ;
    schema1:acceptedAnswer :a1 ;
    schema1:isPartOf :faqSection ;
    schema1:name "What is Fixed Entity Architecture?"@en .

:q10 a schema1:Question ;
    schema1:acceptedAnswer :a10 ;
    schema1:isPartOf :faqSection ;
    schema1:name "What use case did the POC start with?"@en .

:q11 a schema1:Question ;
    schema1:acceptedAnswer :a11 ;
    schema1:isPartOf :faqSection ;
    schema1:name "What is the RDF-native counterpart POC, and why does it matter?"@en .

:q12 a schema1:Question ;
    schema1:acceptedAnswer :a12 ;
    schema1:isPartOf :faqSection ;
    schema1:name "How does Virtuoso's kg-hybrid mode compare to the source's GraphRAG pre-filter?"@en .

:q13 a schema1:Question ;
    schema1:acceptedAnswer :a13 ;
    schema1:isPartOf :faqSection ;
    schema1:name "What does owl:imports give the RDF-native edition that the LPG edition lacks?"@en .

:q14 a schema1:Question ;
    schema1:acceptedAnswer :a14 ;
    schema1:isPartOf :faqSection ;
    schema1:name "What will Part 2 of the article series cover?"@en .

:q15 a schema1:Question ;
    schema1:acceptedAnswer :a15 ;
    schema1:isPartOf :faqSection ;
    schema1:name "Will the SPARQL pre-filter query actually return results once this graph is uploaded?"@en .

:q2 a schema1:Question ;
    schema1:acceptedAnswer :a2 ;
    schema1:isPartOf :faqSection ;
    schema1:name "Why does the author avoid calling the LPG layer an ontology?"@en .

:q3 a schema1:Question ;
    schema1:acceptedAnswer :a3 ;
    schema1:isPartOf :faqSection ;
    schema1:name "What are the five layers of the architecture?"@en .

:q4 a schema1:Question ;
    schema1:acceptedAnswer :a4 ;
    schema1:isPartOf :faqSection ;
    schema1:name "Why was real estate management chosen as the example domain?"@en .

:q5 a schema1:Question ;
    schema1:acceptedAnswer :a5 ;
    schema1:isPartOf :faqSection ;
    schema1:name "What does 'GraphRAG re-born' mean in this article?"@en .

:q6 a schema1:Question ;
    schema1:acceptedAnswer :a6 ;
    schema1:isPartOf :faqSection ;
    schema1:name "How does the GraphRAG ontology pre-filtering work in the Neo4j POC?"@en .

:q7 a schema1:Question ;
    schema1:acceptedAnswer :a7 ;
    schema1:isPartOf :faqSection ;
    schema1:name "Which ontologies were consolidated into the OntologyLayer?"@en .

:q8 a schema1:Question ;
    schema1:acceptedAnswer :a8 ;
    schema1:isPartOf :faqSection ;
    schema1:name "How large is the resulting OntologyLayer?"@en .

:q9 a schema1:Question ;
    schema1:acceptedAnswer :a9 ;
    schema1:isPartOf :faqSection ;
    schema1:name "What technology stack was used to build the Neo4j POC?"@en .

:ref1 a schema1:CreativeWork ;
    schema1:isPartOf :referencesSection ;
    schema1:name "AI Agents Don't Need Vector Search Anymore: Inside the Agentic Search Stack Replacing RAG in 2026"@en ;
    schema1:url <https://medium.com/@buzzgrewal/ai-agents-dont-need-vector-search-anymore-inside-the-agentic-search-stack-replacing-rag-in-2026-58efcabe4f6f> .

:ref2 a schema1:CreativeWork ;
    schema1:isPartOf :referencesSection ;
    schema1:name "RAG on Graph using Fixed Entity Architecture: make you retrieval work for you"@en ;
    schema1:url <https://medium.com/@irina.karkkanen/rag-on-graph-db-using-fixed-entity-architecture-make-you-retrieval-work-for-you-f4bfcac5277f> .

:ref3 a schema1:CreativeWork ;
    schema1:isPartOf :referencesSection ;
    schema1:name "Three-Layer Fixed Entity Architecture for Efficient RAG on Graphs"@en ;
    schema1:url <https://medium.com/@irina.karkkanen/three-layer-fixed-entity-architecture-for-efficient-rag-on-graphs-787c70e3151a> .

:ref4 a schema1:CreativeWork ;
    schema1:isPartOf :referencesSection ;
    schema1:name "Build your hybrid-Graph for RAG & GraphRAG applications using the power of NLP"@en ;
    schema1:url <https://medium.com/@irina.karkkanen/build-your-hybrid-graph-for-rag-graphrag-applications-using-the-power-of-nlp-57219b6e2adb> .

:ref6 a schema1:CreativeWork ;
    schema1:isPartOf :referencesSection ;
    schema1:name "From Legal Documents to Knowledge Graphs"@en ;
    schema1:url <https://medium.com/neo4j/from-legal-documents-to-knowledge-graphs-ccd9cb062320> .

:ref7 a schema1:CreativeWork ;
    schema1:isPartOf :referencesSection ;
    schema1:name "D2GCLF: Document-to-Graph Classifier for Legal Document Classification"@en ;
    schema1:url <https://aclanthology.org/2022.findings-naacl.170/> .

:rulesLayerRdfInstance a :RulesLayer ;
    schema1:about sh: ;
    schema1:description "Invoice-validity checks expressed as SHACL shapes -- a W3C standard constraint/validation mechanism -- replacing the source's bespoke Cypher rule logic."@en ;
    schema1:isPartOf :rdfNativeRealEstateKg ;
    schema1:name "RulesLayer (RDF-native)"@en ;
    :implementedOn <http://dbpedia.org/resource/Virtuoso_Universal_Server> ;
    :implementsPillar :rulesLayerPillar ;
    :layerFunction "Invoice-validity checks expressed as SHACL shapes -- a W3C standard constraint/validation mechanism -- replacing the source's bespoke Cypher rule logic."@en .

:termContractsLayerTerm a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "The layer holding lease, service, and warranty contract data."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "ContractsLayer"@en ;
    skos:inScheme :glossarySection .

:termFixedEntityArchitecture a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "A layered Linked Property Graph architecture that mimics RDF-world ontology semantics via a Fixed Entity Layer, proposed by Irina Adamchic as a reusable knowledgebase foundation for multiple AI workflows at once."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "Fixed Entity Architecture"@en ;
    skos:inScheme :glossarySection .

:termGraphRAG a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "Retrieval-augmented generation that uses a knowledge graph rather than (or alongside) a vector database; re-purposed in this article as an ontology-schema pre-filtering mechanism rather than chatbot-style retrieval."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "GraphRAG"@en ;
    skos:inScheme :glossarySection .

:termInvoiceLayerTerm a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "The layer holding contractor invoices and operating-cost data."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "InvoiceLayer"@en ;
    skos:inScheme :glossarySection .

:termKgHybridMode a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "A query mode (as used by the data-twingler skill against Virtuoso) that fuses full-text and vector search directly into a single SPARQL query, contrasted in this article's RDF-native counterpart with the source's separate Cypher-plus-embedding-service pipeline."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "kg-hybrid mode"@en ;
    skos:inScheme :glossarySection .

:termLPG a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "A property-graph data model (as implemented by Neo4j) where nodes and edges carry key/value properties, contrasted in this article with RDF's triple-based model."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "Linked Property Graph (LPG)"@en ;
    skos:inScheme :glossarySection .

:termLegalLayerTerm a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "The layer holding parsed legal and regulatory documents, entity-linked against the OntologyLayer."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "LegalLayer"@en ;
    skos:inScheme :glossarySection .

:termNIM a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "NVIDIA Inference Microservices -- GPU-optimized Docker containers that serve open-source foundation models with low latency via build.nvidia.com."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "NVIDIA NIM"@en ;
    skos:inScheme :glossarySection .

:termOntologyLayerTerm a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "The layer consolidating open-source and custom domain ontologies into a shared semantic backbone."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "OntologyLayer"@en ;
    skos:inScheme :glossarySection .

:termRulesLayerTerm a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "The layer encoding automated cross-layer checks such as invoice-validity rules."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "RulesLayer"@en ;
    skos:inScheme :glossarySection .

:termVectorIndex a schema1:DefinedTerm,
        skos:Concept ;
    schema1:description "A numeric representation of text or graph content enabling similarity search; used here on OntologyLayer node/edge URIs plus descriptions for pre-filtering."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "Vector index / embedding"@en ;
    skos:inScheme :glossarySection .

:virtuosoHybridPrefilterQuery a schema1:SoftwareSourceCode ;
    schema1:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:isPartOf :ontologyLayerRdfInstance ;
    schema1:name "OntologyLayer Hybrid Text+Vector Pre-Filter Query (SPARQL, Virtuoso kg-hybrid mode)"@en ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:target <http://dbpedia.org/resource/Virtuoso_Universal_Server> ;
    schema1:text """PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX bif: <bif:>
SELECT ?class ?label ?ontology
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/layered-kg-real-estate-adamchic-claude_sonnet_5-1.ttl> {
    ?class a owl:Class ;
           rdfs:label ?label ;
           rdfs:isDefinedBy ?ontology .
    ?label bif:contains "'pump' OR 'heating' OR 'building'" .
  }
}
ORDER BY ?label
LIMIT 10"""@en ;
    rdfs:comment "Agent-authored illustration of the ontology-schema pre-filtering step as one hybrid full-text SPARQL query using Virtuoso's kg-hybrid query mode, in place of the source's separate Cypher vector-index call plus external Ollama embedding pipeline. The GRAPH IRI and search terms are real and match the six verified schema:hasPart classes actually loaded into this OntologyLayer instance below (fetched from the live Brick and RealEstateCore ontology files at generation time, not fabricated) -- so this SELECT should return real rows once uploaded to that DAV path. It omits bif:score()-based vector ranking, which requires a live Virtuoso instance to validate; add ORDER BY bif:score(?label) once confirmed against a running deployment. It is not a literal vector/embedding-similarity query -- Virtuoso's kg-hybrid mode additionally supports vector distance functions over an embedding column, which would need real embeddings computed and loaded, a step this document does not perform."@en .

:virtuosoInvoiceValidationQuery a schema1:SoftwareSourceCode ;
    schema1:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:isPartOf :invoiceLayerRdfInstance ;
    schema1:name "Automated Heat Pump Invoice Validation Query (SPARQL)"@en ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:target <http://dbpedia.org/resource/Virtuoso_Universal_Server> ;
    schema1:text """PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/#>
SELECT ?invoice ?equipment ?building ?contract ?legislation
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/layered-kg-real-estate-adamchic-claude_sonnet_5-1.ttl> {
    ?invoice a schema:Invoice ;
             schema:about ?equipment ;
             :checkedAgainst ?contract, ?legislation .
    ?equipment schema:location ?building .
    FILTER(?contract != ?legislation)
  }
}"""@en ;
    rdfs:comment "Fully executable once uploaded -- unlike the hybrid pre-filter query above, this one uses no bif: functions, only plain SPARQL joins across the illustrative sample instances (sampleInvoice, sampleHeatPump, sampleBuilding, sampleServiceContract, sampleLegislation) declared in this same document. Demonstrates the source article's own use case -- checking an invoice's equipment, building, contract, and applicable legislation in one query -- expressed RDF-natively."@en .

sh: a schema1:DefinedTerm ;
    schema1:description "The Shapes Constraint Language -- a W3C standard for validating RDF graphs against a set of conditions; used in the RDF-native counterpart's RulesLayer."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "SHACL" .

brick:Hot_Water_Pump a owl:Class ;
    rdfs:label "Hot Water Pump" ;
    schema1:isPartOf :ontologyLayerRdfInstance ;
    rdfs:isDefinedBy brick: ;
    skos:definition "A pump that performs work on hot water; typically part of a hot water system."@en .

<https://github.com/umerjavaidkh/agentic_graph_rag> a schema1:SoftwareSourceCode ;
    schema1:author <https://sa.linkedin.com/in/umer-javaid-9a5470129#this> ;
    schema1:description "Umer Javaid's own work-in-progress Agentic Graph RAG project on Neo4j, referenced in his comment as a plug-and-play, auditable architecture with per-response source-document traceability."@en ;
    schema1:name "agentic_graph_rag" ;
    schema1:url <https://github.com/umerjavaidkh/agentic_graph_rag> .

<https://sa.linkedin.com/in/umer-javaid-9a5470129#this> a schema1:Person ;
    schema1:name "Umer Javaid" ;
    schema1:url <https://sa.linkedin.com/in/umer-javaid-9a5470129> ;
    owl:sameAs <https://www.linkedin.com/in/umer-javaid-9a5470129#this> .

<https://w3id.org/rec#Building> a owl:Class ;
    rdfs:label "Building" ;
    schema1:isPartOf :ontologyLayerRdfInstance ;
    rdfs:isDefinedBy <https://w3id.org/rec#> ;
    owl:equivalentClass brick:Building ;
    skos:definition "A confined building structure."@en .

:adamchicCustomOntology a owl:Ontology ;
    schema1:description "Project-specific custom ontology added by the article's author beyond the six open-source ontologies, covering types unique to this real-estate POC."@en ;
    schema1:name "Custom ontology"@en ;
    rdfs:isDefinedBy : .

:comparisonOntologySemantics a schema1:CreativeWork ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:description "The source explicitly avoids the word 'ontology' in the LPG world and mimics it via a hand-rolled 'Fixed Entity Layer'. The RDF-native counterpart needs no mimicry: BRICK, RealEstateCore, FIBO, LKIF-Core, and P2P-O are already OWL ontologies and load via owl:imports."@en ;
    schema1:isPartOf :architectureComparison,
        :rdfPocSection ;
    schema1:name "Comparison: Ontology semantics"@en .

:comparisonPlatform a schema1:CreativeWork ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:description "The source runs on Neo4j Community Edition (WSL/Docker, local). The RDF-native counterpart targets Virtuoso, a head-to-head RDF-based competitor to Neo4j in the graph-database space, offering SPARQL, full-text, and vector search in one engine."@en ;
    schema1:isPartOf :architectureComparison,
        :rdfPocSection ;
    schema1:name "Comparison: Platform"@en .

:comparisonQueryLanguage a schema1:CreativeWork ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:description "The source bolts together a Cypher vector-index call, a separate Ollama embedding service, and Python glue code. The RDF-native counterpart expresses the same pre-filter as a single SPARQL query using Virtuoso's built-in hybrid full-text+vector search (kg-hybrid mode)."@en ;
    schema1:isPartOf :architectureComparison,
        :rdfPocSection ;
    schema1:name "Comparison: Query mechanism for schema pre-filtering"@en .

:comparisonRuleMechanism a schema1:CreativeWork ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:description "The source encodes invoice-checking rules as bespoke Cypher logic in the RulesLayer. The RDF-native counterpart expresses the same checks as SHACL shapes, a W3C standard validation vocabulary that is portable across any conformant RDF store."@en ;
    schema1:isPartOf :architectureComparison,
        :rdfPocSection ;
    schema1:name "Comparison: Rule / validation mechanism"@en .

:comparisonSharedEntities a schema1:CreativeWork ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:description "The source reconciles the shared 'Building' node between brick and rec manually, by ingestion convention. RDF handles this natively via owl:equivalentClass/owl:sameAs reasoning across imported ontologies."@en ;
    schema1:isPartOf :architectureComparison,
        :rdfPocSection ;
    schema1:name "Comparison: Cross-ontology entity alignment"@en .

:contractsLayerNeo4jInstance a :ContractsLayer ;
    schema1:description "Contracts parsed alongside invoices, feeding the invoice-checking rules in the RulesLayer."@en ;
    schema1:isPartOf :realEstateKgPoc ;
    schema1:name "ContractsLayer (Neo4j)"@en ;
    :implementedOn <http://dbpedia.org/resource/Neo4j> ;
    :implementsPillar :contractsLayerPillar ;
    :layerFunction "Contracts parsed alongside invoices, feeding the invoice-checking rules in the RulesLayer."@en .

:contractsLayerRdfInstance a :ContractsLayer ;
    schema1:description "Contracts represented using FIBO terms directly as their class/property vocabulary, not merely referenced for embedding similarity."@en ;
    schema1:hasPart :sampleServiceContract ;
    schema1:isPartOf :rdfNativeRealEstateKg ;
    schema1:name "ContractsLayer (RDF-native)"@en ;
    :implementedOn <http://dbpedia.org/resource/Virtuoso_Universal_Server> ;
    :implementsPillar :contractsLayerPillar ;
    :layerFunction "Contracts represented using FIBO terms directly as their class/property vocabulary, not merely referenced for embedding similarity."@en .

:invoiceLayerNeo4jInstance a :InvoiceLayer ;
    schema1:description "Contractor invoices parsed and cross-linked to the LegalLayer and ContractsLayer for validation."@en ;
    schema1:isPartOf :realEstateKgPoc ;
    schema1:name "InvoiceLayer (Neo4j)"@en ;
    :implementedOn <http://dbpedia.org/resource/Neo4j> ;
    :implementsPillar :invoiceLayerPillar ;
    :layerFunction "Contractor invoices parsed and cross-linked to the LegalLayer and ContractsLayer for validation."@en .

:legalLayerNeo4jInstance a :LegalLayer ;
    schema1:description "German civil code, trade regulations, tax implementing regulations, and construction-service award/contract regulations parsed as Document -> Chunk -> extracted-entity graph structures."@en ;
    schema1:isPartOf :realEstateKgPoc ;
    schema1:name "LegalLayer (Neo4j)"@en ;
    :implementedOn <http://dbpedia.org/resource/Neo4j> ;
    :implementsPillar :legalLayerPillar ;
    :layerFunction "German civil code, trade regulations, tax implementing regulations, and construction-service award/contract regulations parsed as Document -> Chunk -> extracted-entity graph structures."@en .

:legalLayerRdfInstance a :LegalLayer ;
    schema1:description "Legal/regulatory documents loaded as a named graph, with Akoma Ntoso's own XML/RDF structure preserved directly rather than flattened into generic Document/Chunk/entity nodes."@en ;
    schema1:hasPart :sampleLegislation ;
    schema1:isPartOf :rdfNativeRealEstateKg ;
    schema1:name "LegalLayer (RDF-native)"@en ;
    :implementedOn <http://dbpedia.org/resource/Virtuoso_Universal_Server> ;
    :implementsPillar :legalLayerPillar ;
    :layerFunction "Legal/regulatory documents loaded as a named graph, with Akoma Ntoso's own XML/RDF structure preserved directly rather than flattened into generic Document/Chunk/entity nodes."@en .

:ontologyLayerNeo4jInstance a :OntologyLayer ;
    schema1:description "2,737 entities (and even more edges) after ingesting six open-source ontologies plus one custom ontology; nodes share a Pydantic-like property schema with an embedding property and a vector index built across all layers."@en ;
    schema1:hasPart :cypherPrefilterQuery ;
    schema1:isPartOf :realEstateKgPoc ;
    schema1:name "OntologyLayer (Neo4j)"@en ;
    :consolidatesOntology <http://www.estrellaproject.org/lkif-core/lkif-core.owl>,
        brick:,
        <https://spec.edmcouncil.org/fibo/>,
        <https://w3id.org/rec#>,
        <https://www.dfki.uni-kl.de/~mschulze/p2p-o/#this>,
        :adamchicCustomOntology,
        <https://www.oasis-open.org/standard/akn-v1-0/#this> ;
    :implementedOn <http://dbpedia.org/resource/Neo4j> ;
    :implementsPillar :ontologyLayerPillar ;
    :layerFunction "2,737 entities (and even more edges) after ingesting six open-source ontologies plus one custom ontology; nodes share a Pydantic-like property schema with an embedding property and a vector index built across all layers."@en .

:ref5 a schema1:CreativeWork ;
    schema1:isPartOf :referencesSection ;
    schema1:name "Thinking, Fast and Slow"@en ;
    schema1:url <https://en.wikipedia.org/wiki/Thinking,_Fast_and_Slow> .

:rulesLayerNeo4jInstance a :RulesLayer ;
    schema1:description "Invoice-checking rules implemented as Neo4j/Cypher logic operating across the Legal, Contracts, and Invoice layers."@en ;
    schema1:isPartOf :realEstateKgPoc ;
    schema1:name "RulesLayer (Neo4j)"@en ;
    :implementedOn <http://dbpedia.org/resource/Neo4j> ;
    :implementsPillar :rulesLayerPillar ;
    :layerFunction "Invoice-checking rules implemented as Neo4j/Cypher logic operating across the Legal, Contracts, and Invoice layers."@en .

:sampleInvoice a schema1:Invoice ;
    schema1:about :sampleHeatPump ;
    schema1:description "Illustrative invoice instance representing the source article's automated heat-pump invoice validation use case, checked against the sample contract and the named legislation."@en ;
    schema1:isPartOf :invoiceLayerRdfInstance ;
    schema1:name "Illustrative Heat Pump Service Invoice INV-2026-0142"@en ;
    :checkedAgainst :sampleLegislation,
        :sampleServiceContract .

:step1 a schema1:HowToStep ;
    schema1:isPartOf :howtoSection ;
    schema1:name "Consolidate the OntologyLayer"@en ;
    schema1:position 1 ;
    schema1:text "Ingest the six open-source ontologies (RealEstateCore, Brick Schema, FIBO, LKIF-Core, Akoma Ntoso, P2P-O) plus one custom ontology into a shared semantic backbone, connecting shared entities such as Building across ontologies."@en .

:step2 a schema1:HowToStep ;
    schema1:isPartOf :howtoSection ;
    schema1:name "Parse legal documents into the LegalLayer"@en ;
    schema1:position 2 ;
    schema1:text "Parse legal/regulatory documents (civil code, tax regulations, construction-service regulations) into Document/Chunk/entity structures anchored to the OntologyLayer schema."@en .

:step3 a schema1:HowToStep ;
    schema1:isPartOf :howtoSection ;
    schema1:name "Parse contracts and invoices"@en ;
    schema1:position 3 ;
    schema1:text "Parse lease, service, and warranty contracts into the ContractsLayer and contractor invoices into the InvoiceLayer, cross-linked to the LegalLayer."@en .

:step4 a schema1:HowToStep ;
    schema1:isPartOf :howtoSection ;
    schema1:name "Define rules in the RulesLayer"@en ;
    schema1:position 4 ;
    schema1:text "Encode automated checks -- for example invoice-validity rules -- that read across the Legal, Contracts, and Invoice layers."@en .

:step5 a schema1:HowToStep ;
    schema1:isPartOf :howtoSection ;
    schema1:name "Apply ontology-schema pre-filtering"@en ;
    schema1:position 5 ;
    schema1:text "Before passing allowed nodes/edges to the document parser, pre-filter the OntologyLayer to its top-k most relevant entities for the current document chunk, using vector (or hybrid full-text+vector) search."@en .

:step6 a schema1:HowToStep ;
    schema1:isPartOf :howtoSection ;
    schema1:name "Validate a live invoice end-to-end"@en ;
    schema1:position 6 ;
    schema1:text "Run the automated heat-pump invoice validation use case against installation data, warranty, service contract, and legal/regulatory requirements, using the interconnected layers."@en .

<http://www.estrellaproject.org/lkif-core/lkif-core.owl> a schema1:CreativeWork,
        owl:Ontology ;
    schema1:description "Open-source RDF/OWL ontology used in the POC's OntologyLayer. Domain: Legal concepts."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "LKIF-Core"@en .

brick:Building a owl:Class ;
    rdfs:label "Building" ;
    schema1:isPartOf :ontologyLayerRdfInstance ;
    rdfs:isDefinedBy brick: ;
    skos:definition "An independent unit of the built environment with a characteristic spatial structure, intended to serve at least one function or user activity [ISO 12006-2:2013]."@en .

<https://spec.edmcouncil.org/fibo/> a schema1:CreativeWork,
        owl:Ontology ;
    schema1:description "Open-source RDF/OWL ontology used in the POC's OntologyLayer. Domain: Finance / legal-business concepts."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "FIBO (EDM Council)"@en .

<https://www.dfki.uni-kl.de/~mschulze/p2p-o/#this> a schema1:CreativeWork,
        owl:Ontology ;
    schema1:description "Open-source RDF/OWL ontology used in the POC's OntologyLayer. Domain: Procure-to-pay / invoices."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "P2P-O (DFKI)"@en .

:contractsLayerPillar a schema1:CreativeWork,
        :ContractsLayer ;
    schema1:description "Represents lease, service, and warranty contracts as structured graph entities cross-referenced with legal and invoice data."@en ;
    schema1:isPartOf :frameworkSection ;
    schema1:name "ContractsLayer (pillar)"@en ;
    schema1:position 3 ;
    :layerFunction "Represents lease, service, and warranty contracts as structured graph entities cross-referenced with legal and invoice data."@en .

:invoiceLayerPillar a schema1:CreativeWork,
        :InvoiceLayer ;
    schema1:description "Represents contractor invoices and operating-cost data, enabling automated validation against contracts and legal limits."@en ;
    schema1:isPartOf :frameworkSection ;
    schema1:name "InvoiceLayer (pillar)"@en ;
    schema1:position 4 ;
    :layerFunction "Represents contractor invoices and operating-cost data, enabling automated validation against contracts and legal limits."@en .

:invoiceLayerRdfInstance a :InvoiceLayer ;
    schema1:description "Invoices represented using P2P-O terms directly, consistent with its purpose as a semantic-invoice ontology built for exactly this data."@en ;
    schema1:hasPart :sampleInvoice,
        :virtuosoInvoiceValidationQuery ;
    schema1:isPartOf :rdfNativeRealEstateKg ;
    schema1:name "InvoiceLayer (RDF-native)"@en ;
    :implementedOn <http://dbpedia.org/resource/Virtuoso_Universal_Server> ;
    :implementsPillar :invoiceLayerPillar ;
    :layerFunction "Invoices represented using P2P-O terms directly, consistent with its purpose as a semantic-invoice ontology built for exactly this data."@en .

:legalLayerPillar a schema1:CreativeWork,
        :LegalLayer ;
    schema1:description "Represents parsed legal and regulatory documents (civil code, tax regulations, construction-service award/contract regulations) as chunked, entity-linked graph structures anchored to the OntologyLayer."@en ;
    schema1:isPartOf :frameworkSection ;
    schema1:name "LegalLayer (pillar)"@en ;
    schema1:position 2 ;
    :layerFunction "Represents parsed legal and regulatory documents (civil code, tax regulations, construction-service award/contract regulations) as chunked, entity-linked graph structures anchored to the OntologyLayer."@en .

:ontologyLayerPillar a schema1:CreativeWork,
        :OntologyLayer ;
    schema1:description "Consolidates open RDF/OWL domain ontologies (plus one custom, project-specific ontology) into a shared semantic backbone that every other layer attaches to."@en ;
    schema1:isPartOf :frameworkSection ;
    schema1:name "OntologyLayer (pillar)"@en ;
    schema1:position 1 ;
    :layerFunction "Consolidates open RDF/OWL domain ontologies (plus one custom, project-specific ontology) into a shared semantic backbone that every other layer attaches to."@en .

:pocSection a schema1:CreativeWork ;
    schema1:abstract "The proof of concept as the article's author actually built it: a Linked Property Graph on Neo4j that mimics RDF-world ontology semantics via a 'Fixed Entity Layer', with GraphRAG vector search used to pre-filter which ontology schema entities to pass into document parsing."@en ;
    schema1:hasPart :heatPumpInvoiceValidationUseCase,
        :realEstateKgPoc ;
    schema1:isPartOf :analysis ;
    schema1:name "As Built: The Neo4j / Fixed Entity Architecture Proof of Concept"@en .

:rulesLayerPillar a schema1:CreativeWork,
        :RulesLayer ;
    schema1:description "Encodes automated checks -- for example invoice-validity rules -- that operate across the Legal, Contracts, and Invoice layers."@en ;
    schema1:isPartOf :frameworkSection ;
    schema1:name "RulesLayer (pillar)"@en ;
    schema1:position 5 ;
    :layerFunction "Encodes automated checks -- for example invoice-validity rules -- that operate across the Legal, Contracts, and Invoice layers."@en .

:sampleLegislation a schema1:Legislation ;
    schema1:description "The German VAT implementing regulation the source article names and shows parsed into the LegalLayer (Figure 2); referenced here, not re-authored, as the applicable regulatory instrument in the illustrative validation scenario."@en ;
    schema1:isPartOf :legalLayerRdfInstance ;
    schema1:name "Umsatzsteuer-Durchführungsverordnung"@de .

<https://www.oasis-open.org/standard/akn-v1-0/#this> a schema1:CreativeWork,
        owl:Ontology ;
    schema1:description "Open-source RDF/OWL ontology used in the POC's OntologyLayer. Domain: Legal document structure."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "Akoma Ntoso (OASIS)"@en ;
    rdfs:comment "Akoma Ntoso is an OASIS XML standard for legal/parliamentary documents rather than an OWL ontology; the source article consolidates it into the OntologyLayer alongside the OWL ontologies for legal-document structure."@en .

:discussionSection a schema1:CreativeWork ;
    schema1:hasPart :comment1,
        :comment2,
        :comment3 ;
    schema1:isPartOf :analysis ;
    schema1:name "Community Discussion (curated sample)"@en .

:sampleBuilding a brick:Building,
        <https://w3id.org/rec#Building> ;
    rdfs:label "Sample Property -- Building A (illustrative)" ;
    schema1:description "Illustrative example building instance for the RDF-native POC, dual-typed with the real, verified Brick and RealEstateCore Building classes."@en ;
    schema1:isPartOf :ontologyLayerRdfInstance .

:sampleHeatPump a brick:Hot_Water_Pump ;
    rdfs:label "Sample Heat Pump Unit HP-2024-07 (illustrative)" ;
    schema1:description "Illustrative heat pump equipment instance, typed with the real, verified brick:Hot_Water_Pump class -- the closest genuine Brick vocabulary term to the source article's 'heat pump' use case (Brick 1.3 has no class literally named Heat_Pump)."@en ;
    schema1:isPartOf :ontologyLayerRdfInstance ;
    schema1:location :sampleBuilding ;
    :coveredByContract :sampleServiceContract ;
    :installedAt :sampleBuilding .

:sampleServiceContract a schema1:CreativeWork ;
    schema1:about :sampleHeatPump ;
    schema1:description "Illustrative service/warranty contract instance covering the sample heat pump -- represents the source article's ContractsLayer content type; schema.org has no dedicated Contract class, so this uses schema:CreativeWork."@en ;
    schema1:isPartOf :contractsLayerRdfInstance ;
    schema1:name "Illustrative Heat Pump Service & Warranty Contract"@en .

<https://w3id.org/rec#> a schema1:CreativeWork,
        owl:Ontology ;
    schema1:description "Open-source RDF/OWL ontology used in the POC's OntologyLayer. Domain: Buildings / real estate."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "RealEstateCore"@en .

:architectureComparison a schema1:CreativeWork ;
    schema1:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:description "Five concrete points of contrast between the source's Neo4j/LPG proof of concept and its RDF-native (Virtuoso) counterpart -- ontology semantics, cross-ontology entity alignment, the schema pre-filtering query mechanism, the rule/validation mechanism, and platform."@en ;
    schema1:hasPart :comparisonOntologySemantics,
        :comparisonPlatform,
        :comparisonQueryLanguage,
        :comparisonRuleMechanism,
        :comparisonSharedEntities ;
    schema1:isPartOf :rdfPocSection ;
    schema1:name "Comparison: Neo4j/LPG Fixed Entity Architecture vs. RDF-Native (Virtuoso) Counterpart"@en .

:frameworkSection a schema1:CreativeWork ;
    schema1:abstract "The named framework the article proposes: a strictly layered graph architecture whose layers separate the context and business logic of the final solution, so one graph can solve many problems instead of one."@en ;
    schema1:hasPart :contractsLayerPillar,
        :invoiceLayerPillar,
        :legalLayerPillar,
        :ontologyLayerPillar,
        :rulesLayerPillar ;
    schema1:isPartOf :analysis ;
    schema1:name "Fixed Entity Architecture: The Five-Layer Framework"@en .

:rdfNativeRealEstateKg a schema1:SoftwareApplication ;
    schema1:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    schema1:applicationCategory "Knowledge Graph Platform" ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:description "The same real-estate portfolio knowledgebase as the Neo4j POC, reimplemented as RDF named graphs on Virtuoso: one named graph per layer, real OWL ontology imports instead of LPG node-tagging, SHACL shapes instead of ad hoc Cypher rule logic, and a single hybrid SPARQL query for schema pre-filtering instead of a bolted-on vector-index pipeline."@en ;
    schema1:hasPart :contractsLayerRdfInstance,
        :invoiceLayerRdfInstance,
        :legalLayerRdfInstance,
        :ontologyLayerRdfInstance,
        :rulesLayerRdfInstance ;
    schema1:isPartOf :rdfPocSection ;
    schema1:name "Real Estate Management Knowledge Graph POC (RDF-native / Virtuoso)"@en ;
    schema1:softwareRequirements <http://dbpedia.org/resource/Virtuoso_Universal_Server> .

:realEstateKgPoc a schema1:SoftwareApplication ;
    schema1:applicationCategory "Knowledge Graph Platform" ;
    schema1:description "A connected digital representation of an entire real-estate portfolio -- properties, units, tenants, leases, rental payments, operating costs, loans, insurance, contractors, invoices, maintenance, building components, energy consumption, modernization projects, tax information, legal requirements, deadlines, documents, and market data -- built on Neo4j Community Edition."@en ;
    schema1:hasPart :contractsLayerNeo4jInstance,
        :invoiceLayerNeo4jInstance,
        :legalLayerNeo4jInstance,
        :ontologyLayerNeo4jInstance,
        :rulesLayerNeo4jInstance ;
    schema1:isPartOf :pocSection ;
    schema1:name "Real Estate Management Knowledge Graph POC (Neo4j)"@en ;
    schema1:operatingSystem "WSL-based Ubuntu, Docker container" ;
    schema1:softwareRequirements <http://dbpedia.org/resource/Neo4j>,
        <https://build.nvidia.com/nvidia/llama-3_3-nemotron-super-49b-v1_5/modelcard#this>,
        <https://cursor.com/#this>,
        <https://neo4j.com/labs/genai-ecosystem/llm-graph-builder/#this>,
        <https://ollama.com/#this>,
        <https://ollama.com/library/nomic-embed-text#this>,
        :apocPlugin,
        :nemotronParseModel,
        :neo4jMcp .

brick: a schema1:CreativeWork,
        owl:Ontology ;
    schema1:description "Open-source RDF/OWL ontology used in the POC's OntologyLayer. Domain: Buildings / HVAC / equipment."@en ;
    schema1:isPartOf :glossarySection ;
    schema1:name "Brick Schema"@en .

:howtoSection a schema1:HowTo ;
    schema1:description "The construction sequence common to both the Neo4j and RDF-native editions of the POC."@en ;
    schema1:hasPart :step1,
        :step2,
        :step3,
        :step4,
        :step5,
        :step6 ;
    schema1:isPartOf :analysis ;
    schema1:name "Building the Layered Real Estate Knowledge Graph POC"@en ;
    schema1:step :step1,
        :step2,
        :step3,
        :step4,
        :step5,
        :step6 .

<http://dbpedia.org/resource/Neo4j> a schema1:SoftwareApplication ;
    schema1:softwareVersion "Community Edition" .

<http://dbpedia.org/resource/Virtuoso_Universal_Server> a schema1:SoftwareApplication .

:rdfPocSection a schema1:CreativeWork ;
    schema1:abstract "An agent-authored proof-of-concept counterpart demonstrating the identical five-layer real-estate architecture implemented RDF-natively on Virtuoso -- OpenLink's RDF-based DBMS and a direct competitor to Neo4j -- using genuine owl:imports of the same seven ontologies, SHACL for the RulesLayer, and a single hybrid full-text+vector SPARQL query (Virtuoso's kg-hybrid mode) in place of the source's separate Cypher vector-index call plus external embedding pipeline."@en ;
    schema1:accountablePerson <https://www.linkedin.com/in/kidehen#this> ;
    schema1:author <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> ;
    schema1:hasPart :architectureComparison,
        :comparisonOntologySemantics,
        :comparisonPlatform,
        :comparisonQueryLanguage,
        :comparisonRuleMechanism,
        :comparisonSharedEntities,
        :rdfNativeRealEstateKg ;
    schema1:isPartOf :analysis ;
    schema1:name "RDF-Native Counterpart: The Same Architecture on Virtuoso/SPARQL"@en ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

:referencesSection a schema1:CreativeWork ;
    schema1:hasPart :ref1,
        :ref2,
        :ref3,
        :ref4,
        :ref5,
        :ref6,
        :ref7 ;
    schema1:isPartOf :analysis ;
    schema1:name "References"@en .

:ontologyLayerRdfInstance a :OntologyLayer ;
    schema1:description "A named graph declaring owl:imports of all seven ontologies directly -- no re-ingestion as property-graph nodes is needed, since BRICK, RealEstateCore, FIBO, LKIF-Core, and P2P-O are already native OWL/RDF vocabularies."@en ;
    schema1:hasPart brick:Building,
        brick:HVAC_Equipment,
        brick:Heating_Coil,
        brick:Hot_Water_Pump,
        <https://w3id.org/rec#Architecture>,
        <https://w3id.org/rec#Building>,
        :sampleBuilding,
        :sampleHeatPump,
        :virtuosoHybridPrefilterQuery ;
    schema1:isPartOf :rdfNativeRealEstateKg ;
    schema1:name "OntologyLayer (RDF-native)"@en ;
    owl:imports <http://www.estrellaproject.org/lkif-core/lkif-core.owl>,
        brick:,
        <https://spec.edmcouncil.org/fibo/>,
        <https://w3id.org/rec#>,
        <https://www.dfki.uni-kl.de/~mschulze/p2p-o/#this>,
        :adamchicCustomOntology,
        <https://www.oasis-open.org/standard/akn-v1-0/#this> ;
    :implementedOn <http://dbpedia.org/resource/Virtuoso_Universal_Server> ;
    :implementsPillar :ontologyLayerPillar ;
    :layerFunction "A named graph declaring owl:imports of all seven ontologies directly -- no re-ingestion as property-graph nodes is needed, since BRICK, RealEstateCore, FIBO, LKIF-Core, and P2P-O are already native OWL/RDF vocabularies."@en .

:analysis a schema1:Article ;
    schema1:abstract "An architecture piece proposing a five-layer 'Fixed Entity Architecture' on a Linked Property Graph (Neo4j) for real-estate management, demonstrated via a proof of concept that consolidates seven RDF/OWL ontologies and uses GraphRAG vector pre-filtering for ontology-schema selection."@en ;
    schema1:author <https://de.linkedin.com/in/adamchic#this> ;
    schema1:citation :ref5 ;
    schema1:datePublished "2026-08-02"^^xsd:date ;
    schema1:hasPart :discussionSection,
        :faqSection,
        :frameworkSection,
        :glossarySection,
        :howtoSection,
        :pocSection,
        :rdfPocSection,
        :referencesSection ;
    schema1:headline "Power of Layered Knowledge Graphs Applied to Real Estate Management: GraphRAG Re-born"@en ;
    schema1:mentions <http://dbpedia.org/resource/Microsoft>,
        <http://dbpedia.org/resource/Neo4j>,
        <http://dbpedia.org/resource/Nvidia>,
        <http://www.wikidata.org/entity/Q116758847> ;
    schema1:url <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/> ;
    prov:wasGeneratedBy <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> .

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> a schema1:SoftwareApplication ;
    schema1:description "An AI-agent skill that generates standards-compliant RDF knowledge graphs from web and document sources."@en ;
    schema1:name "kg-generator skill"@en ;
    schema1:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator> .

: a owl:Ontology ;
    rdfs:label "Layered Real Estate KG Ontology"@en ;
    schema1:description "Lightweight ontology modeling the Fixed Entity Architecture five-layer framework proposed by Irina Adamchic, its Neo4j/LPG proof of concept, and an RDF-native (Virtuoso/SPARQL) counterpart proof of concept."@en ;
    schema1:identifier <https://www.linkedin.com/pulse/power-layered-knowledge-graphs-applied-real-estate-adamchic-phd-vv4df/> ;
    schema1:name "Layered Knowledge Graphs for Real Estate Management Ontology"@en .

:faqSection a schema1:FAQPage ;
    schema1:isPartOf :analysis ;
    schema1:mainEntity :q1,
        :q10,
        :q11,
        :q12,
        :q13,
        :q14,
        :q15,
        :q2,
        :q3,
        :q4,
        :q5,
        :q6,
        :q7,
        :q8,
        :q9 ;
    schema1:name "Frequently Asked Questions"@en .

:glossarySection a schema1:DefinedTermSet,
        skos:ConceptScheme ;
    schema1:hasDefinedTerm <http://www.estrellaproject.org/lkif-core/lkif-core.owl>,
        sh:,
        brick:,
        <https://spec.edmcouncil.org/fibo/>,
        <https://w3id.org/rec#>,
        <https://www.dfki.uni-kl.de/~mschulze/p2p-o/#this>,
        :termContractsLayerTerm,
        :termFixedEntityArchitecture,
        :termGraphRAG,
        :termInvoiceLayerTerm,
        :termKgHybridMode,
        :termLPG,
        :termLegalLayerTerm,
        :termNIM,
        :termOntologyLayerTerm,
        :termRulesLayerTerm,
        :termVectorIndex,
        <https://www.oasis-open.org/standard/akn-v1-0/#this> ;
    schema1:isPartOf :analysis ;
    schema1:name "Glossary"@en .

